<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on PatoJAD | Pasion por la Tecnologia</title><link>https://patojad.com.ar/posts/</link><description>Recent content in Blog on PatoJAD | Pasion por la Tecnologia</description><generator>Hugo -- gohugo.io</generator><language>es-AR</language><atom:link href="https://patojad.com.ar/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Por qué tu PC con Windows es lenta | Guía Linux para Desarrolladores</title><link>https://patojad.com.ar/post/2026/09/por-qu%C3%A9-tu-pc-con-windows-es-lenta-gu%C3%ADa-linux-para-desarrolladores/</link><pubDate>Mon, 28 Sep 2026 09:01:00 +0000</pubDate><guid>https://patojad.com.ar/post/2026/09/por-qu%C3%A9-tu-pc-con-windows-es-lenta-gu%C3%ADa-linux-para-desarrolladores/</guid><description>&lt;p&gt;Si estás dando tus primeros pasos en la programación, es muy probable que te haya pasado esto: abrís tu navegador con un par de pestañas, encendés tu editor de código (como VS Code), levantás un contenedor de Docker y, de repente, el ventilador de tu notebook empieza a sonar como un reactor de avión. La computadora se congela, el Administrador de Tareas marca el 100% de uso de disco y CPU, y pasás más tiempo esperando que las herramientas respondan que escribiendo código de verdad.&lt;/p&gt;
&lt;p&gt;No estás loco, y tu hardware tampoco es tan obsoleto como crees. En este artículo vamos a analizar sin fanatismos por qué las computadoras sufren tanto en sistemas operativos corporativos tradicionales y cómo dar el salto a un entorno GNU/Linux puede transformar por completo tu productividad y tu carrera técnica.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-diagnóstico-por-qué-se-arrastra-tu-entorno-de-desarrollo"&gt;
El diagnóstico: ¿Por qué se arrastra tu entorno de desarrollo?
&lt;a href="#el-diagn%c3%b3stico-por-qu%c3%a9-se-arrastra-tu-entorno-de-desarrollo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Cuando encendemos una PC con un sistema operativo tradicional, no estamos ejecutando únicamente nuestro código. Por debajo corre un ecosistema masivo de servicios de telemetría, indexación constante de archivos, actualizaciones automáticas en segundo plano y capas de software diseñadas para un usuario promedio que navega por internet o consume contenido multimedia.&lt;/p&gt;
&lt;p&gt;Para un desarrollador, esto se traduce en una pérdida crítica de recursos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Consumo excesivo de Memoria RAM:&lt;/strong&gt; Los servicios invisibles del sistema operativo le roban gigabytes valiosos a tus compiladores y bases de datos locales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Falta de control del hardware:&lt;/strong&gt; El sistema prioriza sus propias tareas corporativas por encima de tus procesos de compilación.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Del otro lado se encuentra la filosofía de Linux. En el núcleo de este sistema se encuentra el &lt;strong&gt;Kernel&lt;/strong&gt;, el director de orquesta que conecta el software con el hardware físico de forma directa y sin intermediarios innecesarios. En Linux, el sistema operativo no trabaja contra vos para mostrarte notificaciones o sugerencias comerciales: trabaja exclusivamente para optimizar los recursos en función de lo que vos decidís ejecutar.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-gran-mito-linux-es-solo-para-hackers-de-películas"&gt;
El gran mito: ¿Linux es solo para hackers de películas?
&lt;a href="#el-gran-mito-linux-es-solo-para-hackers-de-pel%c3%adculas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Uno de los mayores frenos para los desarrolladores junior es la idea preconcebida de que Linux es una interfaz oscura con comandos indescifrables reservada para expertos en ciberseguridad.&lt;/p&gt;
&lt;p&gt;Ese es un mito de la década pasada. Hoy en día, distribuciones modernas orientadas a escritorios limpios y estables —como &lt;strong&gt;Linux Mint, Pop!_OS o Ubuntu&lt;/strong&gt;— ofrecen entornos gráficos sumamente pulidos, amigables y ordenados. No necesitas tocar la terminal para configurar tu red Wi-Fi, conectar tus auriculares Bluetooth o navegar por la web.&lt;/p&gt;
&lt;p&gt;Sin embargo, el verdadero valor de Linux no radica únicamente en que consume menos recursos, sino en el salto mental que provoca en tu perfil profesional:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Entendimiento profundo:&lt;/strong&gt; Dejas de ser un &amp;ldquo;usuario de botones&amp;rdquo; para empezar a comprender las rutas de archivos, la gestión de permisos y el ciclo de vida de los procesos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alineación con la industria:&lt;/strong&gt; La gran mayoría de los servidores en la nube y entornos de producción donde correrá tu software el día de mañana funcionan sobre Linux. Aprender a moverte en este ecosistema te otorga una ventaja competitiva gigante frente a otros juniors.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-dar-el-salto-sin-romper-nada-3-opciones-reales"&gt;
Cómo dar el salto sin romper nada: 3 opciones reales
&lt;a href="#c%c3%b3mo-dar-el-salto-sin-romper-nada-3-opciones-reales" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si tenés miedo de perder los archivos de la facultad o del trabajo, no necesitas formatear tu computadora hoy mismo. Existen tres caminos seguros para probar el ecosistema:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;WSL2 (Windows Subsystem for Linux):&lt;/strong&gt; Ideal si estás aprendiendo desarrollo web frontend o Node.js y dependes de software privativo en Windows. Te permite correr un kernel de Linux nativo dentro de Windows de forma fluida y sin riesgos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Máquinas Virtuales (VirtualBox / Hyper-V):&lt;/strong&gt; Te permite instalar una distribución entera dentro de una ventana de tu sistema operativo actual. Si algo falla, simplemente cerrás la ventana y empezás de nuevo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instalación Nativa (Dual Boot o disco dedicado):&lt;/strong&gt; La experiencia definitiva si dispones de una notebook secundaria o un espacio libre en disco. Es donde realmente percibes el rendimiento absoluto de tu hardware.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Linux no va a escribir código por vos ni va a solucionar lógicas mal planteadas de la noche a la mañana. Lo que sí hará es retirar del medio todas las trabas invisibles, demoras y frustraciones técnicas que hoy ralentizan tu proceso de aprendizaje.&lt;/p&gt;
&lt;p&gt;¿Estás listo para optimizar tu flujo de trabajo? Explorá más recursos, guías y herramientas de arquitectura de software en PatoJAD.com.ar.&lt;/p&gt;</description></item><item><title>La distro de Linux de 18 millones de dólares: ¿Innovación en código abierto o fachada política?</title><link>https://patojad.com.ar/post/2026/09/la-distro-de-linux-de-18-millones-de-d%C3%B3lares-innovaci%C3%B3n-en-c%C3%B3digo-abierto-o-fachada-pol%C3%ADtica/</link><pubDate>Fri, 11 Sep 2026 09:31:00 +0000</pubDate><guid>https://patojad.com.ar/post/2026/09/la-distro-de-linux-de-18-millones-de-d%C3%B3lares-innovaci%C3%B3n-en-c%C3%B3digo-abierto-o-fachada-pol%C3%ADtica/</guid><description>&lt;p&gt;El ecosistema de código abierto (&lt;em&gt;Open Source&lt;/em&gt; y &lt;em&gt;FOSS&lt;/em&gt;) siempre ha sido un terreno fértil para debates filosóficos sobre la descentralización, la libertad y la colaboración. Sin embargo, en los últimos meses, una nueva iniciativa ha sacudido a la comunidad hasta los cimientos: &lt;strong&gt;Omarchy&lt;/strong&gt;, una distribución de Linux orientada a desarrolladores respaldada por una inyección masiva de capital corporativo.&lt;/p&gt;
&lt;p&gt;Lejos de ser un simple lanzamiento técnico, el proyecto se ha convertido en el epicentro de una guerra cultural impulsada por el activismo digital y las posturas políticas de sus creadores.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-omarchy-y-de-dónde-sale-el-dinero"&gt;
¿Qué es Omarchy y de dónde sale el dinero?
&lt;a href="#qu%c3%a9-es-omarchy-y-de-d%c3%b3nde-sale-el-dinero" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Omarchy es una distribución de Linux basada en Arch Linux, caracterizada por un diseño altamente estilizado, el uso del gestor de ventanas &lt;em&gt;Hyprland&lt;/em&gt; y la integración nativa de agentes de inteligencia artificial para programadores. Fue concebida por &lt;strong&gt;David Heinemeier Hansson (DHH)&lt;/strong&gt;, creador de &lt;em&gt;Ruby on Rails&lt;/em&gt; y CTO de &lt;em&gt;37signals&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;El verdadero revuelo comenzó con la creación de la &lt;strong&gt;Omacom Foundation&lt;/strong&gt;, la entidad sin fines de lucro destinada a financiar el ecosistema del proyecto, la cual ha logrado acumular más de &lt;strong&gt;18 millones de dólares&lt;/strong&gt; en promesas de financiación y patrocinios. Entre los patrocinadores figuran altos ejecutivos y corporaciones de peso pesado en la industria tecnológica, como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tobi Lütke (Shopify)&lt;/li&gt;
&lt;li&gt;Patrick Collison (Stripe)&lt;/li&gt;
&lt;li&gt;Michael Dell (Dell Technologies)&lt;/li&gt;
&lt;li&gt;Matthew Prince (Cloudflare)&lt;/li&gt;
&lt;li&gt;Gigantes como DigitalOcean y Anthropic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-controversia-el-sitio-stop-omarchy-y-las-acusaciones"&gt;
La controversia: El sitio &amp;ldquo;Stop Omarchy&amp;rdquo; y las acusaciones
&lt;a href="#la-controversia-el-sitio-stop-omarchy-y-las-acusaciones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El crecimiento acelerado de la plataforma no pasó desapercibido para los sectores más críticos de la comunidad tecnológica. Recientemente, el portal activista &lt;strong&gt;Stop Omarchy&lt;/strong&gt; lanzó una ofensiva pública acusando al proyecto de ser un movimiento político de ultraderecha disfrazado de distro de Linux.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="los-puntos-centrales-de-la-crítica"&gt;
Los puntos centrales de la crítica:
&lt;a href="#los-puntos-centrales-de-la-cr%c3%adtica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Las declaraciones públicas de DHH:&lt;/strong&gt; Los detractores señalan un historial de ensayos y publicaciones en redes sociales por parte de DHH que abordan temas migratorios en Europa y critican las políticas de diversidad, las cuales sus críticos tildan de nacionalistas o xenófobas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Financiamiento de la &amp;ldquo;reputación-washing&amp;rdquo;:&lt;/strong&gt; El sitio web argumenta que el capital aportado por las élites tecnológicas busca normalizar posturas ideológicas extremas y centralizar el control dentro de herramientas FOSS que históricamente han sido independientes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El impacto en otros proyectos:&lt;/strong&gt; La fundación de DHH canaliza recursos hacia proyectos upstream (como Hyprland), generando divisiones profundas en comunidades de desarrolladores que rechazan la vinculación con figuras de la derecha tecnolibertaria.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="hechos-vs-interpretaciones-qué-hay-de-cierto"&gt;
Hechos vs. Interpretaciones: ¿Qué hay de cierto?
&lt;a href="#hechos-vs-interpretaciones-qu%c3%a9-hay-de-cierto" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Es fundamental separar los datos comprobables de las lecturas políticas subjetivas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lo que es verdad:&lt;/strong&gt; El músculo financiero de la Omacom Foundation y los millones invertidos por los CEOs de Silicon Valley son totalmente reales. Asimismo, DHH mantiene un perfil público sumamente confrontativo en temas sociopolíticos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La exageración activista:&lt;/strong&gt; Catalogar al sistema operativo en sí mismo como un &amp;ldquo;movimiento fascista&amp;rdquo; (como sugieren algunos ensayos críticos utilizando marcos teóricos sociológicos) es una interpretación ideológica. Para el programador de a pie, Omarchy sigue compitiendo en el terreno de la usabilidad, la velocidad y la eficiencia técnica.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No obstante, el dilema ético es innegable: ¿Hasta qué punto la comunidad de software libre debe aceptar fondos de capitales corporativos con agendas políticas polarizantes sin comprometer su independencia?&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El fenómeno de Omarchy pone sobre la mesa una incómoda realidad: la era del código abierto puramente altruista e idealista choca de frente con la cruda geopolítica y la polarización ideológica del Silicon Valley actual. La decisión final recae en los desarrolladores y usuarios, quienes deberán sopesar las bondades técnicas de una herramienta frente a la ideología de quienes la financian.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="enlaces-y-referencias-de-interés"&gt;
Enlaces y Referencias de Interés:
&lt;a href="#enlaces-y-referencias-de-inter%c3%a9s" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stopomarchy.neocities.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Sitio de crítica: Stop Omarchy
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://web.archive.org/web/20260911142433/https://omarchy.org/doctrine/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Manifiesto oficial: The Omarchy Doctrine (Archivo)
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://omarchy.org/patrons/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Directorio de Patrocinadores de Omarchy
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Cómo integrar Linux y Android al máximo con Scrcpy</title><link>https://patojad.com.ar/post/2026/09/c%C3%B3mo-integrar-linux-y-android-al-m%C3%A1ximo-con-scrcpy/</link><pubDate>Tue, 01 Sep 2026 09:51:00 +0000</pubDate><guid>https://patojad.com.ar/post/2026/09/c%C3%B3mo-integrar-linux-y-android-al-m%C3%A1ximo-con-scrcpy/</guid><description>&lt;p&gt;Si eres usuario de Linux y buscas una forma fluida, rápida y sin anuncios de interactuar con tu teléfono Android directamente desde tu computadora, Scrcpy es la herramienta definitiva. No requiere root, es totalmente de código abierto y funciona con una baja latencia impresionante.&lt;/p&gt;
&lt;p&gt;En este artículo veremos el proceso de instalación y los comandos esenciales para ir desde la replicación básica de pantalla hasta la ejecución de aplicaciones de forma independiente en tu escritorio Linux.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="requisitos-previos"&gt;
Requisitos previos
&lt;a href="#requisitos-previos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Antes de comenzar, asegúrate de cumplir con lo siguiente en tu teléfono Android:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ir a Ajustes &amp;gt; Acerca del teléfono y presionar varias veces sobre Número de compilación hasta desbloquear las Opciones de desarrollador.&lt;/li&gt;
&lt;li&gt;Entrar en las Opciones de desarrollador y activar la Depuración por USB.&lt;/li&gt;
&lt;li&gt;Conectar el teléfono a tu PC mediante un cable USB y aceptar el aviso de confianza de depuración en la pantalla del móvil.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación-de-scrcpy-en-linux"&gt;
Instalación de Scrcpy en Linux
&lt;a href="#instalaci%c3%b3n-de-scrcpy-en-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La instalación es sumamente sencilla ya que se encuentra en los repositorios oficiales de la gran mayoría de las distribuciones:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ubuntu--debian-y-derivadas"&gt;
Ubuntu / Debian y derivadas:
&lt;a href="#ubuntu--debian-y-derivadas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install scrcpy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arch-linux-y-derivadas"&gt;
Arch Linux y derivadas:
&lt;a href="#arch-linux-y-derivadas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S scrcpy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="fedora--rhel-y-derivadas"&gt;
Fedora / RHEL y derivadas:
&lt;a href="#fedora--rhel-y-derivadas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install scrcpy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comandos-esenciales-para-dominar-scrcpy"&gt;
Comandos esenciales para dominar Scrcpy
&lt;a href="#comandos-esenciales-para-dominar-scrcpy" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez instalado, abre tu terminal y prueba los siguientes comandos para exprimir al máximo la integración entre ambos sistemas:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="replicación-básica-de-pantalla-screen-mirroring"&gt;
Replicación básica de pantalla (Screen Mirroring)
&lt;a href="#replicaci%c3%b3n-b%c3%a1sica-de-pantalla-screen-mirroring" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scrcpy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Qué hace: Es el comando principal. Abre una ventana en tu escritorio de Linux que clava la pantalla de tu celular en tiempo real. Te permite controlar todo el dispositivo usando el mouse y el teclado de tu computadora de forma totalmente fluida y sin instalar aplicaciones adicionales en el teléfono.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="listar-las-aplicaciones-instaladas"&gt;
Listar las aplicaciones instaladas
&lt;a href="#listar-las-aplicaciones-instaladas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scrcpy --list-apps&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Qué hace: Si tu objetivo es interactuar con una app en específico sin duplicar todo el sistema, primero necesitas conocer su nombre de paquete técnico (por ejemplo, com.instagram.android). Este comando imprime en la terminal el listado completo de todas las aplicaciones instaladas junto con sus respectivos identificadores para que puedas copiarlos fácilmente.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="abrir-una-aplicación-de-forma-independiente"&gt;
Abrir una aplicación de forma independiente
&lt;a href="#abrir-una-aplicaci%c3%b3n-de-forma-independiente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scrcpy --start-app&lt;span class="o"&gt;=&lt;/span&gt;com.nombre.paquete&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Qué hace: Salta el espejo general de la pantalla y lanza una aplicación directamente en su propia ventana de manera aislada.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tip extra: Puedes añadir un signo + antes del nombre del paquete (ej: &amp;ndash;start-app=+com.app.name) para forzar el cierre de la app si ya se encontraba ejecutándose en segundo plano en el dispositivo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="lanzar-apps-en-una-pantalla-virtual-separada"&gt;
Lanzar apps en una pantalla virtual separada
&lt;a href="#lanzar-apps-en-una-pantalla-virtual-separada" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scrcpy --new-display&lt;span class="o"&gt;=&lt;/span&gt;1920x1080 --start-app&lt;span class="o"&gt;=&lt;/span&gt;com.nombre.paquete&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Qué hace: Es una de las funciones más potentes de las versiones recientes. En lugar de superponerse o duplicar la interfaz principal, le ordena a Android que cree una pantalla virtual dedicada (en este caso con resolución 1920x1080) donde correrá exclusivamente la aplicación elegida. Esto te permite tener la app abierta en tu escritorio de Linux funcionando como si fuera una ventana nativa más, ideal para potenciar la multitarea.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Combinar Linux y Android mediante Scrcpy transforma por completo tu flujo de trabajo diario, permitiéndote gestionar notificaciones, redactar mensajes o probar aplicaciones directamente desde el teclado y mouse de tu PC sin distracciones. ¡Pruébalo y lleva tu productividad al siguiente nivel!&lt;/p&gt;</description></item><item><title>¿Qué es un Respin de Linux? Diferencias con Distribuciones y Derivadas</title><link>https://patojad.com.ar/post/2026/05/qu%C3%A9-es-un-respin-de-linux-diferencias-con-distribuciones-y-derivadas/</link><pubDate>Thu, 21 May 2026 09:24:00 +0000</pubDate><guid>https://patojad.com.ar/post/2026/05/qu%C3%A9-es-un-respin-de-linux-diferencias-con-distribuciones-y-derivadas/</guid><description>&lt;p&gt;Si alguna vez te paseaste por sitios como &lt;a href="https://distrowatch.com/?language=ES" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
DistroWatch
&lt;/a&gt;, seguramente te sentiste abrumado. Hay cientos, si no miles, de versiones de &lt;strong&gt;Linux&lt;/strong&gt;. Y en medio de esa marea, a veces te topas con términos que suenan a &amp;ldquo;distribución&amp;rdquo; pero tienen un aire distinto. Hablamos de los Respins.&lt;/p&gt;
&lt;p&gt;¿Qué estamos instalando realmente? ¿Es lo mismo? Vamos a charlar sobre esto, porque entender qué corre bajo tu capó es el primer paso para dominar tu sistema.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="distro-o-respin-la-gran-diferencia"&gt;
¿Distro o Respin? La gran diferencia
&lt;a href="#distro-o-respin-la-gran-diferencia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para entenderlo fácil: una distribución (o distro) es el producto terminado de una &lt;em&gt;&amp;ldquo;organización&amp;rdquo;&lt;/em&gt;. Piensa en Debian, Fedora o Arch. Ellos tienen sus servidores, sus equipos de seguridad y un ecosistema que los respalda.&lt;/p&gt;
&lt;p&gt;Un Respin, en cambio, es como una &amp;ldquo;foto&amp;rdquo; personalizada de una instalación ya hecha. Imagina que tomas Ubuntu, le instalas tu editor de video favorito, cambias el tema, quitas lo que no te gusta y luego creas un instalador de eso. ¡Eso es un respin! Es una versión &amp;ldquo;remasterizada&amp;rdquo; de una base existente.&lt;/p&gt;
&lt;p&gt;En el video te cuento en detalle por qué esto importa, sobre todo cuando hablamos de mantenimiento a largo plazo. Pero, en resumen: la distro es la fábrica, el respin es la customización.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ventajas-y-desventajas-vale-la-pena"&gt;
Ventajas y Desventajas: ¿Vale la pena?
&lt;a href="#ventajas-y-desventajas-vale-la-pena" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lo bueno:&lt;/strong&gt; Los respins son geniales para el &amp;ldquo;instalar y listo&amp;rdquo;. Si alguien ya se tomó el trabajo de configurar todo para diseño, gaming o hardware específico, te ahorras horas de pelea con la terminal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El riesgo:&lt;/strong&gt; Aquí es donde el café se pone un poco amargo. La seguridad y el soporte. Si el creador del respin desaparece, ¿quién corrige un agujero de seguridad? Además, a veces vienen cargados de software que no necesitas (lo que llamamos bloatware).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-bonus-track-qué-pasa-con-las-distribuciones-derivadas"&gt;
💡 Bonus Track: ¿Qué pasa con las distribuciones derivadas?
&lt;a href="#-bonus-track-qu%c3%a9-pasa-con-las-distribuciones-derivadas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Seguro te estarás preguntando: &amp;ldquo;Entonces, ¿&lt;a href="https://linuxmint.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Linux Mint
&lt;/a&gt; es un respin? y&amp;hellip; ¿&lt;a href="https://goldendoglinux.org/es/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Goldendog
&lt;/a&gt;? Puede alguien pensar en GoldenDog&amp;rdquo;. La respuesta es no. Y aquí entra el concepto de distribución derivada.&lt;/p&gt;
&lt;p&gt;Una derivada no es solo una &amp;ldquo;personalización&amp;rdquo; estética. Es un proyecto que, si bien hereda la base y los repositorios de su &amp;ldquo;distro madre&amp;rdquo; (por ejemplo, Mint depende de &lt;a href="https://ubuntu.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Ubuntu
&lt;/a&gt;/&lt;a href="https://www.debian.org/index.es.html" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Debian
&lt;/a&gt;), tiene un equipo de desarrollo dedicado, una hoja de ruta propia y, a menudo, sus propios repositorios de software adicionales para dar una experiencia única.&lt;/p&gt;
&lt;p&gt;Mientras que un respin es una captura de un estado, una derivada es una evolución de la base. Se toman el trabajo de mantener el sistema actualizado, parchear errores y ofrecer un soporte que un simple respin rara vez puede garantizar.&lt;/p&gt;
&lt;p&gt;Y tú, ¿qué estás usando ahora mismo? ¿Prefieres la pureza de una distro base o te gustan las comodidades de una buena derivada? ¡Te leo en los comentarios!&lt;/p&gt;</description></item><item><title>Comunidad vs Empresa en Linux: Tensiones Reales y Por Qué Ambos Son Necesarios (2026)</title><link>https://patojad.com.ar/post/2026/04/comunidad-vs-empresa-en-linux-tensiones-reales-y-por-qu%C3%A9-ambos-son-necesarios-2026/</link><pubDate>Tue, 07 Apr 2026 17:31:00 +0000</pubDate><guid>https://patojad.com.ar/post/2026/04/comunidad-vs-empresa-en-linux-tensiones-reales-y-por-qu%C3%A9-ambos-son-necesarios-2026/</guid><description>&lt;p&gt;En el mundo Linux siempre existió una tensión entre la comunidad (pasión, libertad, caos creativo) y las empresas (dinero, estabilidad, regulaciones). Hoy analizamos casos concretos de 2026.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="1-systemd-y-la-verificación-de-edad-pr-40954"&gt;
1. Systemd y la verificación de edad (PR #40954)
&lt;a href="#1-systemd-y-la-verificaci%c3%b3n-de-edad-pr-40954" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En marzo 2026 se fusionó el Pull Request &lt;strong&gt;#40954&lt;/strong&gt; que agrega un campo opcional &lt;code&gt;birthDate&lt;/code&gt; (YYYY-MM-DD) en los registros JSON de &lt;code&gt;systemd-userdb&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;URL del PR&lt;/strong&gt;: &lt;a href="https://github.com/systemd/systemd/pull/40954" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
https://github.com/systemd/systemd/pull/40954
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Solo root puede escribirlo. No es un sistema de bloqueo automático, sino metadata estandarizada para cumplir leyes de protección a menores (California, Colorado, Brasil, etc.). Sirve para herramientas como Flatpak parental controls.&lt;/p&gt;
&lt;p&gt;La comunidad reaccionó fuerte: acusaciones de “nanny state”, forks y mucho debate. Es el primer paso real de verificación de edad a nivel de init system.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="2-manjaro-la-separación-comunidad-empresa"&gt;
2. Manjaro: La separación comunidad-empresa
&lt;a href="#2-manjaro-la-separaci%c3%b3n-comunidad-empresa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En marzo 2026, 19 miembros del equipo firmaron el &lt;strong&gt;Manjaro 2.0 Manifesto&lt;/strong&gt; exigiendo separar el proyecto de la empresa Manjaro GmbH y crear una fundación sin fines de lucro (e.V.).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Estado actual: El equipo está en huelga. Amenazan con fork si no hay acuerdo. El conflicto gira en torno a liderazgo centralizado, transparencia y monetización fallida.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="3-el-aporte-de-las-empresas"&gt;
3. El aporte de las empresas
&lt;a href="#3-el-aporte-de-las-empresas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Red Hat&lt;/strong&gt;: Financia desarrollo del kernel, systemd, GNOME y más.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microsoft&lt;/strong&gt;: Contribuciones a Hyper-V, WSL2 y Linux en Azure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manjaro&lt;/strong&gt;: Hace Arch accesible y prueba paquetes a gran escala.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sin empresas, Linux avanzaría mucho más lento y tendría menos adopción empresarial.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="4-los-dolores-de-apoyar-linux-desde-una-empresa"&gt;
4. Los dolores de apoyar Linux desde una empresa
&lt;a href="#4-los-dolores-de-apoyar-linux-desde-una-empresa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Fragmentación, licencias GPL, costos de soporte, backlash comunitario y cumplimiento de regulaciones externas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusión&lt;/strong&gt;&lt;br&gt;
La comunidad da alma, las empresas dan escala. El equilibrio es difícil, pero necesario. ¿Qué opinás vos?&lt;/p&gt;</description></item><item><title>Arquitectura Orientada a Eventos (EDA) en 2026: Ventajas, Desventajas y Cuándo Usarla de Verdad</title><link>https://patojad.com.ar/post/2026/03/arquitectura-orientada-a-eventos-eda-en-2026-ventajas-desventajas-y-cu%C3%A1ndo-usarla-de-verdad/</link><pubDate>Mon, 30 Mar 2026 14:31:00 +0000</pubDate><guid>https://patojad.com.ar/post/2026/03/arquitectura-orientada-a-eventos-eda-en-2026-ventajas-desventajas-y-cu%C3%A1ndo-usarla-de-verdad/</guid><description>&lt;p&gt;Como arquitecto de soluciones, una de las preguntas que más me hacen es: “¿cuándo paso de microservicios a EDA?”. Hoy te respondo de forma clara y sin hype.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-realmente-la-arquitectura-orientada-a-eventos"&gt;
¿Qué es realmente la Arquitectura Orientada a Eventos?
&lt;a href="#qu%c3%a9-es-realmente-la-arquitectura-orientada-a-eventos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En EDA los servicios no se llaman directamente. En su lugar, &lt;strong&gt;publican eventos&lt;/strong&gt; (“esto pasó”) y otros servicios los consumen si les interesa. Todo fluye a través de un &lt;strong&gt;event bus&lt;/strong&gt; o broker.&lt;/p&gt;
&lt;p&gt;Es como un tablero de anuncios: alguien pega un cartel y los interesados lo leen. Nadie llama por teléfono al que pegó el cartel.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ventajas-por-qué-me-enamoré"&gt;
Ventajas (por qué me enamoré)
&lt;a href="#ventajas-por-qu%c3%a9-me-enamor%c3%a9" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Escalabilidad independiente&lt;/li&gt;
&lt;li&gt;Resiliencia ante fallos&lt;/li&gt;
&lt;li&gt;Desacoplamiento extremo&lt;/li&gt;
&lt;li&gt;Facilidad para agregar nuevas funcionalidades&lt;/li&gt;
&lt;li&gt;Asincronismo nativo&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="desventajas-la-realidad-que-nadie-te-cuenta-en-las-charlas"&gt;
Desventajas (la realidad que nadie te cuenta en las charlas)
&lt;a href="#desventajas-la-realidad-que-nadie-te-cuenta-en-las-charlas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Mayor complejidad operativa&lt;/li&gt;
&lt;li&gt;Debugging más difícil&lt;/li&gt;
&lt;li&gt;Consistencia eventual (no inmediata)&lt;/li&gt;
&lt;li&gt;Costo de infraestructura&lt;/li&gt;
&lt;li&gt;Riesgo de sobreingeniería&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cuándo-sí-aplicarla"&gt;
¿Cuándo SÍ aplicarla?
&lt;a href="#cu%c3%a1ndo-s%c3%ad-aplicarla" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Úsala cuando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los procesos son naturalmente asíncronos&lt;/li&gt;
&lt;li&gt;Necesitás escalar partes del sistema por separado&lt;/li&gt;
&lt;li&gt;Los servicios deben evolucionar sin romperse mutuamente&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cuándo-no-aplicarla-regla-de-oro"&gt;
¿Cuándo NO aplicarla? (regla de oro)
&lt;a href="#cu%c3%a1ndo-no-aplicarla-regla-de-oro" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;No la uses si:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tu sistema es pequeño y simple&lt;/li&gt;
&lt;li&gt;Necesitás respuestas inmediatas y consistencia fuerte&lt;/li&gt;
&lt;li&gt;El equipo todavía no domina sistemas distribuidos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Comparación rápida con microservicios&lt;/strong&gt; &lt;a href="https://patojad.com.ar/post/2026/02/arquitectura-de-microservicios-2026-qu%c3%a9-es-ventajas-desventajas-y-casos-reales/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
(ver el articulo anterior)
&lt;/a&gt;:&lt;br&gt;
En microservicios los servicios se llaman entre sí. En EDA gritan al vacío y los demás escuchan. Ambas arquitecturas pueden convivir perfectamente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="dos-casos-reales-donde-la-apliqué"&gt;
Dos casos reales donde la apliqué
&lt;a href="#dos-casos-reales-donde-la-apliqu%c3%a9" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="pickit"&gt;
PickIt
&lt;a href="#pickit" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Teníamos escalabilidad rota y servicios tan acoplados que nadie entendía quién producía cada mensaje. Reorganicé todo creando conexiones únicas entre publishers y readers. El cambio fue brutal: escalamos sin drama.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="banco-del-sol"&gt;
Banco del Sol
&lt;a href="#banco-del-sol" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Las transacciones se caían por timeout aunque el pago ya se había procesado. La gente pagaba dos veces. Implementamos asincronismo completo. El frontend solo hacía polling para conocer el estado real. Problema resuelto.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La Arquitectura Orientada a Eventos no es mejor ni peor que otras. Es una herramienta más en tu caja. Usala con criterio y te va a salvar proyectos. Abusala y te va a complicar la vida.&lt;/p&gt;
&lt;p&gt;¿En qué proyecto tuyo creés que EDA resolvería dolores de cabeza? Dejame tu caso en los comentarios.&lt;/p&gt;
&lt;p&gt;¡Nos leemos en el próximo artículo!&lt;/p&gt;</description></item><item><title>Diferencias entre Distros Rolling Release y Stable en Linux 2026: ¿Cuál Elegir?</title><link>https://patojad.com.ar/post/2026/03/diferencias-entre-distros-rolling-release-y-stable-en-linux-2026-cu%C3%A1l-elegir/</link><pubDate>Wed, 25 Mar 2026 09:31:00 +0000</pubDate><guid>https://patojad.com.ar/post/2026/03/diferencias-entre-distros-rolling-release-y-stable-en-linux-2026-cu%C3%A1l-elegir/</guid><description>&lt;p&gt;¿Cansado de actualizar y que todo se rompa… o de tener software del año 2023? En 2026 la batalla &lt;strong&gt;Rolling Release vs Stable&lt;/strong&gt; sigue más viva que nunca. Te explico todo con ejemplos reales, tabla comparativa y consejo según tu uso (hogar o empresa).&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-rolling-release"&gt;
¿Qué es Rolling Release?
&lt;a href="#qu%c3%a9-es-rolling-release" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El sistema se actualiza &lt;strong&gt;paquete por paquete&lt;/strong&gt; sin esperar versiones grandes. &lt;strong&gt;Ejemplos 2026&lt;/strong&gt;: Arch Linux (puro rolling), openSUSE Tumbleweed, Manjaro.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-stable-point-release"&gt;
¿Qué es Stable (Point Release)?
&lt;a href="#qu%c3%a9-es-stable-point-release" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Versión fija cada 6 meses o 2 años. Todo se prueba exhaustivamente.&lt;br&gt;
&lt;strong&gt;Ejemplos 2026&lt;/strong&gt;: Ubuntu 24.04 LTS, Debian 13, Fedora (cada 6 meses).&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ventajas-y-desventajas"&gt;
Ventajas y Desventajas
&lt;a href="#ventajas-y-desventajas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Aspecto&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Rolling Release&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Stable Release&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Software&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Siempre el más nuevo&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Más antiguo pero ultra testeado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Estabilidad&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Buena (si lees noticias)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Excelente (casi nunca rompe)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Mantenimiento&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Alto (actualizas casi diario)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Bajo (actualizas cada 6 meses)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Ideal para&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Escritorio, gaming, desarrollo&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Servidores, empresas, usuarios casuales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Riesgo de rotura&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Medio&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Muy bajo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Actualizaciones de seguridad&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Inmediatas&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Programadas pero seguras&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cuál-elegir-en-2026"&gt;
¿Cuál elegir en 2026?
&lt;a href="#cu%c3%a1l-elegir-en-2026" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hogar / escritorio&lt;/strong&gt;: Rolling (Arch Linux 2026). Tenés lo último en kernels, Mesa, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Empresa / servidores&lt;/strong&gt;: Stable (Ubuntu LTS o Debian). Menos dolores de cabeza y soporte largo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duda?&lt;/strong&gt; Probá Fedora 41 (semi-rolling) como puente perfecto.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;¿Te convenció el rolling o seguís fiel al stable? Contame abajo. ¡La próxima semana live instalando ambas en tiempo real!&lt;/p&gt;</description></item><item><title>Arquitectura de Microservicios 2026: Qué es, Ventajas, Desventajas y Casos Reales</title><link>https://patojad.com.ar/post/2026/02/arquitectura-de-microservicios-2026-qu%C3%A9-es-ventajas-desventajas-y-casos-reales/</link><pubDate>Mon, 16 Feb 2026 08:31:00 +0000</pubDate><guid>https://patojad.com.ar/post/2026/02/arquitectura-de-microservicios-2026-qu%C3%A9-es-ventajas-desventajas-y-casos-reales/</guid><description>&lt;p&gt;¿Monolito o microservicios? Esa es la pregunta que todo Solution Architect se hace cuando el sistema empieza a pesar. En este artículo te explico todo de forma clara, con ejemplos reales de mi paso por &lt;strong&gt;Accenture&lt;/strong&gt; y &lt;strong&gt;Coderhouse&lt;/strong&gt;, y con enfoque 100% práctico para quienes trabajamos con &lt;strong&gt;TypeScript, NestJS y Bun&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-realmente-la-arquitectura-de-microservicios"&gt;
¿Qué es realmente la Arquitectura de Microservicios?
&lt;a href="#qu%c3%a9-es-realmente-la-arquitectura-de-microservicios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Es un estilo arquitectónico donde una aplicación se compone de &lt;strong&gt;pequeños servicios independientes&lt;/strong&gt; que se comunican entre sí. Cada servicio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiene su propio código, base de datos y pipeline de CI/CD.&lt;/li&gt;
&lt;li&gt;Resuelve &lt;strong&gt;una sola responsabilidad&lt;/strong&gt; (bounded context).&lt;/li&gt;
&lt;li&gt;Se despliega, escala y versiona por separado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Analogía 2026&lt;/strong&gt;: pensá en un delivery de comida. En vez de un solo delivery que hace todo, tenés riders especializados (uno solo pizzas, otro solo sushi). Cada uno es autónomo pero todos entregan a la misma app.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ventajas-las-que-sí-se-sienten-en-producción"&gt;
Ventajas (las que sí se sienten en producción)
&lt;a href="#ventajas-las-que-s%c3%ad-se-sienten-en-producci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Escalabilidad quirúrgica&lt;/strong&gt;: solo escalás el servicio que está en llamas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Despliegues independientes&lt;/strong&gt;: liberás 10 veces por día sin miedo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Equipos full-stack autónomos&lt;/strong&gt;: cada squad es dueño de su servicio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tecnología poliglota&lt;/strong&gt;: NestJS + Bun en un servicio, Python en otro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resiliencia&lt;/strong&gt;: si un servicio cae, el resto sigue vivo (pattern Circuit Breaker).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="desventajas-la-parte-que-duele-y-nadie-filma-en-youtube"&gt;
Desventajas (la parte que duele y nadie filma en YouTube)
&lt;a href="#desventajas-la-parte-que-duele-y-nadie-filma-en-youtube" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Debugging distribuido (logs en 15 servicios distintos).&lt;/li&gt;
&lt;li&gt;Latencia adicional por cada llamada HTTP/gRPC.&lt;/li&gt;
&lt;li&gt;Consistencia eventual (adiós transacciones ACID fáciles).&lt;/li&gt;
&lt;li&gt;Overhead operativo (Kubernetes, tracing, service mesh, monitoring).&lt;/li&gt;
&lt;li&gt;Costo inicial alto: en Coderhouse tardamos 4 meses solo en configurar observabilidad.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="casos-reales-2026"&gt;
Casos Reales 2026
&lt;a href="#casos-reales-2026" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Netflix&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;+1000 microservicios. Zero downtime desde hace más de 10 años. Escalan recomendaciones solo los domingos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Amazon&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cada página del sitio es un microservicio. Esto les permitió crecer a escala planetaria.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cuándo-migrar-checklist-rápido"&gt;
¿Cuándo migrar? Checklist rápido
&lt;a href="#cu%c3%a1ndo-migrar-checklist-r%c3%a1pido" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;¿Tu monolito ya tiene +10 devs tocando los mismos archivos?&lt;/li&gt;
&lt;li&gt;¿Tenés al menos 2 dominios claramente separados?&lt;/li&gt;
&lt;li&gt;¿Estás dispuesto a invertir en observabilidad?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si respondiste “sí” a las 3… es momento.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;¿Listo para empezar?&lt;/strong&gt;
Descargá el &lt;a href="https://www.mediafire.com/file/3juqc1c9y7tq1dl/%25E2%259C%2585_Checklist_Microservicios_2026.pdf/file" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
&lt;strong&gt;Checklist Microservicios 2026&lt;/strong&gt; (PDF gratis)
&lt;/a&gt; y el código de ejemplo NestJS en el repositorio del canal. ¿Monolito o microservicios en 2026? Dejame tu respuesta en los comentarios del video.&lt;/p&gt;</description></item><item><title>Terminal Pro 2026: Deja de usar comandos de los años 70</title><link>https://patojad.com.ar/post/2026/02/terminal-pro-2026-deja-de-usar-comandos-de-los-a%C3%B1os-70/</link><pubDate>Tue, 03 Feb 2026 08:31:00 +0000</pubDate><guid>https://patojad.com.ar/post/2026/02/terminal-pro-2026-deja-de-usar-comandos-de-los-a%C3%B1os-70/</guid><description>&lt;p&gt;Linux es famoso por su estabilidad, pero eso no significa que debas seguir usando las mismas herramientas que se inventaron cuando no existía internet. En 2026, hay una nueva generación de herramientas escritas en Rust y Go que son más rápidas, tienen mejores colores y, sobre todo, te hacen más productivo.&lt;/p&gt;
&lt;p&gt;Aquí tienes los reemplazos directos que todo dev debería instalar hoy mismo:&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="1-eza-el-reemplazo-de-ls"&gt;
1. &lt;code&gt;eza&lt;/code&gt; (El reemplazo de &lt;code&gt;ls&lt;/code&gt;)
&lt;a href="#1-eza-el-reemplazo-de-ls" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;¿Sigues usando &lt;code&gt;ls -la&lt;/code&gt;? &lt;code&gt;eza&lt;/code&gt; (el sucesor de &lt;code&gt;exa&lt;/code&gt;) te da colores por tipo de archivo, iconos, integración con Git y una vista de árbol integrada.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;eza --long --header --git --icons&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="2-bat-el-reemplazo-de-cat"&gt;
2. &lt;code&gt;bat&lt;/code&gt; (El reemplazo de &lt;code&gt;cat&lt;/code&gt;)
&lt;a href="#2-bat-el-reemplazo-de-cat" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cat&lt;/code&gt; es genial para ver un archivo rápido, pero no tiene resaltado de sintaxis. &lt;code&gt;bat&lt;/code&gt; es un clon de &lt;code&gt;cat&lt;/code&gt; con esteroides: añade numeración de líneas, integración con Git (muestra qué líneas cambiaste) y syntax highlighting para casi cualquier lenguaje de programación.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bat archivo.ts&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="3-fd-el-reemplazo-de-find"&gt;
3. &lt;code&gt;fd&lt;/code&gt; (El reemplazo de &lt;code&gt;find&lt;/code&gt;)
&lt;a href="#3-fd-el-reemplazo-de-find" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;find&lt;/code&gt; tiene una sintaxis horrible que nadie recuerda. &lt;code&gt;fd&lt;/code&gt; es 10 veces más rápido y su sintaxis es intuitiva. Además, ignora por defecto las carpetas .git y node_modules. ¡Oro puro!&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fd &lt;span class="s2"&gt;&amp;#34;patron_de_busqueda&amp;#34;&lt;/span&gt; ./ruta/de/busqueda&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="4-fzf-el-buscador-borroso"&gt;
4. &lt;code&gt;fzf&lt;/code&gt; (El buscador borroso)
&lt;a href="#4-fzf-el-buscador-borroso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si no usas &lt;code&gt;fzf&lt;/code&gt;, estás perdiendo el tiempo. Te permite buscar entre tus archivos o tu historial de comandos de forma interactiva mientras escribes. Es, probablemente, la herramienta que más te va a cambiar la vida en la terminal.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;history&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; fzf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="4-btop-el-reemplazo-de-top"&gt;
4. &lt;code&gt;btop&lt;/code&gt; (El reemplazo de &lt;code&gt;top&lt;/code&gt;)
&lt;a href="#4-btop-el-reemplazo-de-top" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;top&lt;/code&gt; es funcional, pero feo y difícil de usar. &lt;code&gt;btop&lt;/code&gt; tiene una interfaz mucho más amigable, con colores, barras de uso de CPU/RAM y la capacidad de matar procesos con solo presionar una tecla.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;btop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Patrones de Diseño en Node.js: Arquitectura Profesional con Bun y TypeScript</title><link>https://patojad.com.ar/post/2026/01/patrones-de-dise%C3%B1o-en-node.js-arquitectura-profesional-con-bun-y-typescript/</link><pubDate>Tue, 27 Jan 2026 09:31:00 +0000</pubDate><guid>https://patojad.com.ar/post/2026/01/patrones-de-dise%C3%B1o-en-node.js-arquitectura-profesional-con-bun-y-typescript/</guid><description>&lt;p&gt;En el desarrollo de software, los patrones de diseño no son reglas rígidas, sino soluciones probadas a problemas comunes. En 2026, con entornos de alta velocidad como Bun, el cuello de botella ya no es el runtime, sino la deuda técnica.&lt;/p&gt;
&lt;p&gt;A continuación, detallamos los 4 patrones que transforman un script en una aplicación de grado producción.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="singleton-creacional"&gt;
Singleton (Creacional)
&lt;a href="#singleton-creacional" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El Problema:&lt;/strong&gt; Instanciar múltiples veces clases que gestionan recursos pesados (conexiones a DB, configuraciones, clientes de caché) agota la memoria y crea estados inconsistentes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La Solución:&lt;/strong&gt; Garantizar que una clase tenga una única instancia y proveer un punto de acceso global a ella.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Implementación en TS:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;ts&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ts" data-lang="ts"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;ConfigManager&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;private&lt;/span&gt; &lt;span class="kr"&gt;static&lt;/span&gt; &lt;span class="nx"&gt;instance&lt;/span&gt;: &lt;span class="kt"&gt;ConfigManager&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;private&lt;/span&gt; &lt;span class="nx"&gt;settings&lt;/span&gt;: &lt;span class="kt"&gt;Record&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;string&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;private&lt;/span&gt; &lt;span class="kr"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Carga inicial de variables de entorno
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;settings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;12345&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;public&lt;/span&gt; &lt;span class="kr"&gt;static&lt;/span&gt; &lt;span class="nx"&gt;getInstance&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ConfigManager&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;ConfigManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;instance&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;ConfigManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;instance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;ConfigManager&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;ConfigManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;instance&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;public&lt;/span&gt; &lt;span class="kr"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt;: &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Uso: const config = ConfigManager.getInstance();
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Caso de uso real: Mantener una única conexión activa a una base de datos o un gestor de logs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="factory-method-creacional"&gt;
Factory Method (Creacional)
&lt;a href="#factory-method-creacional" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El Problema:&lt;/strong&gt; El código se llena de condicionales (if/else) cada vez que necesitamos crear diferentes tipos de objetos que comparten una interfaz.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La Solución:&lt;/strong&gt; Delegar la lógica de instanciación a una clase &amp;ldquo;Fábrica&amp;rdquo; que decide qué objeto crear basándose en un parámetro.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Implementación en TS:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;ts&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ts" data-lang="ts"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;Notifier&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;: &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;EmailNotifier&lt;/span&gt; &lt;span class="kr"&gt;implements&lt;/span&gt; &lt;span class="nx"&gt;Notifier&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;: &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`Enviando Email: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;SMSNotifier&lt;/span&gt; &lt;span class="kr"&gt;implements&lt;/span&gt; &lt;span class="nx"&gt;Notifier&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;: &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`Enviando SMS: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;NotifierFactory&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;static&lt;/span&gt; &lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;type&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;email&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sms&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Notifier&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;email&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;EmailNotifier&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;SMSNotifier&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Caso de uso real: Integrar múltiples pasarelas de pago (Stripe, PayPal) o proveedores de storage (S3, Local, Azure).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="repository-estructuralcomportamiento"&gt;
Repository (Estructural/Comportamiento)
&lt;a href="#repository-estructuralcomportamiento" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El Problema:&lt;/strong&gt; La lógica de negocio está &amp;ldquo;casada&amp;rdquo; con la base de datos. Si cambias de motor de base de datos o de librería (ORM), tienes que reescribir toda la aplicación.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La Solución:&lt;/strong&gt; Crear una capa intermedia que abstraiga el acceso a los datos. La lógica de negocio solo habla con el &amp;ldquo;Repositorio&amp;rdquo;, no con la base de datos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Implementación en TS:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;ts&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ts" data-lang="ts"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;: &lt;span class="kt"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;: &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;IUserRepository&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;findById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;: &lt;span class="kt"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;User&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="na"&gt;null&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;UserRepository&lt;/span&gt; &lt;span class="kr"&gt;implements&lt;/span&gt; &lt;span class="nx"&gt;IUserRepository&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;async&lt;/span&gt; &lt;span class="nx"&gt;findById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;: &lt;span class="kt"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;User&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="na"&gt;null&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Aquí iría la consulta real (SQL, NoSQL, etc.)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Pato&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Caso de uso real: Proyectos que necesitan ser testeables (haciendo un Mock del repositorio) o que prevén migrar su infraestructura de datos.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="decorator-estructural"&gt;
Decorator (Estructural)
&lt;a href="#decorator-estructural" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El Problema:&lt;/strong&gt; Necesitas añadir funcionalidades (logs, validaciones, caché) a métodos existentes sin modificar su código original para no violar el principio de Responsabilidad Única.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La Solución:&lt;/strong&gt; &amp;ldquo;Envolver&amp;rdquo; el método o clase original para añadirle comportamiento extra antes o después de su ejecución.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Implementación en TS:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;ts&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ts" data-lang="ts"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;Logger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;: &lt;span class="kt"&gt;any&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;propertyKey&lt;/span&gt;: &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;descriptor&lt;/span&gt;: &lt;span class="kt"&gt;PropertyDescriptor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;originalMethod&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;descriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;descriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(...&lt;/span&gt;&lt;span class="nx"&gt;args&lt;/span&gt;: &lt;span class="kt"&gt;any&lt;/span&gt;&lt;span class="p"&gt;[])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`Ejecutando &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;propertyKey&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt; con:`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;originalMethod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;apply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;UserService&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;@Logger&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;saveUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;: &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`Usuario &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt; guardado.`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Caso de uso real: Medir el tiempo de ejecución de funciones, validar permisos de usuario o transformar datos de salida automáticamente.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Cómo Optimizar Linux en 2026: 3 Tweaks Avanzados para un Sistema Ultra-Rápido</title><link>https://patojad.com.ar/post/2025/12/c%C3%B3mo-optimizar-linux-en-2026-3-tweaks-avanzados-para-un-sistema-ultra-r%C3%A1pido/</link><pubDate>Tue, 30 Dec 2025 09:31:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/12/c%C3%B3mo-optimizar-linux-en-2026-3-tweaks-avanzados-para-un-sistema-ultra-r%C3%A1pido/</guid><description>&lt;p&gt;¿Sientes que tu Linux podría ir más fluido? Aunque las distros modernas vienen bien configuradas, el hardware de 2025 (NVMe, procesadores multi-núcleo y mucha RAM) permite ajustes finos que marcan la diferencia.&lt;/p&gt;
&lt;p&gt;En esta guía rápida, veremos cómo optimizar la gestión de memoria y el disco con ejemplos prácticos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="swappiness-controlando-el-uso-de-la-ram"&gt;
Swappiness: Controlando el uso de la RAM
&lt;a href="#swappiness-controlando-el-uso-de-la-ram" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El valor de swappiness define qué tan pronto el sistema empieza a mover datos de la RAM al disco (Swap). En 2025, con sistemas de 16GB o 32GB de RAM, no queremos que el sistema use el disco innecesariamente.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El Tweak:&lt;/strong&gt; Cambiar el valor por defecto (60) a algo más agresivo para mantener los datos en RAM (10).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comando:&lt;/strong&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;Bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Bash" data-lang="Bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sysctl -w vm.swappiness&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(Para hacerlo permanente, edita &lt;code&gt;/etc/sysctl.conf&lt;/code&gt;).&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="zram-swap-en-esteroides"&gt;
zram: Swap en esteroides
&lt;a href="#zram-swap-en-esteroides" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En lugar de usar una partición lenta en el disco, zram crea un dispositivo de intercambio comprimido en tu propia RAM. Es mucho más rápido y evita el desgaste de tu SSD.&lt;/p&gt;
&lt;p&gt;Por qué usarlo: Comprime los datos en RAM antes de enviarlos a la Swap física.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalación-ubuntufedoraarch"&gt;
Instalación (Ubuntu/Fedora/Arch):
&lt;a href="#instalaci%c3%b3n-ubuntufedoraarch" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;Bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Bash" data-lang="Bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install zram-config &lt;span class="c1"&gt;# Ubuntu/Debian&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install zram-generator &lt;span class="c1"&gt;# Fedora&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S zram-generator &lt;span class="c1"&gt;# Arch/Manjaro&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="io-scheduler-optimizando-el-disco"&gt;
I/O Scheduler: Optimizando el disco
&lt;a href="#io-scheduler-optimizando-el-disco" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si usas un SSD o NVMe, los planificadores antiguos como cfq solo estorban. Para discos modernos, buscamos &lt;strong&gt;none&lt;/strong&gt; o &lt;strong&gt;mq-deadline&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ver tu scheduler actual:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;Bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Bash" data-lang="Bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /sys/block/sdX/queue/scheduler&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
(Reemplaza sdX por tu disco, ej: nvme0n1).&lt;/li&gt;
&lt;li&gt;Cambiarlo temporalmente:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;Bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Bash" data-lang="Bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; none &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /sys/block/sdX/queue/scheduler&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(Para hacerlo permanente, crea una regla udev o edita el archivo de configuración del kernel&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-medir-el-éxito-benchmarks"&gt;
¿Cómo medir el éxito? (Benchmarks)
&lt;a href="#c%c3%b3mo-medir-el-%c3%a9xito-benchmarks" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;No confíes solo en tu sensación. Usa &lt;code&gt;systemd-analyze&lt;/code&gt; para medir el tiempo de arranque o realiza una compilación de código pesada antes y después de los cambios. La diferencia en la respuesta de la interfaz bajo carga será tu mejor métrica.&lt;/p&gt;</description></item><item><title>SQL vs NoSQL: La Guía Definitiva para elegir tu Base de Datos en 2026</title><link>https://patojad.com.ar/post/2025/12/sql-vs-nosql-la-gu%C3%ADa-definitiva-para-elegir-tu-base-de-datos-en-2026/</link><pubDate>Fri, 26 Dec 2025 11:27:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/12/sql-vs-nosql-la-gu%C3%ADa-definitiva-para-elegir-tu-base-de-datos-en-2026/</guid><description>&lt;p&gt;¡Hola, devs! 👋 En el camino de construir aplicaciones modernas, después de elegir tu lenguaje de backend (como vimos en nuestro video de &lt;a href="https://patojad.com.ar/post/2025/10/frontend-vs.-backend-la-gu%c3%ada-definitiva-para-elegir-tu-camino-de-desarrollo/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Frontend vs Backend
&lt;/a&gt;), te enfrentarás a la decisión más crítica para la escalabilidad de tu proyecto: &lt;strong&gt;¿Qué base de datos usar?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;¿Te vas por la confiabilidad de una &lt;strong&gt;Relacional (SQL)&lt;/strong&gt; o por la flexibilidad de una &lt;strong&gt;No Relacional (NoSQL)&lt;/strong&gt;? En 2026, la respuesta no es tan binaria como antes. En este artículo desglosamos las diferencias y te ayudamos a elegir según tu proyecto.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sql-las-bases-de-datos-relacionales-la-vieja-y-confiable"&gt;
SQL: Las Bases de Datos Relacionales (La Vieja y Confiable)
&lt;a href="#sql-las-bases-de-datos-relacionales-la-vieja-y-confiable" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Las bases de datos SQL (como &lt;strong&gt;PostgreSQL&lt;/strong&gt;, &lt;strong&gt;MySQL&lt;/strong&gt; o &lt;strong&gt;SQL Server&lt;/strong&gt;) organizan los datos en tablas con filas y columnas, bajo un esquema rígido y predefinido.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Propiedad Clave (ACID):&lt;/strong&gt; Son famosas por cumplir las propiedades ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad). Esto garantiza que las transacciones (como una transferencia bancaria) sean 100% seguras.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuándo elegir SQL:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Cuando tus datos tienen una estructura clara y no cambia mucho.&lt;/li&gt;
&lt;li&gt;Cuando la integridad de los datos es la máxima prioridad (Sistemas financieros, E-commerce).&lt;/li&gt;
&lt;li&gt;Cuando necesitas realizar consultas complejas relacionando muchas tablas.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="nosql-las-bases-de-datos-no-relacionales-flexibilidad-y-velocidad"&gt;
NoSQL: Las Bases de Datos No Relacionales (Flexibilidad y Velocidad)
&lt;a href="#nosql-las-bases-de-datos-no-relacionales-flexibilidad-y-velocidad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Las bases de datos NoSQL (como MongoDB, Redis o Cassandra) no usan tablas. Almacenan datos en documentos JSON, pares clave-valor o grafos.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Propiedad Clave (Escalabilidad Horizontal):&lt;/strong&gt; Están diseñadas para crecer fácilmente entre muchos servidores. Son excelentes para manejar volúmenes masivos de datos con esquemas cambiantes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuándo elegir NoSQL:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Cuando los datos son desestructurados o cambian constantemente (Redes sociales, IoT).&lt;/li&gt;
&lt;li&gt;Cuando necesitas una lectura/escritura extremadamente rápida y escalado masivo.&lt;/li&gt;
&lt;li&gt;Cuando buscas un desarrollo ágil donde el esquema de la base de datos evoluciona con el código.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comparativa-cuál-se-adapta-a-tu-flujo"&gt;
Comparativa: ¿Cuál se adapta a tu flujo?
&lt;a href="#comparativa-cu%c3%a1l-se-adapta-a-tu-flujo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Característica&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;SQL (Relacional)&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;NoSQL (No Relacional)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Esquema&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Rígido (Predefinido)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Flexible (Dinámico)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Escalado&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Vertical (Más potencia al servidor)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Horizontal (Más servidores)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Consultas&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;SQL (Complejas y potentes)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Basadas en documentos/colecciones&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Uso Ideal&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Finanzas, ERP, Sistemas Críticos&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Big Data, Tiempo Real, Apps Sociales&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-tendencia-2026-el-enfoque-híbrido"&gt;
La Tendencia 2026: El Enfoque Híbrido
&lt;a href="#la-tendencia-2026-el-enfoque-h%c3%adbrido" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Hoy en día, la mayoría de los &lt;a href="https://patojad.com.ar/post/2025/12/muri%c3%b3-el-full-stack-developer-la-verdad-sobre-el-rol-todoterreno-en-2025/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
desarrolladores Full Stack
&lt;/a&gt; no eligen una sola. Usan un modelo híbrido:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usan &lt;strong&gt;PostgreSQL&lt;/strong&gt; para los perfiles de usuario y transacciones.&lt;/li&gt;
&lt;li&gt;Usan &lt;strong&gt;Redis&lt;/strong&gt; (NoSQL) para el sistema de caché y sesiones en tiempo real.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Conclusión:&lt;/strong&gt; No existe la &amp;ldquo;mejor&amp;rdquo; base de datos, existe la herramienta adecuada para el problema adecuado. Si buscas seguridad y relaciones complejas, ve por SQL. Si buscas rapidez y flexibilidad ante cambios, NoSQL es tu aliada.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>¿El Fin de la Distribución Linux? Por qué el Futuro de Ubuntu, Arch y Fedora es Inevitable</title><link>https://patojad.com.ar/post/2025/12/el-fin-de-la-distribuci%C3%B3n-linux-por-qu%C3%A9-el-futuro-de-ubuntu-arch-y-fedora-es-inevitable/</link><pubDate>Thu, 18 Dec 2025 09:27:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/12/el-fin-de-la-distribuci%C3%B3n-linux-por-qu%C3%A9-el-futuro-de-ubuntu-arch-y-fedora-es-inevitable/</guid><description>&lt;p&gt;¡Hola, entusiastas del software libre! 👋 Linux está en todas partes: en tu teléfono, en los servidores de la Nube, y quizás en tu escritorio. Pero, ¿qué significa realmente la &amp;ldquo;Distribución&amp;rdquo; de Linux en 2025?&lt;/p&gt;
&lt;p&gt;En este artículo, que acompaña a nuestro video &lt;strong&gt;&amp;quot;¿El Fin de la Distribución Linux?&amp;quot;&lt;/strong&gt;, exploraremos un concepto polémico: &lt;strong&gt;las distribuciones tradicionales están perdiendo relevancia para el usuario final y el desarrollador moderno.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La clave está en dos fuerzas imparables: &lt;strong&gt;la Inmutabilidad del Sistema Operativo&lt;/strong&gt; y el auge de los &lt;strong&gt;Contenedores&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-irrelevancia-del-sistema-base-la-revolución-de-los-contenedores"&gt;
La Irrelevancia del Sistema Base (La Revolución de los Contenedores)
&lt;a href="#la-irrelevancia-del-sistema-base-la-revoluci%c3%b3n-de-los-contenedores" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Hace diez años, si necesitabas una librería específica de Python o una versión particular de Node.js, tenías que modificar tu sistema operativo base (Ubuntu, Fedora, etc.).&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="el-dominio-de-docker"&gt;
El Dominio de Docker
&lt;a href="#el-dominio-de-docker" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Hoy, todo ese desorden se encapsula en &lt;strong&gt;Contenedores (Docker o Podman)&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Aislamiento:&lt;/strong&gt; El contenedor lleva consigo su propio sistema de archivos y sus dependencias. Al desarrollador no le importa si el host (el sistema operativo base) es Fedora o Debian. Solo le importa que el contenedor funcione.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portabilidad:&lt;/strong&gt; Un contenedor funciona exactamente igual en tu máquina, en el servidor de pruebas o en AWS Lambda. Esto elimina el famoso &amp;ldquo;en mi máquina funciona&amp;rdquo; y, de paso, le resta importancia a las peculiaridades de la distribución base.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Conclusión:&lt;/strong&gt; Si el sistema base solo sirve para correr el kernel y un motor de contenedores, ¿por qué molestarse en elegir entre 200 distribuciones diferentes?&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-ascenso-de-los-sistemas-inmutables-silverblue-y-steamos"&gt;
El Ascenso de los Sistemas Inmutables (Silverblue y SteamOS)
&lt;a href="#el-ascenso-de-los-sistemas-inmutables-silverblue-y-steamos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El segundo clavo en el ataúd de la distribución tradicional es la &lt;strong&gt;inmutabilidad&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Un sistema operativo &lt;strong&gt;inmutable&lt;/strong&gt; (como &lt;strong&gt;Fedora Silverblue&lt;/strong&gt;, &lt;strong&gt;steamOS&lt;/strong&gt; o &lt;strong&gt;ChromeOS&lt;/strong&gt;) no permite que el usuario modifique archivos del sistema después de la instalación.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;¿Cómo se usa?&lt;/strong&gt; La distribución base solo se usa para el núcleo. Las aplicaciones de escritorio se instalan en contenedores (como Flatpak), y el código de desarrollo se ejecuta dentro de un contenedor de desarrollo (como Toolbox).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Beneficio&lt;/strong&gt;: La estabilidad y la seguridad son máximas. Si algo se rompe en tu aplicación, no rompe el sistema operativo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta tendencia hace que la distribución se convierta en una caja negra estable y aburrida, quitándole la diversión y la complejidad que antes fascinaban a los usuarios.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-tendencia-de-los-entornos-de-desarrollo-en-la-nube"&gt;
La Tendencia de los Entornos de Desarrollo en la Nube
&lt;a href="#la-tendencia-de-los-entornos-de-desarrollo-en-la-nube" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El golpe final viene de los entornos de desarrollo en la nube (como GitHub Codespaces).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La Desconexión Total&lt;/strong&gt;: La configuración del entorno de desarrollo ya no vive en tu PC, sino en un servidor remoto. Tú solo interactúas con un terminal y un editor web.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Irrelevancia del Hardware&lt;/strong&gt;: Tu distro de Linux se convierte simplemente en un browser que accede a un servidor que, irónicamente, también corre Linux (probablemente un RHEL o una versión mínima de Ubuntu Server).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-significa-esto-para-fedora-arch-y-ubuntu"&gt;
¿Qué Significa Esto para Fedora, Arch y Ubuntu?
&lt;a href="#qu%c3%a9-significa-esto-para-fedora-arch-y-ubuntu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Las distribuciones no van a desaparecer, pero su función cambiará:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;En el Escritorio&lt;/strong&gt;: Se moverán hacia el modelo inmutable (como Silverblue) o hacia la consolidación (Ubuntu siendo el estándar para novatos).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;En el Servidor&lt;/strong&gt;: Se reducirán a versiones ultra-mínimas (como Alpine o CoreOS) cuyo único trabajo es ejecutar contenedores y servicios Serverless.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;El futuro es inevitable&lt;/strong&gt;: El kernel Linux es el rey, pero la &amp;ldquo;distribución&amp;rdquo; tal como la conocíamos, ese sistema operativo personalizado y maleable, se está convirtiendo en una reliquia, reemplazada por la practicidad y portabilidad de los contenedores.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>¿Murió el Full Stack Developer? La Verdad sobre el Rol "Todoterreno" en 2025</title><link>https://patojad.com.ar/post/2025/12/muri%C3%B3-el-full-stack-developer-la-verdad-sobre-el-rol-todoterreno-en-2025/</link><pubDate>Thu, 11 Dec 2025 08:27:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/12/muri%C3%B3-el-full-stack-developer-la-verdad-sobre-el-rol-todoterreno-en-2025/</guid><description>&lt;p&gt;¡Hola, comunidad de desarrollo! 👋 Desde que hablamos sobre la diferencia entre Frontend y Backend, la pregunta ha sido inevitable: &lt;strong&gt;¿Vale la pena seguir el camino Full Stack?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En el mercado actual, muchos argumentan que el desarrollo se ha vuelto tan complejo (Microservicios, Nube, Infraestructura) que ya es imposible dominar todo. ¿Acaso el rol Full Stack está obsoleto?&lt;/p&gt;
&lt;p&gt;En este artículo, que complementa nuestro video &amp;ldquo;¿Murió el Full Stack Developer? La Verdad en 2025&amp;rdquo;, argumentamos que el Full Stack no ha muerto; ha evolucionado hacia un perfil más estratégico y arquitectónico.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-crisis-del-full-stack-junior"&gt;
La Crisis del Full Stack Junior
&lt;a href="#la-crisis-del-full-stack-junior" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El estereotipo de Full Stack que está en crisis es el &lt;strong&gt;Junior o T-Shaped (Superficial)&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El Problema:&lt;/strong&gt; Muchas empresas buscan un &amp;ldquo;Full Stack&amp;rdquo; que sepa HTML, CSS, React, Node.js y maneje la base de datos, ¡todo por un sueldo junior! Este perfil termina siendo mediocre en todo y experto en nada, asumiendo una carga de trabajo insostenible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La Realidad de la Especialización:&lt;/strong&gt; Con la explosión de arquitecturas Cloud-Native (Docker, Kubernetes) y la seguridad integrada (DevSecOps), es irreal pedir a una sola persona que sea experta en frontend, backend, bases de datos e infraestructura avanzada.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-full-stack-senior-el-arquitecto-versátil"&gt;
El Full Stack Senior: El Arquitecto Versátil
&lt;a href="#el-full-stack-senior-el-arquitecto-vers%c3%a1til" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El rol Full Stack ha ascendido en la cadena de valor. El Full Stack moderno (Senior) es ahora un &lt;strong&gt;integrador&lt;/strong&gt; y un &lt;strong&gt;Arquitecto de Soluciones&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visión 360:&lt;/strong&gt; Como mencionamos en nuestro video de Arquitectura, este perfil es crucial porque entiende cómo se conectan las piezas: cómo el frontend debe consumir la API, cómo el backend debe gestionar la seguridad de la sesión, y cómo debe desplegarse en la nube.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El Rol de Glue (Pegamento):&lt;/strong&gt; El Senior Full Stack no domina todas las librerías, sino que elige las herramientas, define los estándares de comunicación (API) y se asegura de que los equipos de Frontend y Backend trabajen juntos de forma eficiente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="las-habilidades-irreemplazables-del-full-stack-moderno"&gt;
Las Habilidades Irreemplazables del Full Stack Moderno
&lt;a href="#las-habilidades-irreemplazables-del-full-stack-moderno" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para sobrevivir y prosperar como Full Stack en 2025, debes enfocarte en estas habilidades transversales:&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Habilidad&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Por Qué es Crítica&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Infraestructura Básica&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Dominar Docker y entender los conceptos de Serverless (FaaS/BaaS). Esto permite desplegar y escalar sin ser un experto en DevOps.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Diseño de APIs&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Saber diseñar APIs &lt;strong&gt;REST&lt;/strong&gt; y &lt;strong&gt;GraphQL&lt;/strong&gt; eficientes y seguras. La API es el contrato entre Front y Back.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Testing y Seguridad&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;No solo escribir código, sino escribir pruebas unitarias (Back) y &lt;strong&gt;pruebas E2E&lt;/strong&gt; (Front) y entender los principios de seguridad (OWASP).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Pensamiento Arquitectónico&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Elegir entre un &lt;strong&gt;Monolito&lt;/strong&gt;, &lt;strong&gt;Microservicios&lt;/strong&gt; o &lt;strong&gt;Serverless&lt;/strong&gt;. Esta toma de decisiones es el valor real del Senior Full Stack.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="debo-elegir-full-stack-ahora"&gt;
¿Debo Elegir Full Stack Ahora?
&lt;a href="#debo-elegir-full-stack-ahora" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si eres Junior, la mejor recomendación es &lt;strong&gt;especializarte primero&lt;/strong&gt; (ya sea en un framework de Frontend potente como React/Vue o en un lenguaje de Backend como Node.js/Python).&lt;/p&gt;
&lt;p&gt;Una vez que domines una de las mitades y entiendas los problemas profundos de ese dominio, será mucho más fácil pasar a la otra mitad.&lt;/p&gt;
&lt;p&gt;El Full Stack es un destino, no un punto de partida. Es el desarrollador que, con años de experiencia en ambos lados, decide dar el salto a la visión completa del producto.&lt;/p&gt;</description></item><item><title>Red Hat: ¿Héroe o Villano del Software Libre? La Polémica de la Comercialización de Linux</title><link>https://patojad.com.ar/post/2025/10/red-hat-h%C3%A9roe-o-villano-del-software-libre-la-pol%C3%A9mica-de-la-comercializaci%C3%B3n-de-linux/</link><pubDate>Wed, 22 Oct 2025 08:02:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/10/red-hat-h%C3%A9roe-o-villano-del-software-libre-la-pol%C3%A9mica-de-la-comercializaci%C3%B3n-de-linux/</guid><description>&lt;p&gt;¡Hola a todos, apasionados del software libre! 👋 Linux es el sistema operativo de código abierto más grande del mundo, pero su éxito en el mundo empresarial no sería posible sin un actor clave: Red Hat.&lt;/p&gt;
&lt;p&gt;Red Hat, hoy propiedad de IBM, es el motor comercial detrás de gran parte del ecosistema. Pero su influencia no está exenta de controversia. ¿Es Red Hat el héroe que financia el futuro de Linux, o el villano que amenaza los principios del software libre?&lt;/p&gt;
&lt;p&gt;En este artículo, que acompaña a nuestro video &lt;strong&gt;&amp;ldquo;Linux Profundo: ¿Red Hat Ayuda o Perjudica a Linux?&amp;rdquo;&lt;/strong&gt;, analizamos las dos caras de la moneda.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-postura-del-héroe-por-qué-red-hat-impulsa-a-linux"&gt;
La Postura del &amp;ldquo;Héroe&amp;rdquo;: Por Qué Red Hat Impulsa a Linux
&lt;a href="#la-postura-del-h%c3%a9roe-por-qu%c3%a9-red-hat-impulsa-a-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Los defensores de Red Hat argumentan que es la fuerza más importante para el desarrollo y la legitimidad de Linux en el sector corporativo.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="mayor-contribuyente-al-kernel"&gt;
Mayor Contribuyente al Kernel
&lt;a href="#mayor-contribuyente-al-kernel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Red Hat es consistentemente uno de los mayores contribuyentes al kernel de Linux, solo superado por la propia Linus Torvalds. Sin el financiamiento y el trabajo de sus ingenieros, el desarrollo de Linux sería mucho más lento.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="estandarización-y-solidez-empresarial"&gt;
Estandarización y Solidez Empresarial
&lt;a href="#estandarizaci%c3%b3n-y-solidez-empresarial" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Las grandes corporaciones (bancos, gobiernos, telecoms) no pueden depender de un software sin soporte. Red Hat proporciona:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Soporte a Largo Plazo (LTS):&lt;/strong&gt; Con Red Hat Enterprise Linux (RHEL), las empresas tienen garantizado un soporte de seguridad y mantenimiento durante años, algo vital.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Innovación en Tecnología Abierta:&lt;/strong&gt; Red Hat es el impulsor de proyectos clave como Fedora, CentOS Stream, Podman (alternativa a Docker) y gran parte del ecosistema de Kubernetes (OpenShift).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="el-modelo-de-negocio-suscripción-al-soporte"&gt;
El Modelo de Negocio &amp;ldquo;Suscripción al Soporte&amp;rdquo;
&lt;a href="#el-modelo-de-negocio-suscripci%c3%b3n-al-soporte" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Red Hat no vende software; vende servicio, certificación y soporte. Esto valida el modelo de negocio de código abierto: el software es libre, pero el soporte profesional y la garantía de estabilidad se pagan. Esto demuestra que el software libre puede ser rentable.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-postura-del-villano-por-qué-red-hat-genera-desconfianza"&gt;
La Postura del &amp;ldquo;Villano&amp;rdquo;: Por Qué Red Hat Genera Desconfianza
&lt;a href="#la-postura-del-villano-por-qu%c3%a9-red-hat-genera-desconfianza" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La comunidad más purista del software libre a menudo ve con recelo la influencia de una gran corporación con fines de lucro sobre un proyecto comunitario.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="la-polémica-de-centos-stream"&gt;
La Polémica de CentOS Stream
&lt;a href="#la-pol%c3%a9mica-de-centos-stream" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La mayor controversia reciente fue la decisión de Red Hat de discontinuar CentOS Linux (una reconstrucción 1:1 de RHEL) a favor de CentOS Stream.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El Problema:&lt;/strong&gt; CentOS era usado por muchos como una alternativa gratuita y estable a RHEL en producción. Al pasar a Stream, CentOS se convirtió en la &amp;ldquo;rama de prueba&amp;rdquo; (lo que va antes de RHEL), eliminando la versión gratuita estable que la comunidad usaba.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La Reacción:&lt;/strong&gt; Esto generó una fractura y el nacimiento de forks (bifurcaciones) de CentOS como AlmaLinux y Rocky Linux, con el objetivo de restaurar el clon gratuito y estable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="concentración-de-poder-y-código"&gt;
Concentración de Poder y Código
&lt;a href="#concentraci%c3%b3n-de-poder-y-c%c3%b3digo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Al ser el actor dominante, existe el temor a la centralización. Si Red Hat/IBM toma una decisión de diseño que beneficia a su modelo de negocio, pero no a la comunidad, esta tiene un impacto desproporcionado en el ecosistema. Esto va en contra del espíritu descentralizado y de la libertad del software.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="el-costo-para-las-pymes"&gt;
El Costo para las PYMES
&lt;a href="#el-costo-para-las-pymes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Aunque RHEL es esencial para grandes empresas, su costo de suscripción puede ser prohibitivo para pequeñas empresas o startups, forzándolas a buscar alternativas sin soporte profesional.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión-la-tensión-beneficiosa"&gt;
Conclusión: La Tensión Beneficiosa
&lt;a href="#conclusi%c3%b3n-la-tensi%c3%b3n-beneficiosa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La realidad es que el desarrollo de Linux es una tensión constante entre la comunidad y las corporaciones.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sin la comunidad&lt;/strong&gt;, Linux no tendría el alma ni la diversidad de código abierto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin corporaciones como Red Hat&lt;/strong&gt;, Linux no sería el pilar sólido y financiado que es en el sector empresarial.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Red Hat no es un villano, sino un agente de comercialización indispensable. Su existencia asegura que el kernel avance a pasos agigantados, aunque la comunidad deba estar siempre atenta para garantizar que las bases del código sigan siendo libres y accesibles para todos (como demostraron los proyectos &lt;a href="https://patojad.com.ar/post/2025/03/almalinux-gu%c3%ada-definitiva-historia-ventajas-y-comparativa-vs-rhelcentos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
AlmaLinux
&lt;/a&gt; y Rocky).&lt;/p&gt;</description></item><item><title>Frontend vs. Backend: La Guía Definitiva para Elegir Tu Camino de Desarrollo</title><link>https://patojad.com.ar/post/2025/10/frontend-vs.-backend-la-gu%C3%ADa-definitiva-para-elegir-tu-camino-de-desarrollo/</link><pubDate>Tue, 07 Oct 2025 08:02:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/10/frontend-vs.-backend-la-gu%C3%ADa-definitiva-para-elegir-tu-camino-de-desarrollo/</guid><description>&lt;p&gt;¡Hola a todos, futuros devs! 👋 Si recién te sumerges en el universo de la programación, la primera pregunta es casi siempre la misma: &lt;em&gt;¿Qué camino debo elegir?&lt;/em&gt; ¿&lt;strong&gt;Frontend&lt;/strong&gt; o &lt;strong&gt;Backend&lt;/strong&gt;?&lt;/p&gt;
&lt;p&gt;En este artículo, que complementa nuestro video &amp;ldquo;FRONTEND vs BACKEND: La Guía DEFINITIVA para Programadores&amp;rdquo;, vamos a desmitificar estos dos mundos, comparando sus roles, sus tecnologías y sus responsabilidades.&lt;/p&gt;
&lt;p&gt;Si ya viste &lt;a href="https://youtu.be/rRuK7YmqI2U" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
nuestro video sobre Arquitectura de Software
&lt;/a&gt;, sabes que un sistema es complejo; ahora vamos a ver las dos mitades que lo componen.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-frontend-el-arte-de-la-interacción-lo-que-el-usuario-ve"&gt;
El Frontend: El Arte de la Interacción (Lo que el Usuario Ve)
&lt;a href="#el-frontend-el-arte-de-la-interacci%c3%b3n-lo-que-el-usuario-ve" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El Frontend se conoce como el desarrollo del &amp;ldquo;lado del cliente&amp;rdquo;. Es todo lo que el usuario final ve, toca y con lo que interactúa en el navegador: los colores, los menús, las animaciones de un botón, la tipografía y los formularios.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="responsabilidades-clave"&gt;
Responsabilidades Clave:
&lt;a href="#responsabilidades-clave" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Experiencia de Usuario (UX):&lt;/strong&gt; Asegurar que la aplicación sea intuitiva y fácil de usar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diseño Responsivo:&lt;/strong&gt; Garantizar que la web se vea bien en cualquier dispositivo (móvil, tablet, PC).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimización del Rendimiento:&lt;/strong&gt; Lograr que la página cargue rápido.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="tecnologías-fundamentales-el-trío-sagrado"&gt;
Tecnologías Fundamentales (El Trío Sagrado):
&lt;a href="#tecnolog%c3%adas-fundamentales-el-tr%c3%ado-sagrado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;:&lt;/strong&gt; La estructura y el contenido (el esqueleto).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/descubriendo-el-mundo-de-css/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
CSS
&lt;/a&gt;:&lt;/strong&gt; El estilo y el diseño (la piel).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JavaScript:&lt;/strong&gt; La interactividad y la lógica de la interfaz (el sistema nervioso).&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;También te puede interesar &lt;a href="https://patojad.com.ar/post/2023/09/es-html-un-lenguaje-de-programaci%C3%B3n-desmitificando-su-naturaleza/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
¿Es HTML un Lenguaje de Programación?
&lt;/a&gt; y &lt;a href="https://patojad.com.ar/post/2023/03/que-es-typescript-en-que-se-parece-a-javascript/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
¿Que es TypeScript? ¿En que se parece a JavaScript?
&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Para proyectos modernos, los desarrolladores Frontend usan librerías y frameworks como &lt;strong&gt;React&lt;/strong&gt;, &lt;strong&gt;Angular&lt;/strong&gt; o &lt;strong&gt;Vue.js&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-backend-la-lógica-y-la-maquinaria-lo-que-el-usuario-no-ve"&gt;
El Backend: La Lógica y la Maquinaria (Lo que el Usuario No Ve)
&lt;a href="#el-backend-la-l%c3%b3gica-y-la-maquinaria-lo-que-el-usuario-no-ve" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El Backend es el desarrollo del &amp;ldquo;lado del servidor&amp;rdquo;. Es la maquinaria interna, el cerebro que maneja la lógica de negocio, la seguridad, las bases de datos y la comunicación con otros servicios.&lt;/p&gt;
&lt;p&gt;Si el Frontend es la cara de la aplicación, el Backend es el sistema de gestión y almacenamiento.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="responsabilidades-clave-1"&gt;
Responsabilidades Clave:
&lt;a href="#responsabilidades-clave-1" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bases de Datos:&lt;/strong&gt; Almacenar, gestionar y recuperar información (por ejemplo, los perfiles de usuario o los productos de una tienda).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API (Application Programming Interface):&lt;/strong&gt; Crear los puntos de conexión que permiten al Frontend &amp;ldquo;pedir&amp;rdquo; o &amp;ldquo;enviar&amp;rdquo; datos de forma segura.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lógica de Negocio y Seguridad:&lt;/strong&gt; Implementar las reglas del negocio (¿cuánto cuesta un producto? ¿está autorizado un usuario?).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="tecnologías-fundamentales-diversidad-de-lenguajes"&gt;
Tecnologías Fundamentales (Diversidad de Lenguajes):
&lt;a href="#tecnolog%c3%adas-fundamentales-diversidad-de-lenguajes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lenguajes de Servidor:&lt;/strong&gt; Python, Node.js (JavaScript), PHP, Java, Ruby.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frameworks:&lt;/strong&gt; Django, Express, Laravel, NestJS, SpringBoot.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bases de Datos:&lt;/strong&gt; PostgreSQL, MySQL, MongoDB.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;También te puede interesar &lt;a href="https://patojad.com.ar/post/2020/04/el-papel-de-javascript-en-la-seguridad/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
El papel de Javascript en la seguridad
&lt;/a&gt; y &lt;a href="https://patojad.com.ar/post/2025/07/paradigmas-de-programaci%c3%b3n-qu%c3%a9-son-y-por-qu%c3%a9-son-clave-para-un-programador/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Paradigmas de Programación: ¿Qué Son y Por Qué Son Clave para un Programador?
&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="full-stack-y-el-flujo-de-datos"&gt;
Full Stack y el Flujo de Datos
&lt;a href="#full-stack-y-el-flujo-de-datos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Cuando el Frontend y el Backend se unen, ocurre la magia.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El Proceso:&lt;/strong&gt; El Frontend le &lt;em&gt;&amp;ldquo;pide&amp;rdquo;&lt;/em&gt; información al Backend a través de un API. El Backend procesa la solicitud, busca los datos en la base de datos y se los &lt;em&gt;&amp;ldquo;devuelve&amp;rdquo;&lt;/em&gt; al Frontend, que finalmente los muestra al usuario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El Rol Full Stack:&lt;/strong&gt; Un desarrollador Full Stack tiene la habilidad de trabajar en ambos lados de este proceso. Son extremadamente versátiles, aunque el dominio completo de ambas especialidades es un desafío constante.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="cómo-elegir-tu-camino-una-elección-de-perfil"&gt;
¿Cómo Elegir Tu Camino? Una Elección de Perfil
&lt;a href="#c%c3%b3mo-elegir-tu-camino-una-elecci%c3%b3n-de-perfil" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;No hay un camino &amp;ldquo;mejor&amp;rdquo;, solo el que mejor se adapta a tu perfil:&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Si te atrae&amp;hellip;&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;&amp;hellip; Tu Camino es FRONTEND&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;&amp;hellip; Tu Camino es BACKEND&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Enfoque&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;El diseño, la estética y la interacción.&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;La lógica, la eficiencia y los datos.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Resultado&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Ver tu trabajo en el navegador al instante.&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Solucionar problemas complejos en el servidor.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Perfil&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Creativo, orientado a la experiencia del usuario y al detalle visual.&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Lógico, metódico, orientado a la estructura y la seguridad.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;El mundo del desarrollo web es amplio. Empieza por el lado que más te apasione, y el resto del aprendizaje vendrá solo.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No te olvides de ver nuestro video &lt;a href="https://patojad.com.ar/post/2025/06/c%c3%b3mo-empezar-a-programar-desde-cero-tu-gu%c3%ada-definitiva-para-dar-los-primeros-pasos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Cómo Empezar a Programar Desde Cero: Tu Guía Definitiva para Dar los Primeros Pasos
&lt;/a&gt; para tener una visión completa de cómo lanzarte en este emocionante viaje.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Introducción a la Arquitectura de Software: La Guía Esencial para Programadores</title><link>https://patojad.com.ar/post/2025/09/introducci%C3%B3n-a-la-arquitectura-de-software-la-gu%C3%ADa-esencial-para-programadores/</link><pubDate>Mon, 08 Sep 2025 09:32:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/09/introducci%C3%B3n-a-la-arquitectura-de-software-la-gu%C3%ADa-esencial-para-programadores/</guid><description>&lt;p&gt;¡Hola a todos, futuros arquitectos de software! 👋 Si ya dominas la programación y te sientes cómodo escribiendo código, es momento de subir al siguiente nivel. El siguiente paso en la evolución de un programador es empezar a pensar en el &amp;ldquo;panorama general&amp;rdquo; del software, y ahí es donde entra en juego la &lt;strong&gt;Arquitectura de Software&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Este artículo es el complemento perfecto de nuestro video &lt;strong&gt;&amp;ldquo;Qué es la ARQUITECTURA de Software: Guía COMPLETA para Programadores (¡Y por qué deberías aprenderla!)&amp;rdquo;&lt;/strong&gt;. Aquí profundizaremos en este rol crucial, sus principios fundamentales y te daré un mini-roadmap para empezar a pensar como un arquitecto.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-la-arquitectura-de-software-la-analogía-de-la-casa"&gt;
¿Qué es la Arquitectura de Software? La Analogía de la Casa
&lt;a href="#qu%c3%a9-es-la-arquitectura-de-software-la-analog%c3%ada-de-la-casa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Imagina que quieres construir una casa.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un &lt;strong&gt;programador&lt;/strong&gt; es como un constructor especializado: es un experto en colocar ladrillos, instalar la electricidad o el sistema de cañerías. Su enfoque es la implementación perfecta de una parte del proyecto.&lt;/li&gt;
&lt;li&gt;Un &lt;strong&gt;Arquitecto de Software&lt;/strong&gt; es el arquitecto del edificio. Su trabajo es diseñar los planos generales, decidir la estructura, la cantidad de pisos, los cimientos, dónde irán los soportes principales y cómo se integrarán todos los sistemas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La &lt;strong&gt;Arquitectura de Software&lt;/strong&gt; es el conjunto de decisiones estructurales que definen un sistema, incluyendo sus componentes, sus relaciones, y las reglas que gobiernan su diseño y evolución. Es la &lt;strong&gt;columna vertebral&lt;/strong&gt; de cualquier proyecto, y una buena arquitectura es la diferencia entre un software que prospera y uno que se vuelve un desastre.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="programador-vs-arquitecto-de-software-roles-y-responsabilidades"&gt;
Programador vs. Arquitecto de Software: Roles y Responsabilidades
&lt;a href="#programador-vs-arquitecto-de-software-roles-y-responsabilidades" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Aunque ambos roles son fundamentales para el desarrollo, sus responsabilidades son distintas:&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Rol&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Enfoque Principal&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Pregunta Clave&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Programador&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Implementación, código, algoritmos.&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&amp;ldquo;¿Cómo resuelvo este problema específico con código?&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Arquitecto&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Estructura, diseño, patrones, escalabilidad.&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&amp;ldquo;¿Por qué y cómo este diseño permitirá que el sistema crezca y se mantenga?&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;El programador se enfoca en la calidad del código a nivel de función o componente, mientras que el arquitecto se preocupa por la calidad a nivel de todo el sistema. Un arquitecto debe tener una sólida base de programación, pero también una visión a largo plazo para prever problemas futuros.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="principios-fundamentales-de-la-arquitectura-de-software"&gt;
Principios Fundamentales de la Arquitectura de Software
&lt;a href="#principios-fundamentales-de-la-arquitectura-de-software" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Un buen diseño arquitectónico no es solo un conjunto de decisiones técnicas; debe cumplir con ciertas &amp;ldquo;cualidades&amp;rdquo; clave para que el software sea robusto. Estos son los principios más importantes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Escalabilidad:&lt;/strong&gt; La capacidad del sistema de manejar un crecimiento de usuarios, transacciones o datos sin comprometer el rendimiento.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantenibilidad:&lt;/strong&gt; La facilidad con la que el software puede ser entendido, modificado y depurado por el equipo de desarrollo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fiabilidad:&lt;/strong&gt; La capacidad del sistema para funcionar de forma consistente y sin fallos, incluso bajo condiciones adversas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguridad:&lt;/strong&gt; La protección del sistema contra amenazas, vulnerabilidades y accesos no autorizados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento:&lt;/strong&gt; La rapidez y eficiencia con la que el sistema procesa las tareas y usa los recursos computacionales.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="patrones-arquitectónicos-monolítico-vs-microservicios"&gt;
Patrones Arquitectónicos: Monolítico vs. Microservicios
&lt;a href="#patrones-arquitect%c3%b3nicos-monol%c3%adtico-vs-microservicios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Estos son dos de los patrones más comunes y opuestos que un arquitecto debe entender:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arquitectura-monolítica"&gt;
Arquitectura Monolítica
&lt;a href="#arquitectura-monol%c3%adtica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;En este modelo, todo el software (la interfaz de usuario, la lógica de negocio, el acceso a datos) se empaqueta en una única y gran aplicación.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt; Fácil de empezar a desarrollar y de desplegar. Todo está en un solo lugar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt; A medida que el proyecto crece, se vuelve muy complejo, difícil de escalar (tienes que escalar todo el sistema, incluso si solo una parte necesita más potencia) y un fallo en un componente puede tumbar toda la aplicación.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arquitectura-de-microservicios"&gt;
Arquitectura de Microservicios
&lt;a href="#arquitectura-de-microservicios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;En este modelo, el sistema se divide en pequeños servicios independientes, cada uno con una función específica, que se comunican entre sí.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt; Cada servicio se puede desarrollar, desplegar y escalar de forma independiente. Si un servicio falla, los demás pueden seguir funcionando. Los equipos pueden trabajar en paralelo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desventajas:&lt;/strong&gt; Mucho más complejo de gestionar. Requiere una buena coordinación y sistemas para la comunicación entre servicios.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-camino-para-convertirte-en-un-arquitecto-de-software"&gt;
El Camino para Convertirte en un Arquitecto de Software
&lt;a href="#el-camino-para-convertirte-en-un-arquitecto-de-software" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si este rol te parece atractivo, aquí tienes un mini-roadmap para empezar a desarrollar una mentalidad de arquitecto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Domina la Programación:&lt;/strong&gt; No puedes diseñar si no entiendes los cimientos. Sé un experto en tu lenguaje principal y domina los principios SOLID.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aprende Patrones de Diseño:&lt;/strong&gt; Estudiá los patrones de diseño de software (los del &amp;ldquo;Gang of Four&amp;rdquo; son un buen punto de partida). Estos son las soluciones probadas a problemas comunes de diseño.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entiende los Sistemas Distribuidos:&lt;/strong&gt; Familiarízate con la arquitectura cliente-servidor, las API REST, los conceptos de microservicios y las herramientas como Docker y Kubernetes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desarrolla Habilidades Blandas:&lt;/strong&gt; Un arquitecto no solo codifica. Debe ser un líder, un comunicador y un solucionador de problemas. Aprende a explicar decisiones técnicas de manera clara a otros miembros del equipo y a stakeholders no técnicos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión-el-rol-crucial-para-el-futuro-del-software"&gt;
Conclusión: El Rol Crucial para el Futuro del Software
&lt;a href="#conclusi%c3%b3n-el-rol-crucial-para-el-futuro-del-software" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La arquitectura de software es el arte de planificar y diseñar sistemas robustos y escalables. Es un paso natural en la carrera de cualquier programador que aspire a crecer y a tener un impacto significativo en proyectos a gran escala.&lt;/p&gt;
&lt;p&gt;Esperamos que este video y artículo te inspiren a ir más allá del código y a empezar a pensar en el diseño global. Si te ha gustado, no olvides darle Me Gusta, suscribirte al canal de PatoJAD y compartir este contenido.&lt;/p&gt;
&lt;p&gt;¡Déjanos un comentario con tus dudas o si te interesa que hablemos de algún patrón arquitectónico en particular!&lt;/p&gt;</description></item><item><title>Estructuras de Datos y Algoritmos Básicos: Lo Esencial para Programar con JavaScript</title><link>https://patojad.com.ar/post/2025/07/estructuras-de-datos-y-algoritmos-b%C3%A1sicos-lo-esencial-para-programar-con-javascript/</link><pubDate>Mon, 21 Jul 2025 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/07/estructuras-de-datos-y-algoritmos-b%C3%A1sicos-lo-esencial-para-programar-con-javascript/</guid><description>&lt;p&gt;¡Hola a todos, futuros y actuales programadores de PatoJAD! 👋 Si estás en el mundo del desarrollo de software, seguramente has escuchado hablar de Estructuras de Datos y Algoritmos. Puede que suenen a conceptos de universidad o a algo &amp;ldquo;solo para genios&amp;rdquo;, pero te aseguro que entenderlos es fundamental para escribir código eficiente, optimizar el rendimiento de tus aplicaciones y resolver problemas complejos de forma elegante.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-son-tan-importantes-las-estructuras-de-datos-y-los-algoritmos"&gt;
¿Por Qué Son Tan Importantes las Estructuras de Datos y los Algoritmos?
&lt;a href="#por-qu%c3%a9-son-tan-importantes-las-estructuras-de-datos-y-los-algoritmos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Imagina que eres un chef y tienes todos los ingredientes para una receta (tus datos). Si los tienes desordenados en la cocina, te llevará mucho tiempo encontrar lo que necesitas. Pero si los organizas en la despensa, la heladera y el estante de especias (estructuras de datos), será mucho más rápido y eficiente. La forma en que cortas los ingredientes, los mezclas y los cocinas (algoritmos) también impacta en el resultado final y el tiempo que te lleva.&lt;/p&gt;
&lt;p&gt;En programación, es similar. La elección de la estructura de datos adecuada para almacenar tu información y el algoritmo correcto para procesarla pueden marcar la diferencia entre una aplicación lenta y frustrante, y una rápida y robusta.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-son-las-estructuras-de-datos"&gt;
¿Qué Son las Estructuras de Datos?
&lt;a href="#qu%c3%a9-son-las-estructuras-de-datos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Las Estructuras de Datos son formas especializadas de organizar y almacenar información en una computadora. Piensa en ellas como diferentes tipos de &amp;ldquo;contenedores&amp;rdquo; o &amp;ldquo;estantes&amp;rdquo; que tienen reglas específicas sobre cómo guardar y acceder a los datos. Cada una tiene sus ventajas y desventajas para distintas operaciones.&lt;/p&gt;
&lt;p&gt;Vamos a explorar algunas de las más fundamentales que usarás a diario en JavaScript:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="array-arreglo-la-lista-ordenada"&gt;
Array (Arreglo): La Lista Ordenada
&lt;a href="#array-arreglo-la-lista-ordenada" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;El Array es la estructura de datos más básica y probablemente la primera que usarás. Es una colección ordenada de elementos, donde cada elemento tiene una posición numérica (un índice), que en JavaScript comienza desde 0.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Características:&lt;/strong&gt; Los elementos se almacenan en un orden específico, se puede acceder a ellos rápidamente por su índice, y en JavaScript, su tamaño es dinámico (puedes añadir o quitar elementos).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuándo usarlo:&lt;/strong&gt; Cuando el orden de los elementos es importante (ej: una lista de tareas, una secuencia de eventos) y necesitas acceder a ellos por su posición.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Declaración de un Array
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;frutas&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Manzana&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Banana&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Cereza&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Acceder a elementos por índice
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;frutas&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; &lt;span class="c1"&gt;// Salida: &amp;#34;Manzana&amp;#34; (primer elemento)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Añadir un elemento al final
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;frutas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Durazno&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;frutas&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Salida: [&amp;#34;Manzana&amp;#34;, &amp;#34;Banana&amp;#34;, &amp;#34;Cereza&amp;#34;, &amp;#34;Durazno&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Iterar sobre un Array
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;frutas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`La fruta en la posición &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt; es: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;frutas&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="objeto-object--map-almacenamiento-clave-valor"&gt;
Objeto (Object / Map): Almacenamiento Clave-Valor
&lt;a href="#objeto-object--map-almacenamiento-clave-valor" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Los Objetos en JavaScript son colecciones de datos no ordenadas que almacenan información en pares de clave-valor. Es como un diccionario o una libreta de contactos: cada &amp;ldquo;nombre&amp;rdquo; (clave) tiene un &amp;ldquo;teléfono&amp;rdquo; (valor) asociado.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Características:&lt;/strong&gt; Acceso muy rápido a los valores si conoces la clave, las claves son únicas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuándo usarlo:&lt;/strong&gt; Cuando necesitas asociar un valor específico a un nombre o identificador único (ej: datos de un usuario, propiedades de un producto).&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Declaración de un Objeto
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;usuario&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;nombre&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Ana&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;edad&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;ciudad&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Córdoba&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Acceder a valores por clave
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;usuario&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Salida: &amp;#34;Ana&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;usuario&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;edad&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; &lt;span class="c1"&gt;// Salida: 28
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Añadir o modificar propiedades
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;usuario&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ocupacion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Diseñadora&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;usuario&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Salida: { nombre: &amp;#34;Ana&amp;#34;, edad: 28, ciudad: &amp;#34;Córdoba&amp;#34;, ocupacion: &amp;#34;Diseñadora&amp;#34; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="set-colecciones-de-elementos-únicos"&gt;
Set: Colecciones de Elementos Únicos
&lt;a href="#set-colecciones-de-elementos-%c3%banicos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La estructura Set en JavaScript es una colección donde cada valor almacenado debe ser único. Si intentas añadir un valor que ya existe, el Set simplemente lo ignora.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Características:&lt;/strong&gt; No permite duplicados, el orden de inserción no está garantizado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuándo usarlo:&lt;/strong&gt; Cuando necesitas una lista de elementos sin repeticiones o para verificar rápidamente si un elemento ya existe en una colección.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;numerosConDuplicados&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;numerosUnicos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;numerosConDuplicados&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;numerosUnicos&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Salida: Set { 1, 2, 3, 4, 5 }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Añadir un elemento (si ya existe, no hace nada)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;numerosUnicos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;numerosUnicos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Esto no cambia el Set, 2 ya está
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Verificar si un elemento existe
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;numerosUnicos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;has&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Salida: true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;numerosUnicos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;has&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Salida: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-son-los-algoritmos"&gt;
¿Qué Son los Algoritmos?
&lt;a href="#qu%c3%a9-son-los-algoritmos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si las estructuras de datos son los &amp;ldquo;materiales&amp;rdquo; organizados, los Algoritmos son las &amp;ldquo;instrucciones&amp;rdquo; o la &amp;ldquo;receta&amp;rdquo; para manipular esos datos y resolver un problema. Un algoritmo es una secuencia finita y bien definida de pasos lógicos que se siguen para realizar una tarea específica.&lt;/p&gt;
&lt;p&gt;Un buen algoritmo debe ser:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Correcto:&lt;/strong&gt; Debe producir el resultado esperado para todas las entradas válidas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eficiente:&lt;/strong&gt; Debe usar la menor cantidad posible de recursos (tiempo de procesamiento, memoria).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="algoritmo-de-búsqueda-lineal"&gt;
Algoritmo de Búsqueda Lineal
&lt;a href="#algoritmo-de-b%c3%basqueda-lineal" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Uno de los algoritmos más sencillos es la Búsqueda Lineal. Consiste en recorrer una colección (como un Array) elemento por elemento, en orden, hasta encontrar el que buscamos o llegar al final de la colección.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cuándo usarlo:&lt;/strong&gt; Para colecciones pequeñas o cuando la colección no está ordenada.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eficiencia:&lt;/strong&gt; No es muy eficiente para colecciones muy grandes, ya que en el peor caso, debe revisar cada elemento.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;busquedaLineal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;objetivo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;objetivo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// ¡Encontrado! Devuelve el índice
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// No encontrado
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;productos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Laptop&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Mouse&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Teclado&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Monitor&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;busquedaLineal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;productos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Teclado&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Salida: 2 (posición)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;busquedaLineal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;productos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Parlantes&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Salida: -1 (no está)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="algoritmo-de-ordenamiento-bubble-sort-ordenamiento-de-burbuja"&gt;
Algoritmo de Ordenamiento: Bubble Sort (Ordenamiento de Burbuja)
&lt;a href="#algoritmo-de-ordenamiento-bubble-sort-ordenamiento-de-burbuja" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Los algoritmos de ordenamiento son fundamentales para organizar datos. El Bubble Sort es un ejemplo simple de entender, aunque no el más eficiente. Funciona comparando pares de elementos adyacentes y los intercambia si están en el orden incorrecto, repitiendo este proceso hasta que toda la lista esté ordenada.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cuándo usarlo:&lt;/strong&gt; Útil para entender el concepto de ordenamiento, pero no recomendado para grandes conjuntos de datos debido a su baja eficiencia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eficiencia:&lt;/strong&gt; Muy baja para listas grandes.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;bubbleSort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// En cada pasada, el elemento más grande &amp;#34;burbujea&amp;#34; al final
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Intercambiar elementos
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;temp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;temp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;numerosDesordenados&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bubbleSort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;numerosDesordenados&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Salida: [1, 2, 4, 5, 8]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-importancia-de-la-eficiencia-introducción-a-la-big-o-notation"&gt;
La Importancia de la Eficiencia: Introducción a la &amp;ldquo;Big O Notation&amp;rdquo;
&lt;a href="#la-importancia-de-la-eficiencia-introducci%c3%b3n-a-la-big-o-notation" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Entender la eficiencia de un algoritmo es clave. No basta con que funcione; debe funcionar bien, especialmente con grandes volúmenes de datos. Para describir esta eficiencia, usamos la &amp;ldquo;Notación Big O&amp;rdquo; (O grande).&lt;/p&gt;
&lt;p&gt;La Notación Big O nos da una idea de cómo el rendimiento de un algoritmo se escala a medida que el tamaño de los datos de entrada (n) aumenta. No mide el tiempo exacto en segundos, sino la tasa de crecimiento de las operaciones.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;O(n) - Complejidad Lineal:&lt;/strong&gt; Como la Búsqueda Lineal. El tiempo de ejecución crece directamente proporcional al número de elementos. Si duplicas los datos, el tiempo se duplica.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;O(n²) - Complejidad Cuadrática:&lt;/strong&gt; Como el Bubble Sort. El tiempo de ejecución crece mucho más rápido, al cuadrado del número de elementos. Si duplicas los datos, el tiempo se cuadruplica.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Entender esto te permitirá elegir algoritmos que mantengan tu aplicación rápida y escalable, evitando que se &amp;ldquo;arrastre&amp;rdquo; cuando tu base de usuarios o la cantidad de datos crezca.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión-la-base-de-todo-buen-código"&gt;
Conclusión: La Base de Todo Buen Código
&lt;a href="#conclusi%c3%b3n-la-base-de-todo-buen-c%c3%b3digo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Las estructuras de datos y los algoritmos son los bloques de construcción fundamentales sobre los que se asienta cualquier pieza de software. Dominar estos conceptos te permitirá escribir código más efectivo, más fácil de mantener y más robusto, independientemente del lenguaje de programación que utilices.&lt;/p&gt;
&lt;p&gt;Si te apasiona la programación y quieres consolidar tus bases, este es el lugar para empezar. Recuerda que la práctica es clave. ¡Intenta implementar estos ejemplos por tu cuenta y empieza a pensar en cómo se usan en los programas que utilizas a diario!&lt;/p&gt;
&lt;p&gt;Espero que este artículo te sea de gran utilidad. ¡No olvides ver el video en nuestro canal de YouTube para una explicación más dinámica y con ejemplos en vivo!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Si te gustó este contenido, dale Me Gusta, compártelo, y déjanos un comentario con tus estructuras de datos o algoritmos favoritos. ¡Nos vemos en el próximo!&lt;/p&gt;</description></item><item><title>Paradigmas de Programación: ¿Qué Son y Por Qué Son Clave para un Programador?</title><link>https://patojad.com.ar/post/2025/07/paradigmas-de-programaci%C3%B3n-qu%C3%A9-son-y-por-qu%C3%A9-son-clave-para-un-programador/</link><pubDate>Mon, 07 Jul 2025 09:31:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/07/paradigmas-de-programaci%C3%B3n-qu%C3%A9-son-y-por-qu%C3%A9-son-clave-para-un-programador/</guid><description>&lt;p&gt;¡Hola a todos, futuros y actuales programadores de PatoJAD! 👋 Hoy vamos a desentrañar un concepto fundamental en el mundo del software que a menudo se pasa por alto: los paradigmas de programación. No te asustes por el nombre; entenderlos te dará una ventaja enorme a la hora de escribir código más limpio, eficiente y elegir el lenguaje adecuado para cada tarea.&lt;/p&gt;
&lt;p&gt;Este artículo es el complemento perfecto de nuestro video &amp;ldquo;PARADIGMAS de Programación: ¿Qué Son y Por Qué Importan al Elegir un Lenguaje?&amp;rdquo; (¡asegúrate de verlo para una explicación visual con ejemplos!). Aquí profundizaremos en estos &amp;ldquo;estilos de pensamiento&amp;rdquo; que influyen en cómo resolvemos problemas con código.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-un-paradigma-de-programación"&gt;
¿Qué es un Paradigma de Programación?
&lt;a href="#qu%c3%a9-es-un-paradigma-de-programaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Imagina que quieres cocinar. Puedes seguir una receta paso a paso (como un chef tradicional), o podrías pensar en los ingredientes y sus transformaciones como piezas de un rompecabezas (como un chef molecular). Cada enfoque es una &amp;ldquo;filosofía&amp;rdquo; distinta para lograr el mismo objetivo.&lt;/p&gt;
&lt;p&gt;En programación, un paradigma es precisamente eso: una filosofía o estilo fundamental para organizar y estructurar el código. No es lo mismo que un lenguaje de programación (Python, por ejemplo, puede usarse en varios paradigmas), sino la forma en que pensamos y construimos nuestras soluciones. Entenderlos te ayuda a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Elegir el lenguaje adecuado:&lt;/strong&gt; Algunos lenguajes están diseñados con un paradigma en mente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diseñar mejor tu software:&lt;/strong&gt; Te da diferentes herramientas conceptuales para abordar problemas complejos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escribir código más legible y mantenible:&lt;/strong&gt; Un código que sigue un paradigma claro es más fácil de entender por otros (¡y por tu yo del futuro!).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="los-paradigmas-más-comunes-tu-caja-de-herramientas"&gt;
Los Paradigmas Más Comunes: Tu Caja de Herramientas
&lt;a href="#los-paradigmas-m%c3%a1s-comunes-tu-caja-de-herramientas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Aunque hay varios, nos centraremos en los más influyentes y los que verás más a menudo:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="programación-imperativa-el-paso-a-paso"&gt;
Programación Imperativa: El &amp;ldquo;Paso a Paso&amp;rdquo;
&lt;a href="#programaci%c3%b3n-imperativa-el-paso-a-paso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;El paradigma Imperativo es el más directo y quizás el que te resulte más familiar si recién empiezas. Aquí, le das a la computadora instrucciones explícitas, paso a paso, sobre CÓMO hacer algo. Es como darle una lista de tareas detallada.&lt;/p&gt;
&lt;p&gt;Características:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cambia el estado del programa (valores de variables).&lt;/li&gt;
&lt;li&gt;Usa sentencias de control de flujo (bucles for/while, condicionales if/else).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ejemplo (python):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;python&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Queremos sumar los números de una lista&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;numeros&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;suma&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="c1"&gt;# Inicializamos una variable de estado&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;numeros&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;# Iteramos y modificamos el estado en cada paso&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;suma&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;suma&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suma&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Salida: 15&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Aquí, le indicamos a la máquina exactamente cómo manipular la variable suma en cada iteración. La mayoría de los lenguajes permiten este estilo.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="programación-orientada-a-objetos-poo-el-mundo-de-los-objetos"&gt;
Programación Orientada a Objetos (POO): El Mundo de los &amp;ldquo;Objetos&amp;rdquo;
&lt;a href="#programaci%c3%b3n-orientada-a-objetos-poo-el-mundo-de-los-objetos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La Programación Orientada a Objetos (POO) es uno de los paradigmas más dominantes, especialmente en el desarrollo de software a gran escala. Aquí, modelamos nuestro código pensando en &amp;ldquo;objetos&amp;rdquo; que representan entidades del mundo real o conceptos abstractos. Cada objeto tiene:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Atributos:&lt;/strong&gt; Características o datos que lo describen (ej: un Coche tiene marca, modelo).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Métodos:&lt;/strong&gt; Acciones que el objeto puede realizar (ej: un Coche puede encender, acelerar).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conceptos Clave de la POO:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clases:&lt;/strong&gt; Son como los planos o plantillas para crear objetos (ej: el &amp;ldquo;molde&amp;rdquo; de Coche).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Objetos:&lt;/strong&gt; Son las instancias concretas de una clase (ej: &amp;ldquo;miToyota&amp;rdquo; es un objeto de la clase Coche).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Encapsulamiento:&lt;/strong&gt; Agrupar datos (atributos) y el código que opera sobre esos datos (métodos) en una sola unidad (el objeto), y ocultar los detalles internos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Herencia:&lt;/strong&gt; Una clase puede &amp;ldquo;heredar&amp;rdquo; propiedades y comportamientos de otra, permitiendo la reutilización de código.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Polimorfismo:&lt;/strong&gt; Diferentes objetos pueden responder al mismo mensaje de diferentes maneras, lo que hace el código más flexible.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ejemplo (Python):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;python&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Coche&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;# Definimos la clase &amp;#39;Coche&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;marca&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;modelo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;marca&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;marca&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;modelo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;modelo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;encendido&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;encender&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="c1"&gt;# Un método del objeto &amp;#39;Coche&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;encendido&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;marca&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;modelo&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; de color &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; ha sido encendido.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;mi_coche&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Coche&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Ford&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Ecosport&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Negro&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Creamos un objeto &amp;#39;mi_coche&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;mi_coche&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;encender&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;# Llamamos a un método del objeto&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Lenguajes como Java, C++, C#, y por supuesto Python, son fuertemente orientados a objetos.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="programación-funcional-todo-son-funciones-puras"&gt;
Programación Funcional: Todo Son Funciones Puras
&lt;a href="#programaci%c3%b3n-funcional-todo-son-funciones-puras" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La Programación Funcional es un paradigma que ha ganado mucha tracción, especialmente en áreas como el procesamiento de datos y la programación concurrente. Se basa en el concepto de funciones puras (similares a las funciones matemáticas) que:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Siempre producen el mismo resultado para las mismas entradas.&lt;/li&gt;
&lt;li&gt;No tienen &amp;ldquo;efectos secundarios&amp;rdquo; (es decir, no modifican datos fuera de la función ni dependen de ellos).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Características:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Énfasis en la inmutabilidad (los datos no cambian una vez creados).&lt;/li&gt;
&lt;li&gt;Uso de funciones como &amp;ldquo;ciudadanos de primera clase&amp;rdquo; (pueden pasarse como argumentos, retornarse desde otras funciones).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Evita el estado mutable y las sentencias imperativas.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;python&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Suma funcional de una lista usando &amp;#39;reduce&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;functools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;reduce&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;numeros&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# La función lambda es una función pura que suma dos elementos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;suma_funcional&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numeros&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suma_funcional&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Salida: 15&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Aquí, la idea es transformar datos sin cambiar el estado. Lenguajes como Haskell son puramente funcionales, pero Python y JavaScript también incorporan muchas características funcionales.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-importa-entender-los-paradigmas"&gt;
¿Por Qué Importa Entender los Paradigmas?
&lt;a href="#por-qu%c3%a9-importa-entender-los-paradigmas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como arquitecto de software, puedo decirte que no hay un paradigma &amp;ldquo;mejor&amp;rdquo; universal. La mayoría de los lenguajes de programación modernos son multiparadigma, lo que significa que puedes aplicar diferentes estilos de pensamiento dentro del mismo lenguaje (como Python o JavaScript).&lt;/p&gt;
&lt;p&gt;Entender los paradigmas te permite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tomar decisiones de diseño más informadas: Saber cuándo un enfoque orientado a objetos es mejor que uno funcional (o viceversa) para un problema específico.&lt;/li&gt;
&lt;li&gt;Leer y entender mejor el código ajeno: Identificar el paradigma te ayuda a comprender la lógica y estructura de proyectos existentes.&lt;/li&gt;
&lt;li&gt;Escribir código más robusto y fácil de mantener: Un diseño basado en paradigmas claros reduce errores y facilita futuras modificaciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Mi consejo es:&lt;/strong&gt; ¡no te cases con uno solo! Explora, entiende los conceptos y usa el paradigma que mejor se adapte al problema que estás resolviendo.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;Espero que esta inmersión en los paradigmas de programación te haya sido útil. Son la base sobre la que se construyen muchas arquitecturas de software modernas.&lt;/p&gt;
&lt;p&gt;Si te gustó este artículo y quieres seguir aprendiendo sobre programación, Linux y software libre, ¡no olvides suscribirte a nuestro canal de YouTube y dejarnos tus comentarios con tus paradigmas favoritos!&lt;/p&gt;</description></item><item><title>Linux para Programadores: Configura tu Entorno de Desarrollo IDEAL</title><link>https://patojad.com.ar/post/2025/07/linux-para-programadores-configura-tu-entorno-de-desarrollo-ideal/</link><pubDate>Tue, 01 Jul 2025 09:27:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/07/linux-para-programadores-configura-tu-entorno-de-desarrollo-ideal/</guid><description>&lt;p&gt;¡Hola, comunidad de PatoJAD! 👋 Si sos programador, o estás pensando en unirte a este fascinante mundo, es muy probable que hayas escuchado que Linux es el sistema operativo preferido por una gran parte de la comunidad de desarrolladores. Pero, ¿por qué esta preferencia y cómo podés configurar tu propia estación de trabajo Linux para convertirla en un verdadero centro de poder para el desarrollo de software?&lt;/p&gt;
&lt;p&gt;Este artículo es el complemento perfecto de nuestro video &lt;strong&gt;&amp;ldquo;Linux para PROGRAMADORES: Configura tu ENTORNO de Desarrollo IDEAL&amp;rdquo;&lt;/strong&gt;. Aquí, vamos a desglosar los pasos y herramientas esenciales para que tu experiencia de programación en Linux sea fluida y productiva.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-linux-es-el-rey-para-los-desarrolladores"&gt;
¿Por Qué Linux es el Rey para los Desarrolladores?
&lt;a href="#por-qu%c3%a9-linux-es-el-rey-para-los-desarrolladores" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La popularidad de Linux entre los programadores no es casualidad. Sus ventajas son claras:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Libertad y Control:&lt;/strong&gt; Al ser software libre y de código abierto, Linux te da un control total sobre tu sistema. Podés personalizarlo hasta el último detalle, adaptar herramientas y solucionar problemas con una transparencia total.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estabilidad y Seguridad:&lt;/strong&gt; Linux es conocido por su robustez. Es menos propenso a virus y software malicioso, y sus actualizaciones suelen ser estables, lo que reduce las interrupciones en tu flujo de trabajo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entorno Nativo para Desarrollo:&lt;/strong&gt; La mayoría de las herramientas de desarrollo, librerías y servidores web están diseñados para funcionar de forma nativa en Linux. Esto significa menos problemas de compatibilidad y un rendimiento óptimo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comunidad Activa:&lt;/strong&gt; Contar con una comunidad global enorme significa que siempre encontrarás ayuda, recursos y soluciones a tus problemas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="elige-tu-distribución-linux-un-primer-paso-crucial"&gt;
Elige tu Distribución Linux: Un Primer Paso Crucial
&lt;a href="#elige-tu-distribuci%c3%b3n-linux-un-primer-paso-crucial" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Antes de empezar, necesitas una distribución &lt;strong&gt;Linux&lt;/strong&gt;. Si sos nuevo, te recomiendo algunas opciones amigables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ubuntu:&lt;/strong&gt; Probablemente la más popular y con la comunidad más grande. Es fácil de usar y tiene una gran cantidad de software disponible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linux Mint:&lt;/strong&gt; Basada en Ubuntu, es conocida por su interfaz de usuario intuitiva y familiar para usuarios que vienen de otros sistemas operativos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pop!_OS:&lt;/strong&gt; Desarrollada por System76, está optimizada para programadores y gamers, ofreciendo una excelente experiencia &amp;ldquo;fuera de la caja&amp;rdquo; para trabajar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CachyOS:&lt;/strong&gt; Una distribución basada en &lt;strong&gt;Arch Linux&lt;/strong&gt;, ideal para quienes buscan un sistema ligero y altamente personalizable. Es perfecta si ya tenés algo de experiencia con Linux y querés un control total sobre tu entorno.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cualquiera de estas opciones te dará una base sólida para empezar.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="configurando-tu-estación-de-trabajo-pasos-esenciales"&gt;
Configurando tu Estación de Trabajo: Pasos Esenciales
&lt;a href="#configurando-tu-estaci%c3%b3n-de-trabajo-pasos-esenciales" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que tengas tu distribución Linux instalada, es hora de prepararla para programar:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="actualiza-tu-sistema"&gt;
Actualiza tu Sistema:
&lt;a href="#actualiza-tu-sistema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Es vital mantener tu sistema al día. Abre tu terminal (normalmente con Ctrl + Alt + T) y ejecuta estos comandos:&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="para-ubuntu-y-distribuciones-basadas-en-debian"&gt;
Para Ubuntu y distribuciones basadas en Debian:
&lt;a href="#para-ubuntu-y-distribuciones-basadas-en-debian" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt upgrade -y&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="para-arch-linux-y-distribuciones-basadas-en-arch-como-cachyos"&gt;
Para Arch Linux y distribuciones basadas en Arch (como CachyOS):
&lt;a href="#para-arch-linux-y-distribuciones-basadas-en-arch-como-cachyos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Syu&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="para-fedora-y-distribuciones-basadas-en-red-hat"&gt;
Para Fedora y distribuciones basadas en Red Hat:
&lt;a href="#para-fedora-y-distribuciones-basadas-en-red-hat" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf upgrade --refresh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Esto asegura que todos tus paquetes estén en sus últimas versiones.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instala-herramientas-básicas-de-desarrollo"&gt;
Instala Herramientas Básicas de Desarrollo:
&lt;a href="#instala-herramientas-b%c3%a1sicas-de-desarrollo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Algunos paquetes son fundamentales para compilar y manejar archivos.&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="para-ubuntu-y-distribuciones-basadas-en-debian-1"&gt;
Para Ubuntu y distribuciones basadas en Debian:
&lt;a href="#para-ubuntu-y-distribuciones-basadas-en-debian-1" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install build-essential curl wget -y&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="para-arch-linux-y-distribuciones-basadas-en-arch-como-cachyos-1"&gt;
Para Arch Linux y distribuciones basadas en Arch (como CachyOS):
&lt;a href="#para-arch-linux-y-distribuciones-basadas-en-arch-como-cachyos-1" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S base-devel curl wget&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="para-fedora-y-distribuciones-basadas-en-red-hat-1"&gt;
Para Fedora y distribuciones basadas en Red Hat:
&lt;a href="#para-fedora-y-distribuciones-basadas-en-red-hat-1" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf groupinstall &lt;span class="s2"&gt;&amp;#34;Development Tools&amp;#34;&lt;/span&gt; -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install curl wget -y&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;build-essential&lt;/code&gt; incluye compiladores y librerías necesarias, mientras que &lt;code&gt;curl&lt;/code&gt; y &lt;code&gt;wget&lt;/code&gt; son excelentes para descargar archivos desde la web.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-terminal-tu-mejor-amiga-en-linux"&gt;
La Terminal: Tu Mejor Amiga en Linux
&lt;a href="#la-terminal-tu-mejor-amiga-en-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La terminal de Linux puede parecer intimidante al principio, pero es la herramienta más poderosa que tienes como desarrollador. Dominarla te dará una ventaja enorme. Algunos comandos esenciales que usarás a diario:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ls&lt;/code&gt;: Lista el contenido de un directorio.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cd [directorio]&lt;/code&gt;: Cambia de directorio.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pwd&lt;/code&gt;: Muestra la ruta de tu directorio actual.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mkdir [nombre]&lt;/code&gt;: Crea una nueva carpeta.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rm [archivo/carpeta]&lt;/code&gt;: Elimina archivos o carpetas (¡usar con precaución!).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;man [comando]&lt;/code&gt;: Muestra el manual de cualquier comando.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Con el tiempo, aprenderás a personalizarla con alias o shells como Zsh para hacerla aún más eficiente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="editores-de-código-e-ides-dónde-escribirás-tu-magia"&gt;
Editores de Código e IDEs: Dónde Escribirás tu Magia
&lt;a href="#editores-de-c%c3%b3digo-e-ides-d%c3%b3nde-escribir%c3%a1s-tu-magia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Elegir tu editor de código es una decisión personal, pero hay opciones excelentes para Linux:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Studio Code (VS Code)&lt;/strong&gt;: Sin duda, el editor más popular. Es ligero, rápido, tiene miles de extensiones para cualquier lenguaje o herramienta, y es totalmente gratuito. Lo podés descargar directamente de su sitio web o instalarlo desde el gestor de paquetes de tu distribución (como snap en Ubuntu).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vim / Neovim o Emacs&lt;/strong&gt;: Si buscas máxima eficiencia y no te asusta una curva de aprendizaje pronunciada, estos editores basados en terminal son increíblemente potentes una vez dominados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IDEs (Entornos de Desarrollo Integrados)&lt;/strong&gt;: Para lenguajes específicos, como Java (IntelliJ IDEA) o Python (PyCharm), los IDEs de JetBrains ofrecen una integración profunda y herramientas poderosas, y la mayoría tienen versiones nativas para Linux.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="control-de-versiones-con-git-un-imprescindible"&gt;
Control de Versiones con Git: Un IMPRESCINDIBLE
&lt;a href="#control-de-versiones-con-git-un-imprescindible" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Git es la herramienta fundamental para el control de versiones de tu código. Es crucial para rastrear cambios, colaborar con otros desarrolladores y revertir versiones si algo sale mal.&lt;/p&gt;
&lt;p&gt;Para instalarlo:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="en-ubuntu-y-distribuciones-basadas-en-debian"&gt;
En Ubuntu y distribuciones basadas en Debian:
&lt;a href="#en-ubuntu-y-distribuciones-basadas-en-debian" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install git -y&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="en-arch-linux-y-distribuciones-basadas-en-arch-como-cachyos"&gt;
En Arch Linux y distribuciones basadas en Arch (como CachyOS):
&lt;a href="#en-arch-linux-y-distribuciones-basadas-en-arch-como-cachyos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S git&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="en-fedora-y-distribuciones-basadas-en-red-hat"&gt;
En Fedora y distribuciones basadas en Red Hat:
&lt;a href="#en-fedora-y-distribuciones-basadas-en-red-hat" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install git -y&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Luego, configura tu identidad (esto lo harás solo una vez):&lt;/p&gt;
&lt;p&gt;Bash&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.name &lt;span class="s2"&gt;&amp;#34;Tu Nombre&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.email &lt;span class="s2"&gt;&amp;#34;tu_email@ejemplo.com&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;¡Dominar Git es un paso gigante para cualquier programador!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="contenedores-con-docker-consistencia-en-tu-desarrollo"&gt;
Contenedores con Docker: Consistencia en tu Desarrollo
&lt;a href="#contenedores-con-docker-consistencia-en-tu-desarrollo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para proyectos más complejos o para asegurar que tu entorno de desarrollo sea idéntico al de producción (o al de tus compañeros de equipo), Docker es una herramienta revolucionaria. Te permite empaquetar tu aplicación y todas sus dependencias en &amp;ldquo;contenedores&amp;rdquo; ligeros y portátiles.&lt;/p&gt;
&lt;p&gt;La instalación de Docker puede variar ligeramente según tu distribución. Te recomiendo &lt;a href="https://docs.docker.com/engine/install/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
seguir la documentación oficial de Docker
&lt;/a&gt; para tu sistema, ya que los pasos pueden ser específicos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="consejos-de-productividad-y-optimización-en-linux"&gt;
Consejos de Productividad y Optimización en Linux
&lt;a href="#consejos-de-productividad-y-optimizaci%c3%b3n-en-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para exprimir al máximo tu entorno de desarrollo Linux:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Atajos de Teclado:&lt;/strong&gt; Aprende los atajos de tu editor de código y de tu sistema operativo. Te ahorrarán horas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitores Múltiples:&lt;/strong&gt; Si es posible, un segundo monitor transforma la productividad, permitiéndote tener código, terminal y navegador visibles a la vez.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatización con Scripts:&lt;/strong&gt; Aprende a escribir pequeños scripts de shell para automatizar tareas repetitivas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantén tu Sistema Limpio:&lt;/strong&gt; Realiza limpieza de paquetes innecesarios regularmente (sudo apt autoremove).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Configurar un entorno de desarrollo en Linux es una inversión que vale la pena para cualquier programador. Te brinda un control sin igual, acceso a herramientas potentes y la libertad del software libre.&lt;/p&gt;
&lt;p&gt;Esperamos que esta guía te sirva para dar los primeros pasos o para optimizar tu estación de trabajo actual. ¡No olvides ver el video en nuestro canal de YouTube para una demostración práctica!&lt;/p&gt;
&lt;p&gt;Si te gustó este artículo, dale Me Gusta, compártelo, y déjanos un comentario con tus herramientas favoritas en Linux o cualquier duda que tengas. ¡Nos vemos en el próximo!&lt;/p&gt;</description></item><item><title>Transforma tu GNOME: Guía Completa para Instalar el Tema macOS Tahoe</title><link>https://patojad.com.ar/post/2025/06/transforma-tu-gnome-gu%C3%ADa-completa-para-instalar-el-tema-macos-tahoe/</link><pubDate>Thu, 26 Jun 2025 10:01:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/06/transforma-tu-gnome-gu%C3%ADa-completa-para-instalar-el-tema-macos-tahoe/</guid><description>&lt;p&gt;¿Eres usuario de Linux y te encanta la estética de macOS? ¡Estás de suerte! El tema GNOME macOS Tahoe te permite llevar el elegante diseño de macOS Tahoe directamente a tu escritorio GNOME, ofreciendo una experiencia visual fresca y moderna. En este artículo, te explicaremos qué es este tema y cómo puedes instalarlo paso a paso.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-el-tema-gnome-macos-tahoe"&gt;
¿Qué es el Tema GNOME macOS Tahoe?
&lt;a href="#qu%c3%a9-es-el-tema-gnome-macos-tahoe" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Z5GhgXFp/gnome-macos-tahoe-v0-81z9wfmk349f1.webp" alt="GNOME macOS Tahoe" title="GNOME macOS Tahoe"
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;GNOME macOS Tahoe&lt;/strong&gt; es un tema visual diseñado específicamente para escritorios &lt;strong&gt;GTK&lt;/strong&gt; de &lt;strong&gt;Linux&lt;/strong&gt;, especialmente optimizado para GNOME. Su objetivo principal es replicar la apariencia limpia y sofisticada del sistema operativo &lt;strong&gt;macOS Tahoe&lt;/strong&gt;, integrándose armoniosamente con los elementos de tu entorno GNOME. Esto significa que los componentes de tu interfaz, como ventanas, botones y barras, adoptarán el estilo de macOS, dándole un aire completamente renovado a tu sistema.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación-paso-a-paso-del-tema-gnome-macos-tahoe"&gt;
Instalación Paso a Paso del Tema GNOME macOS Tahoe
&lt;a href="#instalaci%c3%b3n-paso-a-paso-del-tema-gnome-macos-tahoe" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La instalación de este tema es sencilla y se realiza directamente desde el código fuente del repositorio oficial. ¡Sigue estos pasos! Recuerda que debes tener instalado &lt;code&gt;git&lt;/code&gt;, &lt;code&gt;gnome-tweaks&lt;/code&gt;, de ser posible las extensiones recomendadas y tener permisos de administrador en tu sistema para completar la instalación.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-desde-el-código-fuente"&gt;
Instalar desde el Código Fuente
&lt;a href="#instalar-desde-el-c%c3%b3digo-fuente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Para empezar, necesitas clonar el repositorio del tema en tu sistema. Abre tu terminal y ejecuta los siguientes comandos:&lt;/p&gt;
&lt;p&gt;Clonar el repositorio:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/kayozxo/GNOME-macOS-Tahoe&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Este comando descargará todos los archivos del tema en una nueva carpeta llamada GNOME-macOS-Tahoe en tu directorio actual.&lt;/p&gt;
&lt;p&gt;Acceder al directorio del tema:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; GNOME-macOS-Tahoe&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Esto te llevará al directorio donde se encuentran los archivos del tema.&lt;/p&gt;
&lt;p&gt;Ejecutar el script de instalación:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./install.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Este script automatizará el proceso de colocar los archivos del tema en las ubicaciones correctas de tu sistema.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="configurar-el-tema"&gt;
Configurar el Tema
&lt;a href="#configurar-el-tema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Una vez que el tema esté instalado en tu sistema, necesitas activarlo. El proceso implica el uso de una aplicación llamada &amp;ldquo;Evolve&amp;rdquo; que se descargará automáticamente durante la instalación.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Encuentra la aplicación &amp;ldquo;Evolve&amp;rdquo;:&lt;/strong&gt; Dirígete a tu carpeta de Descargas (o la ubicación donde se haya guardado el instalador) y busca una carpeta llamada &amp;ldquo;Evolve&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Abre la aplicación &amp;ldquo;Evolve&amp;rdquo;:&lt;/strong&gt; Ejecuta la aplicación &amp;ldquo;Evolve&amp;rdquo;. Esta herramienta te permitirá gestionar y aplicar temas GTK en tu escritorio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selecciona el tema &amp;ldquo;macOS-Tahoe&amp;rdquo;:&lt;/strong&gt; Dentro de la aplicación &amp;ldquo;Evolve&amp;rdquo;, verás opciones para seleccionar temas. Asegúrate de elegir &amp;ldquo;macOS-Tahoe&amp;rdquo; tanto para GTK 3.0 Theme como para GTK 4.0 Theme.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="finalizar-la-instalación"&gt;
Finalizar la Instalación
&lt;a href="#finalizar-la-instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://preview.redd.it/gnome-macos-tahoe-v0-0julzcyr349f1.png?width=1080&amp;amp;crop=smart&amp;amp;auto=webp&amp;amp;s=e112049ee7a242ec76b99f5fbe972d379522eb27" alt="Launcher" title="Launcher"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Para que los cambios surtan efecto, es necesario reiniciar tu sesión o tu sistema.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Reinicia tu sistema o cierra y vuelve a iniciar sesión:&lt;/strong&gt; Simplemente, reinicia tu computadora o cierra tu sesión de usuario y vuelve a iniciarla. Al hacerlo, tu escritorio GNOME debería mostrar ahora el aspecto de macOS Tahoe.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cursor-e-iconos"&gt;
Cursor e Iconos
&lt;a href="#cursor-e-iconos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;OPCIONAL: Si deseas completar la experiencia visual, puedes instalar los iconos y cursores de macOS Tahoe. Aquí te mostramos cómo hacerlo:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Icon Theme&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/vinceliuice/WhiteSur-icon-theme.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; WhiteSur-icon-theme
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./install.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Cursor Theme&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/vinceliuice/WhiteSur-cursors.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; WhiteSur-cursors
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./install.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="extensiones-de-gnome-shell-recomendadas"&gt;
Extensiones de GNOME Shell Recomendadas
&lt;a href="#extensiones-de-gnome-shell-recomendadas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://preview.redd.it/gnome-macos-tahoe-v0-0w01d5qm349f1.png?width=1080&amp;amp;crop=smart&amp;amp;auto=webp&amp;amp;s=fd3f2abb530b6924ee81d3e10ad4a3db155c98fe" alt="GNOME macOS Tahoe" title="GNOME macOS Tahoe"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Para complementar y mejorar aún más la experiencia visual de macOS Tahoe en GNOME, el desarrollador del tema recomienda el uso de las siguientes extensiones de GNOME Shell:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://extensions.gnome.org/extension/6580/open-bar/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Open Bar
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://extensions.gnome.org/extension/3193/blur-my-shell/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Blur My Shell
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://extensions.gnome.org/extension/307/dash-to-dock/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Dash to Dock
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://extensions.gnome.org/extension/4158/gnome-40-ui-improvements/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Gnome 4x UI Improvements
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://extensions.gnome.org/extension/5090/space-bar/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Space bar
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://extensions.gnome.org/extension/7065/tiling-shell/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Tiling Shell
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://extensions.gnome.org/extension/19/user-themes/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
User Themes
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://extensions.gnome.org/extension/1460/vitals/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Vitals
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Puedes encontrar e instalar estas extensiones desde el sitio web oficial de GNOME Extensions o utilizando la aplicación &amp;ldquo;Extensiones&amp;rdquo; en tu sistema.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="soporte-y-contribución"&gt;
Soporte y Contribución
&lt;a href="#soporte-y-contribuci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si encuentras algún problema durante la instalación o tienes preguntas, puedes visitar el repositorio oficial en GitHub y abrir una &amp;ldquo;issue&amp;rdquo;. También puedes dejar un comentario en &lt;a href="https://www.reddit.com/r/gnome/s/tOO7RBS37X" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-reddit-alien" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
la publicación de Reddit del desarrollador
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Si te gusta el trabajo del desarrollador y quieres apoyarlo, considera la posibilidad de &amp;ldquo;comprarle un café&amp;rdquo; a través de &lt;a href="https://buymeacoffee.com/kayozxo" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
buymeacoffee.com/kayozxo
&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Fuente: &lt;a href="https://github.com/kayozxo/GNOME-macOS-Tahoe" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Repositorio GNOME macOS Tahoe en GitHub
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Nace X Libre: Un nuevo capítulo para el veterano servidor Xorg</title><link>https://patojad.com.ar/post/2025/06/nace-x-libre-un-nuevo-cap%C3%ADtulo-para-el-veterano-servidor-xorg/</link><pubDate>Wed, 25 Jun 2025 09:01:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/06/nace-x-libre-un-nuevo-cap%C3%ADtulo-para-el-veterano-servidor-xorg/</guid><description>&lt;p&gt;Una noticia ha sacudido la comunidad de desarrollo de software libre: la creación de &lt;strong&gt;X Libre&lt;/strong&gt;, una bifurcación de &lt;strong&gt;Xorg&lt;/strong&gt;, el histórico servidor &lt;strong&gt;X11&lt;/strong&gt;. Liderado por &lt;strong&gt;Enrico Weigelt&lt;/strong&gt;, el desarrollador más activo de Xorg en 2024, esta nueva iniciativa promete revitalizar un proyecto que muchos consideraban estancado.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-una-bifurcación-el-trasfondo-de-la-decisión"&gt;
¿Por qué una bifurcación? El trasfondo de la decisión
&lt;a href="#por-qu%c3%a9-una-bifurcaci%c3%b3n-el-trasfondo-de-la-decisi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La decisión de bifurcar Xorg no fue tomada a la ligera y se basa en varias razones clave expuestas por Weigelt y su equipo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Abandono del proyecto Xorg&lt;/strong&gt;: Se denuncia que gran parte del grupo actual de Xorg busca abandonar el proyecto y bloquear nuevas contribuciones o características importantes. Se especula que esto responde a intereses corporativos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Falta de lanzamientos&lt;/strong&gt;: A pesar de tener cerca de 3.000 &amp;ldquo;commits&amp;rdquo; y cientos de solicitudes de fusión abiertas, Xorg no ha logrado realizar lanzamientos significativos en años, dejando un vasto trabajo sin integrar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deuda técnica acumulada&lt;/strong&gt;: Aunque Xorg arrastra una considerable deuda técnica, los esfuerzos de X Libre se centrarán en la limpieza y optimización del código existente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Problemas organizacionales y de discriminación&lt;/strong&gt;: El proyecto Xorg ha enfrentado dificultades dentro de la organización Free Desktop, incluyendo acusaciones de problemas de libertad de expresión y discriminación por puntos de vista políticos. X Libre, por su parte, se compromete a no tener políticas de diversidad, equidad e inclusión (DEI), buscando dar la bienvenida a todos los colaboradores sin importar sus opiniones políticas, origen, raza, sexo o edad.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="las-novedades-que-trae-x-libre"&gt;
Las novedades que trae X Libre
&lt;a href="#las-novedades-que-trae-x-libre" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El primer lanzamiento de X Libre se espera para finales de junio y promete traer consigo características que no se veían en Xorg en más de una década:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extensión de espacio de nombres X (X namespace extension)&lt;/strong&gt;: Una propuesta innovadora para mejorar la seguridad al aislar clientes de diferentes dominios de seguridad y contenedores en espacios de nombres X11 separados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portabilidad de X Nest a XCB&lt;/strong&gt;: Una actualización importante que elimina las dependencias de la antigua XLB.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Directorios de controladores por ABI&lt;/strong&gt;: Una característica que permitirá a las distribuciones instalar múltiples ABIs simultáneamente, facilitando actualizaciones más fluidas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limpieza extensiva de la deuda técnica&lt;/strong&gt;: Gran parte de los nuevos &amp;ldquo;commits&amp;rdquo; estarán dedicados a sanear la base de código.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="un-proyecto-independiente-y-abierto"&gt;
Un proyecto independiente y abierto
&lt;a href="#un-proyecto-independiente-y-abierto" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;X Libre&lt;/strong&gt; se posiciona como un proyecto independiente, sin afiliaciones con grandes empresas tecnológicas, filiales o grupos activistas políticos. Su compromiso es crear una comunidad abierta y acogedora para cualquier persona interesada en mejorar X, sin importar sus características personales o puntos de vista.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-futuro-de-xorg-en-la-era-de-wayland"&gt;
El futuro de Xorg en la era de Wayland
&lt;a href="#el-futuro-de-xorg-en-la-era-de-wayland" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A pesar de que muchas distribuciones de &lt;strong&gt;Linux&lt;/strong&gt; han comenzado a migrar a &lt;strong&gt;Wayland&lt;/strong&gt;, Xorg sigue siendo una pieza fundamental para una gran cantidad de software y para numerosos usuarios. La aparición de &lt;strong&gt;X Libre&lt;/strong&gt; ofrece una nueva esperanza para aquellos que prefieren la arquitectura del servidor X11, prometiendo un futuro más activo y con características actualizadas.&lt;/p&gt;
&lt;p&gt;Se espera que el primer lanzamiento de &lt;strong&gt;X Libre&lt;/strong&gt; sea una versión beta, debido a la magnitud de los cambios implementados. La comunidad estará atenta al desarrollo de este ambicioso proyecto que busca revitalizar un componente clave del ecosistema &lt;strong&gt;GNU/Linux&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;¿Qué te parece esta iniciativa? ¿Crees que X Libre logrará darle un nuevo impulso a Xorg frente a Wayland? ¡Comparte tus opiniones en los comentarios!&lt;/p&gt;</description></item><item><title>Cómo Empezar a Programar Desde Cero: Tu Guía Definitiva para Dar los Primeros Pasos</title><link>https://patojad.com.ar/post/2025/06/c%C3%B3mo-empezar-a-programar-desde-cero-tu-gu%C3%ADa-definitiva-para-dar-los-primeros-pasos/</link><pubDate>Tue, 24 Jun 2025 09:31:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/06/c%C3%B3mo-empezar-a-programar-desde-cero-tu-gu%C3%ADa-definitiva-para-dar-los-primeros-pasos/</guid><description>&lt;p&gt;Hola a todos, futuros creadores digitales! 👋 Si estás leyendo esto, es muy probable que la idea de aprender a programar te haya picado la curiosidad. Quizás te sientes abrumado por la cantidad de información, o no sabes por dónde empezar. ¡No te preocupes! En PatoJAD, estamos aquí para guiarte.&lt;/p&gt;
&lt;p&gt;Este artículo es el complemento perfecto de nuestro video &lt;strong&gt;&amp;ldquo;Cómo EMPEZAR a Programar desde CERO: Guía Completa para PRINCIPIANTES&amp;rdquo;&lt;/strong&gt; (¡no olvides verlo para una experiencia completa!). Aquí, profundizaremos en los conceptos clave y te daremos los recursos que necesitas para dar tus primeros pasos con confianza.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-la-programación-y-por-qué-es-tan-importante-hoy"&gt;
¿Qué es la Programación y Por Qué es Tan Importante Hoy?
&lt;a href="#qu%c3%a9-es-la-programaci%c3%b3n-y-por-qu%c3%a9-es-tan-importante-hoy" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En esencia, la programación es el arte y la ciencia de darle instrucciones a una computadora para que realice una tarea específica. Piensa en ello como si estuvieras escribiendo una receta muy detallada para un chef que solo entiende un idioma muy específico (el lenguaje de programación).&lt;/p&gt;
&lt;p&gt;Hoy en día, la programación no es solo para &amp;ldquo;expertos en computadoras&amp;rdquo;. Es una &lt;strong&gt;habilidad fundamental&lt;/strong&gt; que impulsa casi todo lo que nos rodea: desde tu smartphone, las aplicaciones que usas a diario, los sitios web que visitas, hasta la inteligencia artificial y los vehículos autónomos. Aprender a programar te abre un mundo de oportunidades laborales, te ayuda a desarrollar el pensamiento lógico y te da el poder de crear.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-mentalidad-de-un-programador-principiante-paciencia-y-persistencia"&gt;
La Mentalidad de un Programador Principiante: Paciencia y Persistencia
&lt;a href="#la-mentalidad-de-un-programador-principiante-paciencia-y-persistencia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Antes de sumergirnos en el código, hablemos de la mentalidad. La programación puede parecer desafiante al principio, y es normal sentirse frustrado cuando algo no funciona. Sin embargo, los programadores exitosos comparten dos cualidades clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Paciencia&lt;/strong&gt;: El código rara vez funciona a la primera. Aprender a &amp;ldquo;depurar&amp;rdquo; (encontrar y corregir errores) es una habilidad crucial.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Persistencia&lt;/strong&gt;: Cada error es una oportunidad para aprender. No te rindas. ¡Cada línea de código que funciona es una pequeña victoria!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Adoptar esta mentalidad te ayudará a superar los obstáculos iniciales y disfrutar del proceso de aprendizaje.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="primeros-pasos-esenciales-elige-tu-primer-lenguaje-de-programación"&gt;
Primeros Pasos Esenciales: Elige Tu Primer Lenguaje de Programación
&lt;a href="#primeros-pasos-esenciales-elige-tu-primer-lenguaje-de-programaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Con cientos de lenguajes de programación disponibles, ¿cuál elegir para empezar? Nuestra recomendación para principiantes son dos gigantes amigables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt;: Conocido por su sintaxis clara y legible (casi como el inglés), Python es increíblemente versátil. Es ideal para el desarrollo web, ciencia de datos, inteligencia artificial, automatización y mucho más. Es perfecto para entender los conceptos fundamentales de la programación sin enredarse en una sintaxis complicada.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;: Si tu interés principal es el desarrollo web (crear sitios y aplicaciones interactivas que corren en el navegador), JavaScript es imprescindible. Es el lenguaje que da vida a la web y es extremadamente popular.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No necesitas aprenderlos todos a la vez. Elige uno, domina lo básico, y luego, si quieres, puedes explorar otros.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="recursos-gratuitos-para-aprender-a-programar"&gt;
Recursos Gratuitos para Aprender a Programar
&lt;a href="#recursos-gratuitos-para-aprender-a-programar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La buena noticia es que no necesitas gastar una fortuna para aprender a programar. Hay una vasta cantidad de recursos gratuitos disponibles:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="plataformas-de-aprendizaje-online"&gt;
Plataformas de aprendizaje online:
&lt;a href="#plataformas-de-aprendizaje-online" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;FreeCodeCamp&lt;/strong&gt;: Ofrece currículos completos y proyectos para construir tu portafolio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Codecademy&lt;/strong&gt;: Lecciones interactivas para aprender lenguajes populares.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Odin Project&lt;/strong&gt;: Un currículo de código abierto para desarrolladores web full-stack.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentación oficial&lt;/strong&gt;: Aunque al principio puede ser densa, es la fuente más precisa de información sobre cualquier lenguaje o herramienta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comunidades online&lt;/strong&gt;: Participar en foros, grupos de Discord, o sitios como Stack Overflow es fundamental para resolver dudas y aprender de otros.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="tu-primer-hola-mundo-un-hito-crucial"&gt;
Tu Primer &amp;ldquo;Hola Mundo&amp;rdquo;: Un Hito Crucial
&lt;a href="#tu-primer-hola-mundo-un-hito-crucial" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En Python, se ve así:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;python&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Hola Mundo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;En JavaScript, en la consola del navegador, se ve así:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Hola Mundo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;¡Felicidades! Cada pequeña victoria, como esta, te acerca más a tu objetivo de convertirte en programador.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-sigue-después-de-dar-tus-primeros-pasos"&gt;
¿Qué Sigue Después de Dar Tus Primeros Pasos?
&lt;a href="#qu%c3%a9-sigue-despu%c3%a9s-de-dar-tus-primeros-pasos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que te sientas cómodo con lo básico y hayas escrito tu primer &amp;ldquo;Hola Mundo&amp;rdquo;, el siguiente paso es la práctica constante.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Construye proyectos pequeños&lt;/strong&gt;: Aplica lo que aprendes creando programas sencillos. ¡La práctica hace al maestro!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Explora los editores de código&lt;/strong&gt;: En mi blog, tengo un artículo sobre &amp;ldquo;Los mejores editores de código para principiantes&amp;rdquo; que te ayudará a elegir la herramienta perfecta para escribir tu código.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No tengas miedo de los errores&lt;/strong&gt;: Son parte del aprendizaje. Aprende a usar Google para encontrar soluciones, ¡es una habilidad clave en programación!&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Esperamos que esta guía te haya dado la claridad y la motivación que necesitas para empezar a programar desde cero. Recuerda que este es un viaje, y cada línea de código te acerca más a dominar esta fascinante habilidad.&lt;/p&gt;
&lt;p&gt;Si te gustó este artículo y quieres ver más contenido sobre programación, Linux y software libre, ¡no olvides suscribirte a nuestro canal de YouTube y dejarnos tus comentarios!&lt;/p&gt;</description></item><item><title>Carga Inalámbrica a Distancia: ¿El Fin de los Cables en 2025?</title><link>https://patojad.com.ar/post/2025/06/carga-inal%C3%A1mbrica-a-distancia-el-fin-de-los-cables-en-2025/</link><pubDate>Thu, 05 Jun 2025 09:51:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/06/carga-inal%C3%A1mbrica-a-distancia-el-fin-de-los-cables-en-2025/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-promesa-de-un-mundo-sin-cables"&gt;
La Promesa de un Mundo Sin Cables
&lt;a href="#la-promesa-de-un-mundo-sin-cables" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Imagina entrar a tu casa y que tu smartphone, audífonos y laptop comiencen a cargarse &lt;strong&gt;automáticamente&lt;/strong&gt;, sin bases de carga ni cables enredados. Esto ya no es ciencia ficción: tecnologías como &lt;strong&gt;Ossia Cota&lt;/strong&gt; y &lt;strong&gt;Energous WattUp&lt;/strong&gt; están haciendo posible la &lt;strong&gt;carga inalámbrica a distancia&lt;/strong&gt;. En este artículo, exploramos cómo funcionan, sus limitaciones y si realmente llegarán a masificarse.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-funciona-la-carga-inalámbrica-a-distancia"&gt;
¿Cómo Funciona la Carga Inalámbrica a Distancia?
&lt;a href="#c%c3%b3mo-funciona-la-carga-inal%c3%a1mbrica-a-distancia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A diferencia de los cargadores Qi tradicionales (que requieren contacto físico), estos sistemas usan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Radiofrecuencias (RF):&lt;/strong&gt; Ondas similares al WiFi pero optimizadas para transmitir energía.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Haces de microondas:&lt;/strong&gt; Tecnología de enfoque dinámico para enviar energía a dispositivos específicos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Receptores especiales:&lt;/strong&gt; Los dispositivos necesitan chips compatibles para convertir las ondas en electricidad.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="tecnologías-líderes-en-2025"&gt;
Tecnologías Líderes en 2025
&lt;a href="#tecnolog%c3%adas-l%c3%adderes-en-2025" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Tecnología&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Alcance Máximo&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Potencia&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Aplicaciones&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Ossia Cota&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;10 metros&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;1W&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Hogares, oficinas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Energous&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;5 metros&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;2W&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Dispositivos IoT, wearables&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Xiaomi Mi Air&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;3 metros&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;5W&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Smartphones (en desarrollo)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="limitaciones-y-desafíos"&gt;
Limitaciones y Desafíos
&lt;a href="#limitaciones-y-desaf%c3%ados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Baja eficiencia:&lt;/strong&gt; Solo el 20-30% de la energía llega al dispositivo (vs. 80% en cables).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regulaciones sanitarias:&lt;/strong&gt; La exposición constante a radiofrecuencias aún está bajo estudio (&lt;a href="https://spectrum.ieee.org/wireless-charging" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
IEEE Spectrum
&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compatibilidad:&lt;/strong&gt; Requiere hardware especializado (no sirve con cualquier dispositivo).&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="vale-la-pena-esperar"&gt;
¿Vale la Pena Esperar?
&lt;a href="#vale-la-pena-esperar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Aunque la tecnología es prometedora, &lt;strong&gt;aún no está lista para el consumidor masivo&lt;/strong&gt;. Alternativas prácticas hoy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MagSafe (Apple):&lt;/strong&gt; Carga magnética de 15W.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Qi2:&lt;/strong&gt; Nuevo estándar para mayor eficiencia.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Curiosidad:&lt;/strong&gt; En Japón ya hay cafés con mesas que cargan dispositivos sin cables.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión-un-futuro-sin-cables-pero-no-todavía"&gt;
Conclusión: Un Futuro Sin Cables, Pero No Todavía
&lt;a href="#conclusi%c3%b3n-un-futuro-sin-cables-pero-no-todav%c3%ada" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La carga inalámbrica a distancia será revolucionaria cuando resuelva sus desafíos técnicos. Mientras tanto, los cargadores tradicionales seguirán dominando.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Qué opinas?&lt;/strong&gt; ¿Invertirías en esta tecnología hoy? Déjalo en los comentarios&lt;/p&gt;</description></item><item><title>Hardening Avanzado en AlmaLinux: Guía CIS Benchmark 2025</title><link>https://patojad.com.ar/post/2025/05/hardening-avanzado-en-almalinux-gu%C3%ADa-cis-benchmark-2025/</link><pubDate>Mon, 19 May 2025 10:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/05/hardening-avanzado-en-almalinux-gu%C3%ADa-cis-benchmark-2025/</guid><description>&lt;p&gt;El hardening transforma tu AlmaLinux en un sistema resistente a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ Ataques automatizados (bots)&lt;/li&gt;
&lt;li&gt;✅ Exploits de día cero&lt;/li&gt;
&lt;li&gt;✅ Brechas por configuración incorrecta&lt;/li&gt;
&lt;li&gt;✅ Cumplir con normativas (ISO 27001, PCI-DSS)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;📊 &lt;strong&gt;Estadística&lt;/strong&gt;: Servidores sin hardening son comprometidos 5x más rápido (Fuente: CIS Security Report 2025)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-auditoría-inicial"&gt;
🛠️ Auditoría Inicial
&lt;a href="#-auditor%c3%ada-inicial" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="escaneo-con-lynis"&gt;
Escaneo con Lynis
&lt;a href="#escaneo-con-lynis" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install lynis -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo lynis audit system --quick&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="actualizando-cves-conocidos"&gt;
Actualizando CVEs conocidos
&lt;a href="#actualizando-cves-conocidos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf update --security&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-hardening-básico"&gt;
🔐 Hardening Básico
&lt;a href="#-hardening-b%c3%a1sico" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Seguridad de Paquetes&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Actualizaciones críticas&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf update --security -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Eliminar servicios inseguros&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf remove xinetd telnet rsh -y&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ssh-seguro-etcsshsshd_config"&gt;
SSH Seguro (/etc/ssh/sshd_config)
&lt;a href="#ssh-seguro-etcsshsshd_config" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;ini&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Port 2222&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;PermitRootLogin no&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;PasswordAuthentication no&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;AllowUsers admin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Protocol 2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-hardening-avanzado"&gt;
⚡ Hardening Avanzado
&lt;a href="#-hardening-avanzado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="kernel-hardening-etcsysctld99-hardeningconf"&gt;
Kernel Hardening (/etc/sysctl.d/99-hardening.conf)
&lt;a href="#kernel-hardening-etcsysctld99-hardeningconf" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;ini&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;kernel.kptr_restrict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;vm.swappiness&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;net.ipv4.icmp_echo_ignore_all&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;fs.protected_hardlinks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sysctl -p&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="control-de-procesos-cgroups-v2"&gt;
Control de Procesos (cgroups v2)
&lt;a href="#control-de-procesos-cgroups-v2" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo grubby --update-kernel&lt;span class="o"&gt;=&lt;/span&gt;ALL --args&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;systemd.unified_cgroup_hierarchy=1&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="detección-de-intrusos-aide"&gt;
Detección de Intrusos (AIDE)
&lt;a href="#detecci%c3%b3n-de-intrusos-aide" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install aide -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo aideinit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo aide --check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-tabla-de-comandos-esenciales"&gt;
📋 Tabla de Comandos Esenciales
&lt;a href="#-tabla-de-comandos-esenciales" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Comando&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Descripción&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;auditctl -l&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Listar reglas de auditoría&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;sestatus&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Ver estado SELinux&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;firewall-cmd &amp;ndash;list-all&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Reglas de firewall&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;lastb&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Intentos de login fallidos&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-solución-de-problemas"&gt;
🚨 Solución de Problemas
&lt;a href="#-soluci%c3%b3n-de-problemas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="servicio-no-funciona-después-de-hardening"&gt;
&amp;ldquo;Servicio no funciona después de hardening&amp;rdquo;
&lt;a href="#servicio-no-funciona-despu%c3%a9s-de-hardening" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Verificar logs:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo journalctl -u nombre_servicio --no-pager&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Modo diagnóstico:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo setenforce &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl stop firewalld&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-checklist-de-seguridad"&gt;
📌 Checklist de Seguridad
&lt;a href="#-checklist-de-seguridad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Actualizaciones automáticas habilitadas&lt;/li&gt;
&lt;li&gt;Root login desactivado&lt;/li&gt;
&lt;li&gt;Partición /tmp con nosuid,noexec&lt;/li&gt;
&lt;li&gt;Logs centralizados configurados&lt;/li&gt;
&lt;li&gt;Copias de seguridad automatizadas&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-resultados-esperados"&gt;
📊 Resultados Esperados
&lt;a href="#-resultados-esperados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Métrica&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Antes&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Después&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Puntuación Lynis&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&amp;lt;50&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&amp;gt;85&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;CVEs conocidos&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;10+&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;0-2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Servicios expuestos&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;5+&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;1-2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-conclusión"&gt;
📌 Conclusión
&lt;a href="#-conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Con esta guía has implementado:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Protección a nivel kernel&lt;/li&gt;
&lt;li&gt;Configuración SSH segura&lt;/li&gt;
&lt;li&gt;Detección de cambios no autorizados&lt;/li&gt;
&lt;li&gt;Cumplimiento con CIS Benchmark&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 Tip profesional: Usa oscap para evaluar automáticamente el cumplimiento CIS:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install openscap-scanner -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo oscap xccdf &lt;span class="nb"&gt;eval&lt;/span&gt; --profile cis_level2 /usr/share/xml/scap/ssg/content/ssg-almalinux9-ds.xml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;</description></item><item><title>Debian 12.11 'Bookworm' Llega con Actualizaciones de Seguridad y Correcciones Clave</title><link>https://patojad.com.ar/post/2025/05/debian-12.11-bookworm-llega-con-actualizaciones-de-seguridad-y-correcciones-clave/</link><pubDate>Sat, 17 May 2025 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/05/debian-12.11-bookworm-llega-con-actualizaciones-de-seguridad-y-correcciones-clave/</guid><description>&lt;p&gt;El proyecto Debian ha anunciado con entusiasmo la undécima actualización de su distribución estable Debian 12, cuyo nombre clave es &amp;ldquo;Bookworm&amp;rdquo;. Esta nueva versión, la 12.11, trae consigo una serie de correcciones cruciales de seguridad y ajustes para problemas significativos. En este artículo, exploraremos los detalles de esta actualización y cómo mantener tu sistema Debian al día.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-hay-de-nuevo-en-debian-1211"&gt;
¿Qué hay de nuevo en Debian 12.11?
&lt;a href="#qu%c3%a9-hay-de-nuevo-en-debian-1211" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La actualización 12.11 de Debian 12 se enfoca principalmente en dos áreas clave:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Correcciones de Seguridad:&lt;/strong&gt; Se han integrado numerosas actualizaciones de seguridad para abordar vulnerabilidades detectadas en varios paquetes. Estas actualizaciones ya se habían publicado como avisos de seguridad individuales y ahora se incluyen en esta versión puntual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ajustes para Problemas Serios:&lt;/strong&gt; Además de las correcciones de seguridad, se han realizado ajustes para resolver problemas críticos que afectaban la estabilidad y el funcionamiento del sistema.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Es importante destacar que esta no es una nueva versión completa de Debian 12, sino una actualización puntual. Esto significa que no es necesario desechar los medios de instalación antiguos de &amp;ldquo;Bookworm&amp;rdquo;. Después de la instalación inicial, los paquetes pueden actualizarse a las versiones más recientes utilizando un espejo de Debian actualizado.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="problemas-conocidos-y-correcciones-específicas"&gt;
Problemas Conocidos y Correcciones Específicas
&lt;a href="#problemas-conocidos-y-correcciones-espec%c3%adficas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Como con cualquier actualización, se han identificado algunos problemas conocidos y correcciones específicas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linux 6.1.137-1&lt;/strong&gt;: Se ha identificado una regresión en el kernel Linux 6.1.137-1, que impide la carga de los módulos &amp;ldquo;watchdog&amp;rdquo; y &amp;ldquo;w83977f_wdt&amp;rdquo; en la arquitectura &amp;ldquo;amd64&amp;rdquo;. Se espera que este problema se resuelva en una próxima actualización. Mientras tanto, se recomienda a los usuarios que dependen de la funcionalidad watchdog que la deshabiliten o eviten actualizar a esta versión del kernel.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diversas Correcciones de Bugs&lt;/strong&gt;: Se han añadido correcciones importantes a numerosos paquetes, incluyendo &lt;code&gt;abseil&lt;/code&gt;, &lt;code&gt;adonthell&lt;/code&gt;, &lt;code&gt;base-files&lt;/code&gt;, &lt;code&gt;bash&lt;/code&gt;, &lt;code&gt;busybox&lt;/code&gt;, y muchos otros. Estas correcciones abordan una variedad de problemas, desde desbordamientos de búfer hasta problemas de compatibilidad y errores de construcción.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para una lista detallada de todos los paquetes actualizados y los problemas resueltos, puedes consultar el registro de cambios oficial de Debian:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://deb.debian.org/debian/dists/bookworm/ChangeLog" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://deb.debian.org/debian/dists/bookworm/ChangeLog
&lt;/a&gt;&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="actualizaciones-de-seguridad"&gt;
Actualizaciones de Seguridad
&lt;a href="#actualizaciones-de-seguridad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Esta revisión incluye numerosas actualizaciones de seguridad. El Equipo de Seguridad de Debian ha publicado avisos para cada una de estas actualizaciones:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.debian.org/security/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.debian.org/security/
&lt;/a&gt;&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="paquetes-removidos"&gt;
Paquetes Removidos
&lt;a href="#paquetes-removidos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Debido a circunstancias fuera del control del proyecto, los siguientes paquetes han sido eliminados:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pidgin-skype&lt;/code&gt;: Inútil debido a la discontinuación del servicio.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;viagee&lt;/code&gt;: Ya no puede conectarse a Gmail.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-actualizar-tu-sistema-debian"&gt;
Cómo Actualizar tu Sistema Debian
&lt;a href="#c%c3%b3mo-actualizar-tu-sistema-debian" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Actualizar tu instalación existente a esta revisión es sencillo. Solo necesitas asegurarte de que tu sistema de gestión de paquetes esté apuntando a uno de los muchos espejos HTTP de Debian. Puedes encontrar una lista completa de los espejos aquí:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.debian.org/mirror/list" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.debian.org/mirror/list
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si ya estás utilizando &lt;code&gt;security.debian.org&lt;/code&gt; para obtener actualizaciones de seguridad frecuentes, no tendrás que actualizar muchos paquetes, ya que la mayoría de estas actualizaciones ya están incluidas en la versión puntual.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La actualización Debian 12.11 &amp;ldquo;Bookworm&amp;rdquo; es una versión importante que trae consigo mejoras significativas en seguridad y estabilidad. Se recomienda encarecidamente actualizar tu sistema para beneficiarte de estas correcciones. Mantener tu sistema al día es crucial para garantizar un entorno seguro y fiable.&lt;/p&gt;
&lt;p&gt;Para más información, visita las páginas web oficiales de Debian en &lt;a href="https://www.debian.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.debian.org/
&lt;/a&gt; o envía un correo a &lt;a href="mailto:press@debian.org" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-envelope"&gt;&lt;/i&gt;&amp;nbsp;
press@debian.org
&lt;/a&gt; o contacta al equipo de lanzamiento estable en &lt;a href="mailto:debian-release@lists.debian.org" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-envelope"&gt;&lt;/i&gt;&amp;nbsp;
debian-release@lists.debian.org
&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Dominar SELinux en AlmaLinux: Guía Definitiva 2025</title><link>https://patojad.com.ar/post/2025/05/dominar-selinux-en-almalinux-gu%C3%ADa-definitiva-2025/</link><pubDate>Mon, 12 May 2025 09:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/05/dominar-selinux-en-almalinux-gu%C3%ADa-definitiva-2025/</guid><description>&lt;p&gt;&lt;strong&gt;SELinux&lt;/strong&gt; (Security-Enhanced Linux) es una característica de seguridad avanzada en sistemas Linux, especialmente en distribuciones como AlmaLinux. En 2025, su uso se ha vuelto esencial para proteger servidores y aplicaciones críticas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-por-qué-selinux-es-crucial-en-2025"&gt;
🔍 ¿Por qué SELinux es crucial en 2025?
&lt;a href="#-por-qu%c3%a9-selinux-es-crucial-en-2025" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Security-Enhanced Linux (SELinux)&lt;/strong&gt; proporciona:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ Control de acceso obligatorio (MAC)&lt;/li&gt;
&lt;li&gt;✅ Aislamiento de procesos y archivos&lt;/li&gt;
&lt;li&gt;✅ Protección contra exploits zero-day&lt;/li&gt;
&lt;li&gt;✅ Cumplimiento de normativas (HIPAA, PCI DSS)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;📊 &lt;strong&gt;Dato&lt;/strong&gt;: El 78% de las brechas de seguridad en servidores sin SELinux ocurren por permisos incorrectos (Fuente: Red Hat Security Report 2025)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-configuración-básica"&gt;
🛠️ Configuración Básica
&lt;a href="#-configuraci%c3%b3n-b%c3%a1sica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="estados-de-selinux"&gt;
Estados de SELinux
&lt;a href="#estados-de-selinux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Ver estado actual&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo getenforce
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Cambiar temporalmente a Permissive&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo setenforce &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Hacer cambio permanente (en /etc/selinux/config)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sed -i &lt;span class="s1"&gt;&amp;#39;s/SELINUX=.*/SELINUX=enforcing/&amp;#39;&lt;/span&gt; /etc/selinux/config&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-casos-prácticos-comunes"&gt;
🚨 Casos Prácticos Comunes
&lt;a href="#-casos-pr%c3%a1cticos-comunes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="error-httpd-no-puede-acceder-a-archivos"&gt;
Error: &amp;ldquo;HTTPD no puede acceder a archivos&amp;rdquo;
&lt;a href="#error-httpd-no-puede-acceder-a-archivos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Diagnosticar&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo ausearch -m avc -ts recent &lt;span class="p"&gt;|&lt;/span&gt; grep httpd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Solución (cambiar contexto)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo semanage fcontext -a -t httpd_sys_content_t &lt;span class="s2"&gt;&amp;#34;/ruta/a/tu/app(/.*)?&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo restorecon -Rv /ruta/a/tu/app&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="servicio-no-puede-usar-puerto-personalizado"&gt;
Servicio no puede usar puerto personalizado
&lt;a href="#servicio-no-puede-usar-puerto-personalizado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Permitir a Nginx usar puerto 3000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo semanage port -a -t http_port_t -p tcp &lt;span class="m"&gt;3000&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-comandos-esenciales"&gt;
📋 Comandos Esenciales
&lt;a href="#-comandos-esenciales" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Comando&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Descripción&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Ejemplo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;chcon&lt;/code&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Cambiar contexto&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;chcon -t httpd_sys_content_t archivo.html&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;semanage&lt;/code&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Gestionar políticas&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;semanage port -l | grep http&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;audit2allow&lt;/code&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Crear módulos&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;grep denied /var/log/audit/audit.log | audit2allow -M mi_politica&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-troubleshooting-avanzado"&gt;
🔧 Troubleshooting Avanzado
&lt;a href="#-troubleshooting-avanzado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="analizar-logs-con-sealert"&gt;
Analizar logs con sealert
&lt;a href="#analizar-logs-con-sealert" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sealert -a /var/log/audit/audit.log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="crear-política-personalizada"&gt;
Crear política personalizada
&lt;a href="#crear-pol%c3%adtica-personalizada" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grep &lt;span class="s2"&gt;&amp;#34;avc: denied&amp;#34;&lt;/span&gt; /var/log/audit/audit.log &lt;span class="p"&gt;|&lt;/span&gt; audit2allow -M mi_politica
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo semodule -i mi_politica.pp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="-tabla-de-contextos-comunes"&gt;
📌 Tabla de Contextos Comunes
&lt;a href="#-tabla-de-contextos-comunes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Contexto&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Uso Típico&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;httpd_sys_content_t&lt;/code&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Archivos web estáticos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;mysqld_db_t&lt;/code&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Bases de datos MySQL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;user_home_t&lt;/code&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Archivos en &lt;code&gt;/home&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;var_log_t&lt;/code&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Archivos de logs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-solución-de-problemas"&gt;
⚠️ Solución de Problemas
&lt;a href="#-soluci%c3%b3n-de-problemas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="selinux-está-bloqueando-mi-aplicación"&gt;
&amp;ldquo;SELinux está bloqueando mi aplicación&amp;rdquo;
&lt;a href="#selinux-est%c3%a1-bloqueando-mi-aplicaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Identificar el error:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo grep &lt;span class="s2"&gt;&amp;#34;avc: denied&amp;#34;&lt;/span&gt; /var/log/audit/audit.log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Solución temporal (solo para pruebas):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo setenforce &lt;span class="m"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Solución permanente:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Usar las recomendaciones de sealert&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sealert -l &lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep -A &lt;span class="m"&gt;10&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Sugerencia&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-conclusión"&gt;
📌 Conclusión
&lt;a href="#-conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Con esta guía has aprendido a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configurar SELinux en modo enforcing&lt;/li&gt;
&lt;li&gt;Diagnosticar y solucionar errores comunes&lt;/li&gt;
&lt;li&gt;Crear políticas personalizadas&lt;/li&gt;
&lt;li&gt;Trabajar con contextos de archivos&lt;/li&gt;
&lt;li&gt;Próximo paso: Hardening avanzado de AlmaLinux&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 Tip profesional: Usa restorecon -Rv después de instalar nuevas aplicaciones para resetear contextos.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Configurar Firewall en AlmaLinux con firewalld: Guía de Seguridad 2025</title><link>https://patojad.com.ar/post/2025/05/configurar-firewall-en-almalinux-con-firewalld-gu%C3%ADa-de-seguridad-2025/</link><pubDate>Sat, 03 May 2025 10:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/05/configurar-firewall-en-almalinux-con-firewalld-gu%C3%ADa-de-seguridad-2025/</guid><description>&lt;p&gt;&lt;strong&gt;firewalld&lt;/strong&gt; es el firewall predeterminado en AlmaLinux/RHEL porque:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ Gestión dinámica de reglas sin reiniciar servicios&lt;/li&gt;
&lt;li&gt;✅ Soporte para zonas de red (pública, DMZ, etc.)&lt;/li&gt;
&lt;li&gt;✅ Integración nativa con systemd y NetworkManager&lt;/li&gt;
&lt;li&gt;✅ Compatibilidad con IPv4/IPv6&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;📊 &lt;strong&gt;Dato clave&lt;/strong&gt;: Reduce ataques bruteforce en un 72% cuando se configura correctamente (Fuente: Red Hat Security Report 2025)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-configuración-básica"&gt;
🛠️ Configuración Básica
&lt;a href="#-configuraci%c3%b3n-b%c3%a1sica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="1-verificar-estado"&gt;
1. Verificar estado
&lt;a href="#1-verificar-estado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl status firewalld
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --state&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="2-habilitar-e-iniciar"&gt;
2. Habilitar e iniciar
&lt;a href="#2-habilitar-e-iniciar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; --now firewalld&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="3-zonas-predeterminadas"&gt;
3. Zonas predeterminadas
&lt;a href="#3-zonas-predeterminadas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --list-all-zones&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-reglas-para-servicios-web"&gt;
🌐 Reglas para Servicios Web
&lt;a href="#-reglas-para-servicios-web" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="permitir-httphttps-y-ssh"&gt;
Permitir HTTP/HTTPS y SSH
&lt;a href="#permitir-httphttps-y-ssh" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --permanent --add-service&lt;span class="o"&gt;=&lt;/span&gt;http
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --permanent --add-service&lt;span class="o"&gt;=&lt;/span&gt;https
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --permanent --add-service&lt;span class="o"&gt;=&lt;/span&gt;ssh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --reload&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="verificar-reglas-activas"&gt;
Verificar reglas activas
&lt;a href="#verificar-reglas-activas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --list-all&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-reglas-avanzadas"&gt;
🔒 Reglas Avanzadas
&lt;a href="#-reglas-avanzadas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="1-restricción-por-ip-para-ssh"&gt;
1. Restricción por IP para SSH
&lt;a href="#1-restricci%c3%b3n-por-ip-para-ssh" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --permanent --remove-service&lt;span class="o"&gt;=&lt;/span&gt;ssh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --permanent --add-rich-rule&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;rule family=&amp;#34;ipv4&amp;#34; source address=&amp;#34;192.168.1.100&amp;#34; service name=&amp;#34;ssh&amp;#34; accept&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="2-abrir-puerto-personalizado-ej-3000-para-nodejs"&gt;
2. Abrir puerto personalizado (Ej: 3000 para Node.js)
&lt;a href="#2-abrir-puerto-personalizado-ej-3000-para-nodejs" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --permanent --add-port&lt;span class="o"&gt;=&lt;/span&gt;3000/tcp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="3-bloquear-país-completo-requiere-ipset"&gt;
3. Bloquear país completo (Requiere ipset)
&lt;a href="#3-bloquear-pa%c3%ads-completo-requiere-ipset" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --permanent --zone&lt;span class="o"&gt;=&lt;/span&gt;drop --add-source&lt;span class="o"&gt;=&lt;/span&gt;country:cn&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-monitoreo-y-troubleshooting"&gt;
📊 Monitoreo y Troubleshooting
&lt;a href="#-monitoreo-y-troubleshooting" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="conexiones-activas"&gt;
Conexiones activas
&lt;a href="#conexiones-activas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo ss -tulnp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="tráfico-bloqueado"&gt;
Tráfico bloqueado
&lt;a href="#tr%c3%a1fico-bloqueado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo journalctl -u firewalld --no-pager &lt;span class="p"&gt;|&lt;/span&gt; grep DROP&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="resetear-configuración"&gt;
Resetear configuración
&lt;a href="#resetear-configuraci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --reset-to-defaults&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-tabla-de-servicios-comunes"&gt;
📌 Tabla de Servicios Comunes
&lt;a href="#-tabla-de-servicios-comunes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Servicio&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Puerto&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Comando firewalld&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;HTTP&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;80&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&amp;ndash;add-service=http&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;HTTPS&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;443&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&amp;ndash;add-service=https&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;SSH&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;22&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&amp;ndash;add-service=ssh&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;MySQL&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;3306&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&amp;ndash;add-service=mysql&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;PostgreSQL&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;5432&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&amp;ndash;add-service=postgresql&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-solución-de-problemas"&gt;
🚨 Solución de Problemas
&lt;a href="#-soluci%c3%b3n-de-problemas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="error-firewalld-is-not-running"&gt;
Error: &amp;ldquo;FirewallD is not running&amp;rdquo;
&lt;a href="#error-firewalld-is-not-running" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl start firewalld&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="reglas-no-persisten"&gt;
Reglas no persisten
&lt;a href="#reglas-no-persisten" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --runtime-to-permanent&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-conclusión"&gt;
📌 Conclusión
&lt;a href="#-conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Con esta guía has aprendido a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configurar reglas básicas y avanzadas&lt;/li&gt;
&lt;li&gt;Restringir acceso por IP/país&lt;/li&gt;
&lt;li&gt;Monitorear conexiones sospechosas&lt;/li&gt;
&lt;li&gt;Solucionar errores comunes&lt;/li&gt;
&lt;li&gt;Próximo paso: Hardening avanzado con SELinux&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 Tip profesional: Usa &lt;code&gt;--timeout=300&lt;/code&gt; en reglas temporales para pruebas (ej: &lt;code&gt;sudo firewall-cmd --add-port=8080/tcp --timeout=300&lt;/code&gt;)&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Configurar Apache HTTPD en AlmaLinux: Stack LAMP Completo 2025</title><link>https://patojad.com.ar/post/2025/04/configurar-apache-httpd-en-almalinux-stack-lamp-completo-2025/</link><pubDate>Mon, 28 Apr 2025 08:30:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/04/configurar-apache-httpd-en-almalinux-stack-lamp-completo-2025/</guid><description>&lt;p&gt;Apache HTTPD sigue siendo relevante para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compatibilidad&lt;/strong&gt;: Soporte nativo para .htaccess y aplicaciones legacy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexibilidad&lt;/strong&gt;: Módulos dinámicos (PHP, Python, Perl)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Soporte empresarial&lt;/strong&gt;: Ideal para sistemas con software antiguo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Facilidad de uso&lt;/strong&gt;: Configuración más intuitiva que Nginx&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;📊 &lt;strong&gt;Estadística&lt;/strong&gt;: 31% de los sitios web usan Apache según Netcraft (2025)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-instalación-básica-de-apache"&gt;
🛠️ Instalación Básica de Apache
&lt;a href="#-instalaci%c3%b3n-b%c3%a1sica-de-apache" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-paquetes-necesarios"&gt;
Instalar paquetes necesarios
&lt;a href="#instalar-paquetes-necesarios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install httpd httpd-tools -y&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="iniciar-y-habilitar-el-servicio"&gt;
Iniciar y habilitar el servicio
&lt;a href="#iniciar-y-habilitar-el-servicio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; --now httpd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="verificar-estado"&gt;
Verificar estado
&lt;a href="#verificar-estado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl status httpd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Salida esperada: &lt;code&gt;Active: active (running)&lt;/code&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-estructura-de-directorios-clave"&gt;
📂 Estructura de Directorios Clave
&lt;a href="#-estructura-de-directorios-clave" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Ruta&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Propósito&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;/etc/httpd/conf/httpd.conf&lt;/code&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Configuración principal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;/etc/httpd/conf.d/&lt;/code&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Configs adicionales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;/var/www/html/&lt;/code&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Contenido web por defecto&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;/var/log/httpd/&lt;/code&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Logs de acceso/errores&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-configurar-virtual-hosts"&gt;
🖥️ Configurar Virtual Hosts
&lt;a href="#-configurar-virtual-hosts" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ejemplo básico (/etc/httpd/conf.d/misitio.conf):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;apache&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-apache" data-lang="apache"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;VirtualHost&lt;/span&gt; &lt;span class="s"&gt;*:80&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;ServerName&lt;/span&gt; misitio.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;DocumentRoot&lt;/span&gt; &lt;span class="sx"&gt;/var/www/html/misitio&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;Directory&lt;/span&gt; &lt;span class="s"&gt;/var/www/html/misitio&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Options&lt;/span&gt; Indexes FollowSymLinks
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;AllowOverride&lt;/span&gt; &lt;span class="k"&gt;All&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Require&lt;/span&gt; &lt;span class="k"&gt;all&lt;/span&gt; granted
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/Directory&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Comandos para aplicar cambios:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl restart httpd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --add-service&lt;span class="o"&gt;=&lt;/span&gt;http --permanent
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --reload&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-stack-lamp-completo"&gt;
🧩 Stack LAMP Completo
&lt;a href="#-stack-lamp-completo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-php-y-mysql"&gt;
Instalar PHP y MySQL
&lt;a href="#instalar-php-y-mysql" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install php php-mysqlnd php-json mariadb-server -y&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="configurar-mariadb"&gt;
Configurar MariaDB
&lt;a href="#configurar-mariadb" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; --now mariadb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mysql_secure_installation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="probar-php"&gt;
Probar PHP
&lt;a href="#probar-php" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;lt;?php phpinfo(); ?&amp;gt;&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /var/www/html/misitio/info.php&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-comparativa-apache-vs-nginx-2025"&gt;
⚖️ Comparativa Apache vs Nginx (2025)
&lt;a href="#-comparativa-apache-vs-nginx-2025" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Característica&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Apache&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Nginx&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Modo de trabajo&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Proceso/Thread&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Evento&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Rendimiento PHP&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;7,200 req/seg&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;8,500 req/seg&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Consumo memoria&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;350MB (10K conex)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;120MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Facilidad config&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;★★★★★&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;★★★☆☆&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Soporte .htaccess&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Nativo&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Require rewrite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;HTTP/3&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Experimental&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Soporte completo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-optimización-de-apache"&gt;
⚡ Optimización de Apache
&lt;a href="#-optimizaci%c3%b3n-de-apache" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ajustes en &lt;code&gt;/etc/httpd/conf/httpd.conf&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;apache&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-apache" data-lang="apache"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;KeepAlive&lt;/span&gt; &lt;span class="k"&gt;On&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;MaxKeepAliveRequests&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;KeepAliveTimeout&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;StartServers&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;MinSpareServers&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;MaxSpareServers&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-solución-de-problemas-comunes"&gt;
🚨 Solución de Problemas Comunes
&lt;a href="#-soluci%c3%b3n-de-problemas-comunes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="error-could-not-reliably-determine"&gt;
Error: &amp;ldquo;Could not reliably determine&amp;hellip;&amp;rdquo;
&lt;a href="#error-could-not-reliably-determine" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ServerName localhost&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee -a /etc/httpd/conf/httpd.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="error-403-forbidden"&gt;
Error: &amp;ldquo;403 Forbidden&amp;rdquo;
&lt;a href="#error-403-forbidden" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chown -R apache:apache /var/www/html/misitio
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chmod -R &lt;span class="m"&gt;755&lt;/span&gt; /var/www/html&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-conclusión"&gt;
📌 Conclusión
&lt;a href="#-conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Con esta guía has aprendido a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instalar Apache HTTPD en AlmaLinux&lt;/li&gt;
&lt;li&gt;Configurar hosts virtuales&lt;/li&gt;
&lt;li&gt;Implementar stack LAMP completo&lt;/li&gt;
&lt;li&gt;Optimizar para entornos productivos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Próximo paso: Proteger tu servidor con &lt;code&gt;firewalld&lt;/code&gt; y &lt;code&gt;fail2ban&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 Dato técnico: Apache soporta más de 60 módulos dinámicos, incluyendo mod_wsgi para Python y mod_perl.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>CachyOS vs Arch Linux: ¿Vale la pena su Kernel y Repositorios Optimizados?</title><link>https://patojad.com.ar/post/2025/04/cachyos-vs-arch-linux-vale-la-pena-su-kernel-y-repositorios-optimizados/</link><pubDate>Fri, 25 Apr 2025 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/04/cachyos-vs-arch-linux-vale-la-pena-su-kernel-y-repositorios-optimizados/</guid><description>&lt;p&gt;Si usas &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/02/qu%c3%a9-es-arch-linux-la-mejor-distribuci%c3%b3n-para-usuarios-avanzados/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Arch Linux
&lt;/a&gt;&lt;/strong&gt;, sabes que su filosofía se basa en el &lt;strong&gt;control absoluto&lt;/strong&gt; y la simplicidad. Pero ¿qué pasa si quieres exprimir al máximo tu hardware sin perder horas en ajustes manuales? Ahí entra &lt;strong&gt;CachyOS&lt;/strong&gt;, una distribución basada en Arch que promete &lt;strong&gt;hasta un 30% más de rendimiento&lt;/strong&gt; gracias a su kernel y repositorios optimizados. En este artículo, exploraremos &lt;strong&gt;la ciencia detrás de sus mejoras&lt;/strong&gt; y si realmente vale la pena el cambio.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-el-kernel-de-cachyos-más-allá-de-los-parches"&gt;
🔧 El Kernel de CachyOS: Más Allá de los Parches
&lt;a href="#-el-kernel-de-cachyos-m%c3%a1s-all%c3%a1-de-los-parches" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="qué-lo-hace-diferente"&gt;
¿Qué lo Hace Diferente?
&lt;a href="#qu%c3%a9-lo-hace-diferente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;El kernel de CachyOS (&lt;strong&gt;linux-cachyos&lt;/strong&gt;) no es solo una versión modificada del kernel genérico de &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/02/qu%c3%a9-es-arch-linux-la-mejor-distribuci%c3%b3n-para-usuarios-avanzados/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Arch Linux
&lt;/a&gt;&lt;/strong&gt;. Incorpora tres optimizaciones clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BORE Scheduler&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Problema que resuelve&lt;/strong&gt;: El scheduler por defecto de Linux (CFS) prioriza equidad (&lt;em&gt;fairness&lt;/em&gt;), lo que puede generar latencia en cargas explosivas (ej: juegos).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solución&lt;/strong&gt;: BORE (&lt;strong&gt;B&lt;/strong&gt;urst &lt;strong&gt;O&lt;/strong&gt;riented &lt;strong&gt;R&lt;/strong&gt;esponsive &lt;strong&gt;E&lt;/strong&gt;nhancer) optimiza el &lt;em&gt;throughput&lt;/em&gt; y reduce la latencia, ideal para CPUs modernas.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Ejemplo práctico&lt;/em&gt;: En CS2, reduce el &lt;em&gt;input lag&lt;/em&gt; hasta en un 15%.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compilación con -O3 y LTO&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-O3&lt;/strong&gt;: Nivel máximo de optimización del compilador (GCC/Clang). Genera código más rápido, aunque con binarios más grandes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LTO (Link Time Optimization)&lt;/strong&gt;: Elimina código redundante durante el enlazado, mejorando el uso de la caché del CPU.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Beneficio&lt;/em&gt;: Aplicaciones como Blender o Firefox ven mejoras del 10-20%.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ajustes de Latencia&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Reduce &lt;em&gt;stuttering&lt;/em&gt; en audio/video mediante gestión optimizada de interrupciones (IRQs).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-repositorios-optimizados-la-magia-de-pgo-y--o3"&gt;
📦 Repositorios Optimizados: La Magia de PGO y -O3
&lt;a href="#-repositorios-optimizados-la-magia-de-pgo-y--o3" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="cómo-aceleran-los-paquetes"&gt;
¿Cómo Aceleran los Paquetes?
&lt;a href="#c%c3%b3mo-aceleran-los-paquetes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Mientras &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/02/qu%c3%a9-es-arch-linux-la-mejor-distribuci%c3%b3n-para-usuarios-avanzados/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Arch Linux
&lt;/a&gt;&lt;/strong&gt; usa binarios compilados con &lt;strong&gt;-O2&lt;/strong&gt; (equilibrio entre velocidad y compatibilidad), CachyOS aplica:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Profile-Guided Optimization (PGO)&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Los paquetes se compilan &lt;strong&gt;dos veces&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Primero se ejecutan en escenarios reales (ej: LibreOffice procesando documentos).&lt;/li&gt;
&lt;li&gt;Luego, el compilador usa esos datos para optimizar el código.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Resultado&lt;/em&gt;: Hasta un 30% más rápido en tareas repetitivas.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizaciones Específicas para CPU&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Binarios con soporte para &lt;strong&gt;AVX2&lt;/strong&gt; (en CPUs modernas de Intel/AMD).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Ventaja&lt;/em&gt;: Mejor rendimiento en aplicaciones que usan instrucciones vectorizadas (ej: HandBrake, FFmpeg).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compilación con -O3 y LTO&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-O3&lt;/strong&gt;: Nivel máximo de optimización del compilador (GCC/Clang). Genera código más rápido, aunque con binarios más grandes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LTO (Link Time Optimization)&lt;/strong&gt;: Elimina código redundante durante el enlazado, mejorando el uso de la caché del CPU.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Beneficio&lt;/em&gt;: Aplicaciones como Blender o Firefox ven mejoras del 10-20%.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="comparativa-con-aur"&gt;
Comparativa con AUR
&lt;a href="#comparativa-con-aur" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;&lt;strong&gt;Característica&lt;/strong&gt;&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;&lt;strong&gt;CachyOS&lt;/strong&gt;&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;&lt;strong&gt;AUR (makepkg)&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Optimización&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;-O3 + LTO + PGO&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Depende del usuario&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Tiempo de compilación&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Cero (binarios prehechos)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Horas en paquetes grandes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Compatibilidad&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Hardware moderno&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Cualquier hardware&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-deberías-usar-cachyos-pros-y-contras"&gt;
❓ ¿Deberías Usar CachyOS? Pros y Contras
&lt;a href="#-deber%c3%adas-usar-cachyos-pros-y-contras" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="-casos-ideales"&gt;
✅ Casos Ideales
&lt;a href="#-casos-ideales" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gamers&lt;/strong&gt;: Menos &lt;em&gt;input lag&lt;/em&gt; gracias a BORE.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editores de video/audio&lt;/strong&gt;: Renderizado más rápido con PGO.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hardware moderno&lt;/strong&gt;: CPUs con AVX2, NVMe, ≥16GB RAM.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="-cuándo-evitarlo"&gt;
❌ Cuándo Evitarlo
&lt;a href="#-cu%c3%a1ndo-evitarlo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hardware antiguo&lt;/strong&gt;: Las optimizaciones pueden ser contraproducentes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Servidores críticos&lt;/strong&gt;: Menos testing que &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/02/qu%c3%a9-es-arch-linux-la-mejor-distribuci%c3%b3n-para-usuarios-avanzados/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Arch Linux
&lt;/a&gt;&lt;/strong&gt; estable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="-alternativa-híbrida"&gt;
🔄 Alternativa Híbrida
&lt;a href="#-alternativa-h%c3%adbrida" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Instala solo el kernel de CachyOS en &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/02/qu%c3%a9-es-arch-linux-la-mejor-distribuci%c3%b3n-para-usuarios-avanzados/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Arch Linux
&lt;/a&gt;&lt;/strong&gt; vanilla (disponible en AUR como &lt;code&gt;linux-cachyos&lt;/code&gt;). O instala sus repositorios en &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/02/qu%c3%a9-es-arch-linux-la-mejor-distribuci%c3%b3n-para-usuarios-avanzados/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Arch Linux
&lt;/a&gt;&lt;/strong&gt; y obten mejoras de rendimiento sin cambiar la distro. &lt;a href="https://wiki.cachyos.org/features/optimized_repos/#adding-our-repositories-to-an-existing-arch-linux-install" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Informacion sobre la instalación
&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-conclusión-vale-la-pena-el-cambio"&gt;
📊 Conclusión: ¿Vale la Pena el Cambio?
&lt;a href="#-conclusi%c3%b3n-vale-la-pena-el-cambio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;CachyOS es &lt;strong&gt;la mejor opción&lt;/strong&gt; si:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Buscas &lt;strong&gt;máximo rendimiento sin configurar &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/02/qu%c3%a9-es-arch-linux-la-mejor-distribuci%c3%b3n-para-usuarios-avanzados/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Arch Linux
&lt;/a&gt;&lt;/strong&gt; manualmente&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Tienes hardware moderno que aproveche -O3/LTO/PGO.&lt;/li&gt;
&lt;li&gt;No te importa depender de un equipo de mantenimiento externo.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si prefieres el &lt;strong&gt;control total&lt;/strong&gt; o usas hardware antiguo, quédate con &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/02/qu%c3%a9-es-arch-linux-la-mejor-distribuci%c3%b3n-para-usuarios-avanzados/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Arch Linux
&lt;/a&gt;&lt;/strong&gt; vanilla.&lt;/p&gt;</description></item><item><title>Configurar Nginx con SSL en AlmaLinux: Guía Definitiva 2025</title><link>https://patojad.com.ar/post/2025/04/configurar-nginx-con-ssl-en-almalinux-gu%C3%ADa-definitiva-2025/</link><pubDate>Mon, 21 Apr 2025 09:13:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/04/configurar-nginx-con-ssl-en-almalinux-gu%C3%ADa-definitiva-2025/</guid><description>&lt;p&gt;Nginx es uno de los servidores web más rápidos y eficientes para entornos Linux. En esta guía aprenderás a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instalar y configurar Nginx en &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/03/almalinux-gu%c3%ada-definitiva-historia-ventajas-y-comparativa-vs-rhelcentos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
AlmaLinux
&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Habilitar HTTPS con Let&amp;rsquo;s Encrypt&lt;/li&gt;
&lt;li&gt;Optimizar el rendimiento para producción&lt;/li&gt;
&lt;li&gt;Solucionar errores comunes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-instalación-de-nginx"&gt;
🛠️ Instalación de Nginx
&lt;a href="#-instalaci%c3%b3n-de-nginx" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Instalar desde repositorios
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install nginx -y&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Iniciar y habilitar el servicio
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; --now nginx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Verificar instalación
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -I localhost&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
Deberías ver: HTTP/1.1 200 OK&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-configuración-básica"&gt;
📂 Configuración Básica
&lt;a href="#-configuraci%c3%b3n-b%c3%a1sica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="estructura-de-archivos-clave"&gt;
Estructura de archivos clave
&lt;a href="#estructura-de-archivos-clave" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Ruta&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Propósito&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;/etc/nginx/nginx.conf&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Configuración principal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;/etc/nginx/conf.d/&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Configs de sitios adicionales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;/var/www/html/&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Directorio raíz por defecto&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ejemplo-de-configuración-mínima"&gt;
Ejemplo de configuración mínima
&lt;a href="#ejemplo-de-configuraci%c3%b3n-m%c3%adnima" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;conf&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# /etc/nginx/conf.d/tusitio.conf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;listen&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;server_name&lt;/span&gt; &lt;span class="n"&gt;tusitio&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt; &lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tusitio&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;location&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;try_files&lt;/span&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Verificar y recargar:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nginx -t &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo systemctl reload nginx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-certificado-ssl-con-lets-encrypt"&gt;
🔒 Certificado SSL con Let&amp;rsquo;s Encrypt
&lt;a href="#-certificado-ssl-con-lets-encrypt" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Instalar Certbot
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install certbot python3-certbot-nginx -y&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Obtener certificado
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo certbot --nginx -d tusitio.com -d www.tusitio.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Renovación automática
Añadir al cron:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt; &lt;span class="se"&gt;\*&lt;/span&gt; &lt;span class="se"&gt;\*&lt;/span&gt; &lt;span class="se"&gt;\*&lt;/span&gt; /usr/bin/certbot renew --quiet&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-optimización-de-rendimiento"&gt;
⚡ Optimización de Rendimiento
&lt;a href="#-optimizaci%c3%b3n-de-rendimiento" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ajustes-recomendados-en-etcnginxnginxconf"&gt;
Ajustes recomendados en /etc/nginx/nginx.conf
&lt;a href="#ajustes-recomendados-en-etcnginxnginxconf" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;conf&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;worker_processes auto;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;worker_connections 1024;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;keepalive_timeout 30;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gzip on;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gzip_types text/css application/javascript;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="comandos-útiles"&gt;
Comandos útiles
&lt;a href="#comandos-%c3%batiles" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Reinicio seguro&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl restart nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Ver estado&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl status nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Monitorear peticiones&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo tail -f /var/log/nginx/access.log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-solución-de-problemas-comunes"&gt;
🚨 Solución de Problemas Comunes
&lt;a href="#-soluci%c3%b3n-de-problemas-comunes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="error-port-80-already-in-use"&gt;
Error: &amp;ldquo;Port 80 already in use&amp;rdquo;
&lt;a href="#error-port-80-already-in-use" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo netstat -tulnp &lt;span class="p"&gt;|&lt;/span&gt; grep :80
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo &lt;span class="nb"&gt;kill&lt;/span&gt; -9 &amp;lt;PID&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="error-ssl-handshake-failed"&gt;
Error: &amp;ldquo;SSL handshake failed&amp;rdquo;
&lt;a href="#error-ssl-handshake-failed" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Verificar que el puerto 443 esté abierto:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --add-service&lt;span class="o"&gt;=&lt;/span&gt;https --permanent
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo firewall-cmd --reload&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-comparativa-nginx-vs-apache"&gt;
📊 Comparativa Nginx vs Apache
&lt;a href="#-comparativa-nginx-vs-apache" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Característica&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Nginx&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Apache&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Velocidad&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Rapido&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Lento&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Rendimiento&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Alto&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Medio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Consumo RAM&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Bajo&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Moderado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Facilidad&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Intermedia&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Sencilla&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Soporte .htaccess&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;No&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Sí&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-conclusión"&gt;
📌 Conclusión
&lt;a href="#-conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Con esta guía has aprendido a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desplegar Nginx en &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/03/almalinux-gu%c3%ada-definitiva-historia-ventajas-y-comparativa-vs-rhelcentos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
AlmaLinux
&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Configurar sitios virtuales&lt;/li&gt;
&lt;li&gt;Implementar HTTPS automático&lt;/li&gt;
&lt;li&gt;Optimizar para entornos productivos&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Gestión de Paquetes en AlmaLinux con DNF: Guía Completa 2025</title><link>https://patojad.com.ar/post/2025/04/gesti%C3%B3n-de-paquetes-en-almalinux-con-dnf-gu%C3%ADa-completa-2025/</link><pubDate>Mon, 14 Apr 2025 09:13:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/04/gesti%C3%B3n-de-paquetes-en-almalinux-con-dnf-gu%C3%ADa-completa-2025/</guid><description>&lt;p&gt;&lt;strong&gt;DNF&lt;/strong&gt; (Dandified YUM) es el gestor de paquetes moderno en &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/03/almalinux-gu%c3%ada-definitiva-historia-ventajas-y-comparativa-vs-rhelcentos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
AlmaLinux
&lt;/a&gt;&lt;/strong&gt;, heredero de &lt;strong&gt;YUM&lt;/strong&gt; pero más rápido y eficiente. En esta guía aprenderás:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Comandos esenciales para gestión de software&lt;/li&gt;
&lt;li&gt;Cómo trabajar con repositorios (&lt;strong&gt;EPEL&lt;/strong&gt;/&lt;strong&gt;CRB&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Trucos avanzados para administradores de sistemas&lt;/li&gt;
&lt;li&gt;Solución a errores comunes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-comandos-básicos-de-dnf"&gt;
📦 Comandos Básicos de &lt;strong&gt;DNF&lt;/strong&gt;
&lt;a href="#-comandos-b%c3%a1sicos-de-dnf" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="actualización-del-sistema"&gt;
Actualización del sistema
&lt;a href="#actualizaci%c3%b3n-del-sistema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Actualiza todos los paquetes instalados y sus dependencias.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalación-de-paquetes"&gt;
Instalación de paquetes
&lt;a href="#instalaci%c3%b3n-de-paquetes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install nginx mysql-server&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Instala múltiples paquetes en un solo comando.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="búsqueda-de-paquetes"&gt;
Búsqueda de paquetes
&lt;a href="#b%c3%basqueda-de-paquetes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf search python3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Encuentra paquetes disponibles en los repositorios.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="eliminación-de-paquetes"&gt;
Eliminación de paquetes
&lt;a href="#eliminaci%c3%b3n-de-paquetes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf remove httpd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Elimina paquetes y sus dependencias no requeridas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-gestión-de-repositorios"&gt;
🔌 Gestión de Repositorios
&lt;a href="#-gesti%c3%b3n-de-repositorios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="repositorio-epel"&gt;
Repositorio &lt;strong&gt;EPEL&lt;/strong&gt;
&lt;a href="#repositorio-epel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install epel-release
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf config-manager --set-enabled epel&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="repositorio-crb"&gt;
Repositorio &lt;strong&gt;CRB&lt;/strong&gt;
&lt;a href="#repositorio-crb" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf config-manager --set-enabled crb&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="tabla-comparativa-de-repositorios"&gt;
Tabla comparativa de repositorios
&lt;a href="#tabla-comparativa-de-repositorios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Repositorio&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Contenido&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Comando para habilitar&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Base&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Paquetes esenciales&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Activado por defecto&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;EPEL&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Paquetes adicionales&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;sudo dnf install epel-release&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;CRB&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Paquetes de build&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;&lt;code&gt;sudo dnf config-manager --set-enabled crb&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-comandos-avanzados"&gt;
⚡ Comandos Avanzados
&lt;a href="#-comandos-avanzados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="limpieza-del-sistema"&gt;
Limpieza del sistema
&lt;a href="#limpieza-del-sistema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf autoremove &lt;span class="c1"&gt;# Elimina paquetes huérfanos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf clean all &lt;span class="c1"&gt;# Limpia la caché&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="historial-de-transacciones"&gt;
Historial de transacciones
&lt;a href="#historial-de-transacciones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf &lt;span class="nb"&gt;history&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf &lt;span class="nb"&gt;history&lt;/span&gt; info &lt;span class="m"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf &lt;span class="nb"&gt;history&lt;/span&gt; undo &lt;span class="m"&gt;3&lt;/span&gt; &lt;span class="c1"&gt;# Revierte la transacción 3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-caso-práctico-instalación-de-lamp"&gt;
🚀 Caso Práctico: Instalación de &lt;strong&gt;LAMP&lt;/strong&gt;
&lt;a href="#-caso-pr%c3%a1ctico-instalaci%c3%b3n-de-lamp" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install httpd mariadb-server php php-mysqlnd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; --now httpd mariadb &lt;span class="c1"&gt;# No visto en video aun&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-solución-de-problemas-comunes"&gt;
🔍 Solución de Problemas Comunes
&lt;a href="#-soluci%c3%b3n-de-problemas-comunes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="error-no-hay-paquetes-disponibles"&gt;
Error: &amp;ldquo;No hay paquetes disponibles&amp;rdquo;
&lt;a href="#error-no-hay-paquetes-disponibles" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Verifica los repositorios habilitados:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf repolist&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Limpia la caché:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf clean all &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo dnf makecache&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-conclusión"&gt;
📌 Conclusión
&lt;a href="#-conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Dominar &lt;strong&gt;DNF&lt;/strong&gt; es esencial para cualquier usuario de &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/03/almalinux-gu%c3%ada-definitiva-historia-ventajas-y-comparativa-vs-rhelcentos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
AlmaLinux
&lt;/a&gt;&lt;/strong&gt;. Con esta guía puedes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gestionar software eficientemente&lt;/li&gt;
&lt;li&gt;Configurar repositorios adicionales&lt;/li&gt;
&lt;li&gt;Solucionar problemas comunes&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Instalación de AlmaLinux Paso a Paso</title><link>https://patojad.com.ar/post/2025/04/instalaci%C3%B3n-de-almalinux-paso-a-paso/</link><pubDate>Mon, 07 Apr 2025 15:45:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/04/instalaci%C3%B3n-de-almalinux-paso-a-paso/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/03/almalinux-gu%c3%ada-definitiva-historia-ventajas-y-comparativa-vs-rhelcentos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
AlmaLinux
&lt;/a&gt;&lt;/strong&gt; se ha consolidado como una de las mejores alternativas gratuitas a &lt;strong&gt;RHEL&lt;/strong&gt; y &lt;strong&gt;CentOS&lt;/strong&gt;. en este artículo, te guiaré paso a paso en su instalación, desde la descarga hasta la configuración inicial, ideal tanto para principiantes como para usuarios avanzados.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-requisitos-previos"&gt;
📥 Requisitos previos
&lt;a href="#-requisitos-previos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Antes de comenzar, necesitarás:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mínimo 2 gb de ram (4 gb recomendado para entornos gráficos).&lt;/li&gt;
&lt;li&gt;20 gb de espacio en disco.&lt;/li&gt;
&lt;li&gt;USB de 8 gb o más para crear el medio de instalación.&lt;/li&gt;
&lt;li&gt;Conexión a internet (opcional durante la instalación).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-paso-1-descargar-la-iso-de-almalinux"&gt;
🔽 Paso 1: Descargar la ISO de &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/03/almalinux-gu%c3%ada-definitiva-historia-ventajas-y-comparativa-vs-rhelcentos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
AlmaLinux
&lt;/a&gt;&lt;/strong&gt;
&lt;a href="#-paso-1-descargar-la-iso-de-almalinux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Visita el sitio oficial:&lt;a href="https://almalinux.org/download" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
almalinux.org/download
&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Elige entre &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/03/almalinux-gu%c3%ada-definitiva-historia-ventajas-y-comparativa-vs-rhelcentos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
AlmaLinux
&lt;/a&gt;&lt;/strong&gt; 9 (última versión estable) o 8 (para compatibilidad con software heredado).&lt;/li&gt;
&lt;li&gt;Descarga la iso según tu arquitectura (x86_64 para la mayoría de los casos).&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;💡 tip: verifica la integridad del archivo con el checksum sha256 proporcionado en el sitio.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-paso-2-crear-usb-booteable"&gt;
🛠️ Paso 2: Crear USB booteable
&lt;a href="#-paso-2-crear-usb-booteable" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="opción-a-usar-balenaetcher-windowsmacoslinux"&gt;
Opción A: Usar balenaetcher (Windows/macOS/linux)
&lt;a href="#opci%c3%b3n-a-usar-balenaetcher-windowsmacoslinux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Descarga e instala &lt;a href="https://etcher.balena.io/#download-etcher" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
balenaetcher
&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Selecciona la iso de &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/03/almalinux-gu%c3%ada-definitiva-historia-ventajas-y-comparativa-vs-rhelcentos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
AlmaLinux
&lt;/a&gt;&lt;/strong&gt; y la usb.&lt;/li&gt;
&lt;li&gt;Haz clic en Flash! y espera a que termine.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="opción-b-usar-línea-de-comandos-linux"&gt;
Opción B: Usar línea de comandos (linux)
&lt;a href="#opci%c3%b3n-b-usar-l%c3%adnea-de-comandos-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dd &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;almalinux-9.x-x86_64.iso &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/sdX &lt;span class="nv"&gt;bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4M &lt;span class="nv"&gt;status&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;progress &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sync &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-yellow-600/75 text-yellow-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-warning fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Importante: reemplaza /dev/sdX con la ruta correcta de tu usb (usa lsblk para identificarla).&lt;/p&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="uso-de-ventoy"&gt;
Uso de Ventoy
&lt;a href="#uso-de-ventoy" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;iframe src='https://www.youtube.com/embed/0BgO2y138oc?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;O tambien puedes verlo en su &lt;a href="https://patojad.com.ar/post/2021/04/ventoy-armando-un-usb-multiboot/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
articulo
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-paso-3-instalar-almalinux"&gt;
💻 Paso 3: Instalar &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/03/almalinux-gu%c3%ada-definitiva-historia-ventajas-y-comparativa-vs-rhelcentos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
AlmaLinux
&lt;/a&gt;&lt;/strong&gt;
&lt;a href="#-paso-3-instalar-almalinux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Arranca desde la usb (presiona F12/ESC/DEL según tu placa base para seleccionar el dispositivo).&lt;/li&gt;
&lt;li&gt;Sigue estos pasos en el instalador:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Idioma/teclado: Elige español o inglés.&lt;/li&gt;
&lt;li&gt;Particionado:
&lt;ul&gt;
&lt;li&gt;Automático: Recomendado para principiantes.&lt;/li&gt;
&lt;li&gt;Manual: Para avanzados (crea /, /home, y swap).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Configuración de red: Actívala y asigna un nombre al equipo.&lt;/li&gt;
&lt;li&gt;Usuario y contraseña: Crea un usuario con privilegios de administrador.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Inicia la instalación y espera a que finalice (≈10-15 minutos).&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-paso-4-configuración-post-instalación"&gt;
⚙️ Paso 4: Configuración post-instalación
&lt;a href="#-paso-4-configuraci%c3%b3n-post-instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez instalado, ejecuta estos comandos esenciales:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Actualizar el sistema &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf update -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Instalar herramientas básicas &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install -y nano git curl wget
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Verificar la versión &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /etc/redhat-release&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;🔥 Consejo: si usas almalinux en un servidor, instala también fail2ban y configura el firewall.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-conclusión"&gt;
📌 Conclusión
&lt;a href="#-conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ahora tienes &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2025/03/almalinux-gu%c3%ada-definitiva-historia-ventajas-y-comparativa-vs-rhelcentos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
AlmaLinux
&lt;/a&gt;&lt;/strong&gt; listo para usar. en el próximo artículo, exploraremos cómo gestionar paquetes con dnf y configurar repositorios adicionales.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="-recursos-útiles"&gt;
🔗 Recursos útiles:
&lt;a href="#-recursos-%c3%batiles" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wiki.almalinux.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Documentación oficial de almalinux
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://almalinux.org/community/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Foro de la comunidad
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>🚀 ¿La vuelta de los foros? Me uní al foro de Last Dragon y esto es lo que descubrí</title><link>https://patojad.com.ar/post/2025/04/la-vuelta-de-los-foros-me-un%C3%AD-al-foro-de-last-dragon-y-esto-es-lo-que-descubr%C3%AD/</link><pubDate>Fri, 04 Apr 2025 09:47:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/04/la-vuelta-de-los-foros-me-un%C3%AD-al-foro-de-last-dragon-y-esto-es-lo-que-descubr%C3%AD/</guid><description>&lt;p&gt;En un mundo donde todo pasa rápido, los mensajes vuelan y se pierden en la inmensidad de Telegram o WhatsApp, reencontré algo que creía olvidado: los &lt;strong&gt;foros&lt;/strong&gt;. Sí, esos espacios donde las conversaciones se organizaban por temas, se mantenían en el tiempo, y podías volver días después a leer, responder o aprender.&lt;/p&gt;
&lt;p&gt;La sorpresa vino de la mano de &lt;strong&gt;Last Dragon&lt;/strong&gt;, un creador de contenido sobre Linux que seguramente muchos conocen. Recientemente abrió su &lt;strong&gt;propio foro&lt;/strong&gt; utilizando la clásica (pero poderosa) plataforma &lt;strong&gt;phpBB&lt;/strong&gt;, y no dudé en unirme. Incluso &lt;strong&gt;Yoyo Fernández&lt;/strong&gt;, otro referente del mundo Linux, también ya forma parte.&lt;/p&gt;
&lt;p&gt;Al entrar me encontré con algo que, honestamente, extrañaba: una comunidad ordenada, donde cada tema tiene su lugar, donde no te sentís apurado por responder, y donde la información no se entierra bajo una montaña de stickers o memes.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-qué-es-un-foro-y-por-qué-están-volviendo"&gt;
💬 ¿Qué es un foro y por qué están volviendo?
&lt;a href="#-qu%c3%a9-es-un-foro-y-por-qu%c3%a9-est%c3%a1n-volviendo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Un &lt;strong&gt;foro&lt;/strong&gt; es una plataforma en línea donde los usuarios pueden publicar mensajes organizados en hilos o temas. A diferencia de los chats instantáneos, los foros permiten mantener discusiones estructuradas, con tiempo para reflexionar, buscar y aprender.&lt;/p&gt;
&lt;p&gt;Y en una época donde todo pasa demasiado rápido, los foros vuelven como una &lt;strong&gt;alternativa saludable y efectiva&lt;/strong&gt; para construir comunidad.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-foros-vs-telegramwhatsapp"&gt;
🆚 Foros vs Telegram/WhatsApp
&lt;a href="#-foros-vs-telegramwhatsapp" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Característica&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Foros (phpBB, etc.)&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Telegram / WhatsApp&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Organización&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Por categorías y temas&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Cronológico&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Búsqueda de información&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Avanzada y precisa&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Limitada&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Persistencia del contenido&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Alta (contenido permanece)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Bajo (contenido se pierde)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Privacidad&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Alta (registro y control)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Variable, depende del grupo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Participación&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Reflexiva y enfocada&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Instantánea y desordenada&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Moderación&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Más estructurada&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Más difícil de controlar&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;div class="w-full rounded-xl bg-yellow-600/75 text-yellow-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-warning fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Si bien Telegram permite crear temas y fijar mensajes no quita que su organizacion sea cronologica y su busqueda limitada&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-cómo-registrarse-en-el-foro-de-last-dragon"&gt;
🧭 ¿Cómo registrarse en el foro de Last Dragon?
&lt;a href="#-c%c3%b3mo-registrarse-en-el-foro-de-last-dragon" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Unirte es muy fácil, te explico los pasos básicos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;📲 Ingresá al foro desde este enlace: &lt;a href="https://foro.lastdragon.net" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://foro.lastdragon.net
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🔐 Hacé clic en &lt;em&gt;Registrarse&lt;/em&gt; (arriba a la izquierda).
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/25vvP55v/image.png" alt="Registro" title="Registro"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;📖 Aceptá las condiciones del foro.
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/4dQcxFVx/image.png" alt="Terminos y Condiciones" title="Terminos y Condiciones"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;📝 Completá tu nombre de usuario, email y contraseña.
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/CLXRSVX4/image.png" alt="Formulario" title="Formulario"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;🎉 ¡Listo! Ya podés presentarte en la sección correspondiente y empezar a participar.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-por-qué-sumarte"&gt;
🙌 ¿Por qué sumarte?
&lt;a href="#-por-qu%c3%a9-sumarte" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si sos de los que disfrutan aprender sobre Linux, tecnología y compartir experiencias con otros usuarios sin perderte en el ruido de los chats masivos, este foro es para vos. Es como una charla de café, pero bien organizada y disponible las 24 horas.&lt;/p&gt;
&lt;p&gt;Volver a los foros no es retroceso, es una &lt;strong&gt;evolución hacia una comunidad más ordenada, consciente y duradera&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Yo ya me uní. ¿Y vos?&lt;/p&gt;</description></item><item><title>AlmaLinux: Guía Definitiva – Historia, Ventajas y Comparativa vs RHEL(CentOS)</title><link>https://patojad.com.ar/post/2025/03/almalinux-gu%C3%ADa-definitiva-historia-ventajas-y-comparativa-vs-rhelcentos/</link><pubDate>Mon, 31 Mar 2025 09:47:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/03/almalinux-gu%C3%ADa-definitiva-historia-ventajas-y-comparativa-vs-rhelcentos/</guid><description>&lt;p&gt;&lt;strong&gt;AlmaLinux&lt;/strong&gt; se ha convertido en una de las distribuciones &lt;strong&gt;Linux&lt;/strong&gt; más populares para servidores y entornos empresariales, especialmente después de los cambios en &lt;strong&gt;CentOS&lt;/strong&gt;. Pero, ¿qué lo hace tan especial? En este artículo, exploraremos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Qué es AlmaLinux y por qué nació.&lt;/li&gt;
&lt;li&gt;Sus ventajas clave frente a RHEL, CentOS y Rocky Linux.&lt;/li&gt;
&lt;li&gt;Casos de uso reales (¿para quién es ideal?).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-almalinux"&gt;
¿Qué es AlmaLinux?
&lt;a href="#qu%c3%a9-es-almalinux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;AlmaLinux&lt;/strong&gt; es un sistema operativo gratuito y de código abierto, basado en Red Hat Enterprise Linux (RHEL). Surgió en 2021 como alternativa estable tras el anuncio de Red Hat de discontinuar CentOS tradicional.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="-datos-clave"&gt;
🔍 Datos clave
&lt;a href="#-datos-clave" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Creado por:&lt;/strong&gt; CloudLinux Inc. y la comunidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compatibilidad:&lt;/strong&gt; 1:1 con RHEL (mismo código base, sin costos).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lanzamiento estable:&lt;/strong&gt; Abril de 2021 (versión 8.3).&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;💡 ¿Por qué elegirlo? AlmaLinux ofrece 10 años de soporte por versión, igual que RHEL, pero sin licencias.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="historia-de-almalinux-por-qué-reemplaza-a-centos"&gt;
Historia de AlmaLinux: ¿Por qué reemplaza a CentOS?
&lt;a href="#historia-de-almalinux-por-qu%c3%a9-reemplaza-a-centos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="-línea-de-tiempo-clave"&gt;
📅 Línea de tiempo clave:
&lt;a href="#-l%c3%adnea-de-tiempo-clave" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;2014: Red Hat adquiere CentOS, prometiendo mantenerlo estable.&lt;/li&gt;
&lt;li&gt;Diciembre 2020: Red Hat anuncia que CentOS Stream será su único enfoque (rolling release, menos estable).&lt;/li&gt;
&lt;li&gt;Marzo 2021: Lanzamiento de AlmaLinux 8.3, financiado por CloudLinux.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-almalinux-vs-rhel-vs-rocky-linux-cuál-elegir"&gt;
⚖️ AlmaLinux vs RHEL vs Rocky Linux: ¿Cuál elegir?
&lt;a href="#-almalinux-vs-rhel-vs-rocky-linux-cu%c3%a1l-elegir" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Característica&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;AlmaLinux&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;RHEL&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Rocky Linux&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Costo&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Gratuito&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;De pago&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Gratuito&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Soporte&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;10 años&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;10 años&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;10 años&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Compatibilidad&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;RHEL 100%&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;N/A (es RHEL)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Respaldo&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;CloudLinux + Comunidad&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Red Hat&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Comunidad&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;🔥 Conclusión: AlmaLinux es ideal si buscas estabilidad gratuita con soporte empresarial opcional. Rocky Linux es similar, pero con menos respaldo corporativo.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="5-ventajas-clave-de-almalinux"&gt;
5 Ventajas Clave de AlmaLinux
&lt;a href="#5-ventajas-clave-de-almalinux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;🔐 &lt;strong&gt;Compatibilidad total con RHEL:&lt;/strong&gt; Migra aplicaciones sin cambios.&lt;/li&gt;
&lt;li&gt;⏳ &lt;strong&gt;Largo ciclo de vida:&lt;/strong&gt; Actualizaciones hasta 2032 para AlmaLinux 9.&lt;/li&gt;
&lt;li&gt;🆓 &lt;strong&gt;100% gratuito:&lt;/strong&gt; Sin licencias ocultas (a diferencia de RHEL).&lt;/li&gt;
&lt;li&gt;🛠️ &lt;strong&gt;Soporte profesional:&lt;/strong&gt; Opcional mediante CloudLinux.&lt;/li&gt;
&lt;li&gt;🌍 &lt;strong&gt;Comunidad activa:&lt;/strong&gt; Foros, documentación y updates rápidos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="quién-debería-usar-almalinux-casos-de-uso"&gt;
¿Quién debería usar AlmaLinux? (Casos de uso)
&lt;a href="#qui%c3%a9n-deber%c3%ada-usar-almalinux-casos-de-uso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DevOps/SysAdmins:&lt;/strong&gt; Para servidores web (Apache/Nginx), bases de datos (MySQL/MariaDB), o Kubernetes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Empresas:&lt;/strong&gt; Migración desde CentOS sin costos adicionales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desarrolladores:&lt;/strong&gt; Entorno estable para testing/producción.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;📌 Ejemplo real: Empresas como AWS, Microsoft Azure y cPanel ya soportan AlmaLinux oficialmente.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="-conclusión-vale-la-pena-migrar"&gt;
📌 Conclusión: ¿Vale la pena migrar?
&lt;a href="#-conclusi%c3%b3n-vale-la-pena-migrar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;AlmaLinux es la mejor opción si:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Necesitas un RHEL gratuito y estable.&lt;/li&gt;
&lt;li&gt;Quieres soporte a largo plazo (10 años).&lt;/li&gt;
&lt;li&gt;Prefieres respaldo corporativo (CloudLinux) + comunidad.&lt;/li&gt;
&lt;/ul&gt;
&lt;script type="application/ld+json"&gt;
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "¿AlmaLinux es gratuito?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Sí, AlmaLinux es 100% gratuito y de código abierto, a diferencia de RHEL que requiere licencia."
}
},
{
"@type": "Question",
"name": "¿AlmaLinux es estable?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Totalmente. AlmaLinux está diseñado para entornos de producción, con soporte de hasta 10 años."
}
}
]
}
&lt;/script&gt;</description></item><item><title>uUtils: La Alternativa Moderna a GNU Coreutils en 2025</title><link>https://patojad.com.ar/post/2025/03/uutils-la-alternativa-moderna-a-gnu-coreutils-en-2025/</link><pubDate>Thu, 27 Mar 2025 09:47:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/03/uutils-la-alternativa-moderna-a-gnu-coreutils-en-2025/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-uutils"&gt;
Qué es uUtils?
&lt;a href="#qu%c3%a9-es-uutils" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;uUtils es un proyecto de código abierto que busca reimplementar las herramientas básicas de línea de comandos (como ls, cp, grep, etc.) tradicionalmente proporcionadas por GNU Coreutils, pero con un enfoque moderno:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Escrito en Rust (en lugar de C, como GNU Coreutils).&lt;/li&gt;
&lt;li&gt;Diseñado para ser más seguro, rápido y portable (funciona en Linux, Windows y macOS).&lt;/li&gt;
&lt;li&gt;Mantiene compatibilidad con los comandos clásicos, pero con mejoras internas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En 2025, uUtils ha ganado popularidad entre desarrolladores y entusiastas de la terminal que buscan alternativas más eficientes y mantenibles.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="uutils-vs-gnu-coreutils-cuál-es-la-diferencia"&gt;
uUtils vs GNU Coreutils: ¿Cuál es la diferencia?
&lt;a href="#uutils-vs-gnu-coreutils-cu%c3%a1l-es-la-diferencia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Característica&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;uUtils&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;GNU Coreutils&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Lenguaje&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Rust (memoria segura por diseño)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;C (mayor riesgo de vulnerabilidades)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Portabilidad&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Soporte nativo para Windows/Linux/macOS&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Principalmente Linux/Unix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Rendimiento&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Optimizado para paralelismo&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Depende de implementaciones antiguas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Mantenimiento&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Comunidad activa (2025)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Desarrollo más lento (legacy code)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Compatibilidad&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Alto, pero con diferencias menores&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Estándar tradicional&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-no-usar-gnu-coreutils-directamente"&gt;
¿Por qué no usar GNU Coreutils directamente?
&lt;a href="#por-qu%c3%a9-no-usar-gnu-coreutils-directamente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Aunque GNU Coreutils es la suite clásica y ampliamente adoptada, uUtils ofrece:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menos errores de memoria (gracias a Rust).&lt;/li&gt;
&lt;li&gt;Mejor soporte multiplataforma (ideal para desarrolladores que trabajan en distintos SO).&lt;/li&gt;
&lt;li&gt;Comandos más rápidos en ciertos casos (ej: procesamiento paralelo en grep).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ventajas-y-desventajas-de-uutils"&gt;
Ventajas y Desventajas de uUtils
&lt;a href="#ventajas-y-desventajas-de-uutils" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="-ventajas"&gt;
✅ Ventajas
&lt;a href="#-ventajas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Seguridad mejorada:&lt;/strong&gt; Rust evita vulnerabilidades comunes como buffer overflows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fácil instalación:&lt;/strong&gt; Disponible en gestores de paquetes (brew, cargo, apt).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Innovación constante:&lt;/strong&gt; Comandos con opciones modernas (ej: mejor manejo de Unicode).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comunidad activa:&lt;/strong&gt; Más contribuciones en 2025 que GNU Coreutils.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="-desventajas"&gt;
❌ Desventajas
&lt;a href="#-desventajas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Diferencias sutiles:&lt;/strong&gt; Algunos flags o comportamientos no son idénticos a GNU.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Menor adopción en empresas:&lt;/strong&gt; GNU sigue siendo el estándar en sistemas legacy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentación en crecimiento:&lt;/strong&gt; Algunas funciones avanzadas están menos documentadas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-cambios-trae-uutils-para-los-usuarios"&gt;
¿Qué cambios trae uUtils para los usuarios?
&lt;a href="#qu%c3%a9-cambios-trae-uutils-para-los-usuarios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="para-usuarios-casuales"&gt;
Para usuarios casuales:
&lt;a href="#para-usuarios-casuales" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Experiencia similar a GNU Coreutils, pero con menos errores críticos.&lt;/li&gt;
&lt;li&gt;Soporte mejorado en Windows (ej: uutils-ls funciona igual que en Linux).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="para-desarrolladores"&gt;
Para desarrolladores:
&lt;a href="#para-desarrolladores" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Integración sencilla en entornos CI/CD gracias a su portabilidad.&lt;/li&gt;
&lt;li&gt;Posibilidad de extender funcionalidades (Rust es más modular que C).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="son-necesarias-nuevas-herramientas-en-2025"&gt;
¿Son necesarias nuevas herramientas en 2025?
&lt;a href="#son-necesarias-nuevas-herramientas-en-2025" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La respuesta depende del uso:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si buscas estabilidad y compatibilidad absoluta, GNU Coreutils sigue siendo la opción.&lt;/li&gt;
&lt;li&gt;Si priorizas seguridad, rendimiento y futuro, uUtils es una apuesta sólida.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En un mundo donde la ciberseguridad y la eficiencia son claves, proyectos como uUtils demuestran que incluso las herramientas más antiguas pueden renovarse.&lt;/p&gt;</description></item><item><title>Cómo Monitorear y Optimizar el Rendimiento de tu Sistema Linux: Guía Paso a Paso 📊⚡</title><link>https://patojad.com.ar/post/2025/03/c%C3%B3mo-monitorear-y-optimizar-el-rendimiento-de-tu-sistema-linux-gu%C3%ADa-paso-a-paso/</link><pubDate>Mon, 03 Mar 2025 09:47:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/03/c%C3%B3mo-monitorear-y-optimizar-el-rendimiento-de-tu-sistema-linux-gu%C3%ADa-paso-a-paso/</guid><description>&lt;p&gt;¿Alguna vez has sentido que tu sistema Linux está lento o que no funciona tan bien como debería? No te preocupes, ¡estás en el lugar correcto! En este artículo, aprenderás cómo monitorear y optimizar el rendimiento de tu sistema Linux utilizando herramientas simples pero poderosas. Al final, podrás identificar problemas de rendimiento y solucionarlos fácilmente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-monitorear-el-rendimiento"&gt;
¿Por Qué Monitorear el Rendimiento?
&lt;a href="#por-qu%c3%a9-monitorear-el-rendimiento" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Monitorear el rendimiento de tu sistema es crucial para mantenerlo funcionando de manera eficiente. Al hacerlo, puedes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Identificar procesos que consumen muchos recursos:&lt;/strong&gt; Encuentra programas que estén usando demasiada CPU, memoria o disco.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detectar cuellos de botella:&lt;/strong&gt; Resuelve problemas que ralentizan tu sistema.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantener tu sistema limpio y eficiente:&lt;/strong&gt; Libera espacio y elimina archivos innecesarios.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hoy vamos a usar herramientas simples pero efectivas que puedes ejecutar directamente desde la terminal.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="herramienta-1-top---monitorear-procesos-en-tiempo-real"&gt;
Herramienta 1: &lt;code&gt;top&lt;/code&gt; - Monitorear Procesos en Tiempo Real
&lt;a href="#herramienta-1-top---monitorear-procesos-en-tiempo-real" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La primera herramienta que exploraremos es &lt;code&gt;top&lt;/code&gt;. Este comando muestra una lista en tiempo real de todos los procesos que se están ejecutando en tu sistema, junto con su uso de CPU y memoria. Simplemente ejecuta:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;top&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Aquí puedes ver qué procesos están consumiendo más recursos. Si encuentras algo sospechoso, puedes detenerlo usando su ID de proceso (PID) con:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;kill&lt;/span&gt; &amp;lt;PID&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Es una herramienta esencial para diagnosticar problemas rápidamente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="herramienta-2-htop---una-versión-mejorada-de-top"&gt;
Herramienta 2: &lt;code&gt;htop&lt;/code&gt; - Una Versión Mejorada de &lt;code&gt;top&lt;/code&gt;
&lt;a href="#herramienta-2-htop---una-versi%c3%b3n-mejorada-de-top" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si prefieres una interfaz más amigable, prueba&lt;code&gt;htop&lt;/code&gt;. Es como &lt;code&gt;top&lt;/code&gt;, pero con colores y opciones adicionales. Primero, instálalo:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="en-distribuciones-basadas-en-debian-como-ubuntu"&gt;
En distribuciones basadas en Debian (como Ubuntu):
&lt;a href="#en-distribuciones-basadas-en-debian-como-ubuntu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install htop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="en-distribuciones-basadas-en-red-hat-como-fedora"&gt;
En distribuciones basadas en Red Hat (como Fedora):
&lt;a href="#en-distribuciones-basadas-en-red-hat-como-fedora" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum install htop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="en-distribuciones-basadas-en-arch-como-endeavour"&gt;
En distribuciones basadas en &lt;a href="https://patojad.com.ar/post/2025/02/qu%c3%a9-es-arch-linux-la-mejor-distribuci%c3%b3n-para-usuarios-avanzados/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Arch
&lt;/a&gt; (como Endeavour):
&lt;a href="#en-distribuciones-basadas-en-arch-como-endeavour" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S htop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Luego ejecútalo:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;htop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Con &lt;code&gt;htop&lt;/code&gt;, puedes navegar por los procesos con las flechas del teclado, ordenarlos y detenerlos directamente desde la interfaz. Es perfecto para usuarios nuevos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="herramienta-3-df-y-du---monitorear-el-uso-de-disco"&gt;
Herramienta 3: df y du - Monitorear el Uso de Disco
&lt;a href="#herramienta-3-df-y-du---monitorear-el-uso-de-disco" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ahora, hablemos del almacenamiento. Para ver cuánto espacio ocupan tus discos, usa &lt;code&gt;df&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df -h&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Esto muestra el uso de disco en formato legible. Si necesitas identificar archivos grandes que ocupan espacio, usa &lt;code&gt;du&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;du -sh /ruta/a/carpeta&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Estos comandos son ideales para liberar espacio y mantener tu sistema limpio.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="optimización-básica-limpieza-de-paquetes-innecesarios"&gt;
Optimización Básica: Limpieza de Paquetes Innecesarios
&lt;a href="#optimizaci%c3%b3n-b%c3%a1sica-limpieza-de-paquetes-innecesarios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Finalmente, vamos a optimizar tu sistema eliminando paquetes innecesarios.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="en-distribuciones-basadas-en-debian-como-ubuntu-1"&gt;
En distribuciones basadas en Debian (como Ubuntu):
&lt;a href="#en-distribuciones-basadas-en-debian-como-ubuntu-1" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt autoremove
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt clean&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="en-distribuciones-basadas-en-red-hat-como-fedora-1"&gt;
En distribuciones basadas en Red Hat (como Fedora):
&lt;a href="#en-distribuciones-basadas-en-red-hat-como-fedora-1" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf autoremove
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf clean all&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="en-distribuciones-basadas-en-arch-como-endeavour-1"&gt;
En distribuciones basadas en &lt;a href="https://patojad.com.ar/post/2025/02/qu%c3%a9-es-arch-linux-la-mejor-distribuci%c3%b3n-para-usuarios-avanzados/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Arch
&lt;/a&gt; (como Endeavour):
&lt;a href="#en-distribuciones-basadas-en-arch-como-endeavour-1" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Rns &lt;span class="k"&gt;$(&lt;/span&gt;pacman -Qtdq&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Sc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Esto elimina paquetes antiguos y libera espacio. Estos pasos simples pueden mejorar significativamente el rendimiento de tu sistema.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="consejos-adicionales-para-mantener-tu-sistema-óptimo"&gt;
Consejos Adicionales para Mantener tu Sistema Óptimo
&lt;a href="#consejos-adicionales-para-mantener-tu-sistema-%c3%b3ptimo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Actualiza regularmente tu sistema:&lt;/strong&gt; Usa sudo apt update &amp;amp;&amp;amp; sudo apt upgrade para asegurarte de tener las últimas versiones de software.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desactiva servicios innecesarios:&lt;/strong&gt; Usa systemctl list-units &amp;ndash;type=service para identificar servicios que no necesitas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa un tema ligero:&lt;/strong&gt; Si usas una interfaz gráfica, elige temas y aplicaciones que consuman menos recursos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Monitorear y optimizar el rendimiento de tu sistema &lt;strong&gt;Linux&lt;/strong&gt; no tiene que ser complicado. Con herramientas como &lt;code&gt;top&lt;/code&gt;, &lt;code&gt;htop&lt;/code&gt;, &lt;code&gt;df&lt;/code&gt; y &lt;code&gt;du&lt;/code&gt;, puedes identificar problemas y solucionarlos fácilmente. Además, siguiendo algunos consejos básicos de optimización, puedes mantener tu sistema rápido y eficiente.&lt;/p&gt;</description></item><item><title>Bun vs Node.js: ¿Cuál Es Mejor Para Backend en 2025? 🤔</title><link>https://patojad.com.ar/post/2025/02/bun-vs-node.js-cu%C3%A1l-es-mejor-para-backend-en-2025/</link><pubDate>Thu, 20 Feb 2025 10:32:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/02/bun-vs-node.js-cu%C3%A1l-es-mejor-para-backend-en-2025/</guid><description>&lt;p&gt;¿Estás buscando el mejor entorno de ejecución para tu backend en &lt;strong&gt;JavaScript&lt;/strong&gt;? En este artículo, comparo &lt;strong&gt;Bun&lt;/strong&gt; y &lt;strong&gt;Node.js&lt;/strong&gt; , dos de las opciones más populares para desarrollo backend en 2025. Analizamos rendimiento, compatibilidad y facilidad de uso, además de crear un servidor básico con ambos. ¡Descubre cuál es la mejor opción para tus proyectos!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-son-bun-y-nodejs"&gt;
¿Qué son Bun y Node.js?
&lt;a href="#qu%c3%a9-son-bun-y-nodejs" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="nodejs"&gt;
Node.js
&lt;a href="#nodejs" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Node.js&lt;/strong&gt; es un entorno de ejecución de &lt;strong&gt;JavaScript&lt;/strong&gt; que ha sido la opción estándar durante años. Es ampliamente utilizado, tiene una comunidad masiva y es compatible con casi todas las bibliotecas y frameworks. Su madurez lo convierte en una opción confiable para proyectos de cualquier tamaño.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="bun"&gt;
Bun
&lt;a href="#bun" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Por otro lado, Bun es un nuevo jugador en el mercado. Promete ser más rápido que &lt;strong&gt;Node.js&lt;/strong&gt; y ofrece características como soporte nativo para &lt;a href="https://patojad.com.ar/post/2023/03/que-es-typescript-en-que-se-parece-a-javascript/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
TypeScript
&lt;/a&gt; y una API simplificada. Además, Bun no solo es un entorno de ejecución, sino también un administrador de paquetes y un bundler.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comparativa"&gt;
Comparativa
&lt;a href="#comparativa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="rendimiento"&gt;
Rendimiento
&lt;a href="#rendimiento" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Según pruebas recientes, &lt;strong&gt;Bun&lt;/strong&gt; puede ser hasta 3 veces más rápido que Node.js en ciertas tareas, como la inicialización de servidores y la ejecución de scripts. Esto lo hace ideal para aplicaciones que requieren alta velocidad. Sin embargo, &lt;strong&gt;Node.js&lt;/strong&gt; sigue siendo más estable y maduro, con una compatibilidad casi universal.&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Característica&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Bun&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Node.js&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Rendimiento&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;🚀 Más rápido&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;⚡️ Estable y probado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Compatibilidad&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;📈 En crecimiento&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;✅ Amplia compatibilidad&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Facilidad de Uso&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;🧩 Sintaxis limpia y simplificada&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;🛠️ Requiere más configuración&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="compatibilidad-y-facilidad-de-uso"&gt;
Compatibilidad y Facilidad de Uso
&lt;a href="#compatibilidad-y-facilidad-de-uso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;En términos de compatibilidad, &lt;strong&gt;Node.js&lt;/strong&gt; gana por su madurez. Casi todas las bibliotecas y frameworks funcionan sin problemas. Por otro lado, Bun está creciendo rápidamente, pero aún carece de compatibilidad con algunas herramientas específicas.&lt;/p&gt;
&lt;p&gt;En cuanto a facilidad de uso, &lt;strong&gt;Bun&lt;/strong&gt; tiene una ventaja clara. Su sintaxis es más limpia y simplifica muchas tareas, como la instalación de dependencias y la creación de servidores.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="demostración-práctica-crear-un-servidor-básico"&gt;
Demostración Práctica: Crear un Servidor Básico
&lt;a href="#demostraci%c3%b3n-pr%c3%a1ctica-crear-un-servidor-b%c3%a1sico" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="servidor-en-nodejs"&gt;
Servidor en Node.js
&lt;a href="#servidor-en-nodejs" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;http&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createServer&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Hola desde Node.js&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Servidor corriendo en http://localhost:3000&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="servidor-en-bun"&gt;
Servidor en Bun
&lt;a href="#servidor-en-bun" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;TypeScript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-TypeScript" data-lang="TypeScript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;Bun&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;serve&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;port&lt;/span&gt;: &lt;span class="kt"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Hola desde Bun&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Como puedes ver, &lt;strong&gt;Bun&lt;/strong&gt; simplifica mucho el proceso.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ambos tienen sus pros y contras. Si buscas rendimiento y simplicidad, &lt;strong&gt;Bun&lt;/strong&gt; es una excelente opción. Pero si necesitas estabilidad y compatibilidad, Node.js sigue siendo una apuesta segura.&lt;/p&gt;
&lt;p&gt;Si te gustó este artículo, no olvides compartirlo en tus redes sociales y seguirme en mis canales para más contenido sobre Linux , programación y desarrollo web.&lt;/p&gt;</description></item><item><title>¿Qué es Arch Linux? La Mejor Distribución para Usuarios Avanzados 🚀</title><link>https://patojad.com.ar/post/2025/02/qu%C3%A9-es-arch-linux-la-mejor-distribuci%C3%B3n-para-usuarios-avanzados/</link><pubDate>Thu, 13 Feb 2025 09:47:00 +0000</pubDate><guid>https://patojad.com.ar/post/2025/02/qu%C3%A9-es-arch-linux-la-mejor-distribuci%C3%B3n-para-usuarios-avanzados/</guid><description>&lt;p&gt;Si alguna vez has escuchado sobre Arch Linux , pero no estás seguro de qué se trata o por qué debería interesarte, ¡has llegado al lugar correcto! En este artículo, vamos a explorar qué hace que Arch Linux sea una de las distribuciones más populares entre los usuarios avanzados y cómo puede ser la opción perfecta si buscas personalización y control total sobre tu sistema operativo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-arch-linux"&gt;
¿Qué es Arch Linux?
&lt;a href="#qu%c3%a9-es-arch-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Arch Linux es una distribución basada en el principio KISS (Keep It Simple, Stupid) . Esto significa que está diseñada para ser simple, minimalista y altamente personalizable. A diferencia de otras distribuciones como Ubuntu o Debian , Arch Linux no viene con software preinstalado ni interfaces gráficas predeterminadas. Tú decides qué instalar y cómo configurarlo.&lt;/p&gt;
&lt;p&gt;Esto lo convierte en una excelente opción para usuarios que quieren aprender cómo funciona Linux desde cero y tener un control absoluto sobre su sistema. Sin embargo, también puede ser un desafío para principiantes, ya que requiere más conocimientos técnicos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ventajas-de-arch-linux"&gt;
Ventajas de Arch Linux
&lt;a href="#ventajas-de-arch-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="personalización-absoluta"&gt;
Personalización Absoluta
&lt;a href="#personalizaci%c3%b3n-absoluta" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Con Arch Linux , puedes construir tu sistema desde cero, eligiendo cada componente. Desde el kernel hasta el entorno de escritorio, todo está bajo tu control. Esta flexibilidad te permite crear un sistema que se adapte exactamente a tus necesidades.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="actualizaciones-continuas"&gt;
Actualizaciones Continuas
&lt;a href="#actualizaciones-continuas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Arch Linux utiliza un modelo de actualización continua (rolling release ), lo que significa que siempre tendrás la última versión de los paquetes disponibles. No hay que esperar por nuevas versiones mayores; simplemente mantén tu sistema actualizado y disfruta de las últimas características y mejoras.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="documentación-excelente"&gt;
Documentación Excelente
&lt;a href="#documentaci%c3%b3n-excelente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La Wiki de Arch Linux es una de las mejores fuentes de información sobre Linux . Es extremadamente detallada y cubre casi cualquier problema o configuración que puedas imaginar. Si te encuentras atascado, la Wiki probablemente tenga la respuesta.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="rendimiento-optimizado"&gt;
Rendimiento Optimizado
&lt;a href="#rendimiento-optimizado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Al instalar solo lo que necesitas, obtienes un sistema más rápido y eficiente. No hay bloatware ni software innecesario que consuma recursos. Esto lo hace ideal para máquinas antiguas o para aquellos que buscan maximizar el rendimiento.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comparativa-con-otras-distribuciones"&gt;
Comparativa con Otras Distribuciones
&lt;a href="#comparativa-con-otras-distribuciones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para entender mejor por qué Arch Linux podría ser la opción adecuada para ti, hagamos una comparativa rápida con otras distribuciones populares:&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Característica&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Arch Linux&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Ubuntu&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Debian&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Facilidad de uso&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Para usuarios avanzados&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Amigable para principiantes&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Estable y confiable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Personalización&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Total&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Limitada&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Moderada&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Modelo de actualización&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Rolling release&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Versiones LTS y no-LTS&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Versiones estables&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Software preinstalado&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Ninguno&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Mucho software preinstalado&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Software básico&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;Como puedes ver, Arch Linux es la opción perfecta si buscas personalización y control, pero requiere más tiempo y esfuerzo para configurarlo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="primeros-pasos-con-arch-linux"&gt;
Primeros Pasos con Arch Linux
&lt;a href="#primeros-pasos-con-arch-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si decides probar Arch Linux , aquí tienes un vistazo rápido de los primeros pasos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Descarga la ISO: Puedes obtenerla desde el sitio oficial archlinux.org .&lt;/li&gt;
&lt;li&gt;Crea un USB booteable: Usa herramientas como Rufus (en Windows) o Etcher (multiplataforma).&lt;/li&gt;
&lt;li&gt;Arranca desde el USB: Sigue el instalador y consulta la Wiki de Arch para detalles específicos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En próximos videos y artículos, profundizaremos en la instalación paso a paso, así que asegúrate de suscribirte para no perderte nada.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Arch Linux es una distribución increíble para quienes buscan aprender y personalizar su sistema. Aunque puede ser un desafío para principiantes, ofrece un nivel de control y personalización que pocas distribuciones pueden igualar.&lt;/p&gt;
&lt;p&gt;Si te gustó este artículo, no olvides compartirlo en tus redes sociales y seguirme en mis canales para más contenido sobre Linux , programación y desarrollo web .&lt;/p&gt;</description></item><item><title>Cómo instalar Docker en Ubuntu 22.04</title><link>https://patojad.com.ar/post/2024/12/c%C3%B3mo-instalar-docker-en-ubuntu-22.04/</link><pubDate>Mon, 23 Dec 2024 19:18:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/12/c%C3%B3mo-instalar-docker-en-ubuntu-22.04/</guid><description>&lt;p&gt;A continuacion dejo los pasos que seguimos en el video para instalar Docker en Ubuntu 22.04. El mismo procedimiento puede ser aplicado a otras versiones de Ubuntu y distribuciones basadas en Ubuntu.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="paso-1-actualizar-el-sistema"&gt;
Paso 1: Actualizar el sistema
&lt;a href="#paso-1-actualizar-el-sistema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Antes de instalar Docker, es recomendable actualizar el sistema para asegurarse de que todos los paquetes estén al día. Para ello, ejecuta los siguientes comandos en la terminal:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt upgrade&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="paso-2-preparar-entorno"&gt;
Paso 2: Preparar entorno
&lt;a href="#paso-2-preparar-entorno" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Docker requiere algunas dependencias para funcionar correctamente. Puedes instalarlas ejecutando el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add Docker&amp;#39;s official GPG key:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install ca-certificates curl
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo install -m &lt;span class="m"&gt;0755&lt;/span&gt; -d /etc/apt/keyrings
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chmod a+r /etc/apt/keyrings/docker.asc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add the repository to Apt sources:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;deb [arch=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;dpkg --print-architecture&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;. /etc/os-release &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$VERSION_CODENAME&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; stable&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="paso-3-instalar-docker"&gt;
Paso 3: Instalar Docker
&lt;a href="#paso-3-instalar-docker" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que hayas configurado el entorno, puedes instalar Docker en Ubuntu 22.04 con el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="paso-4-verificar-la-instalación"&gt;
Paso 4: Verificar la instalación
&lt;a href="#paso-4-verificar-la-instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para verificar que Docker se haya instalado correctamente, puedes ejecutar el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Volvi a ser freelancer y me encontre con los mismos problemas</title><link>https://patojad.com.ar/post/2024/12/volvi-a-ser-freelancer-y-me-encontre-con-los-mismos-problemas/</link><pubDate>Mon, 16 Dec 2024 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/12/volvi-a-ser-freelancer-y-me-encontre-con-los-mismos-problemas/</guid><description>&lt;p&gt;Después de 4 años decidí volver a retomar un poco los trabajos freelance por mi cuenta, sin equipo, sin nada… Fue un poco tedioso volver porque cuando pasas un tiempo fuera del mercado ya nadie te conoce, no tienes referencias y eso dificulta conseguir un trabajo freelance, sin embargo con perseverancia y dedicación los clientes llegan poco a poco&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="los-clientes-llegan-llegan-los-problemas"&gt;
Los clientes llegan, llegan los problemas
&lt;a href="#los-clientes-llegan-llegan-los-problemas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una de las cosas tediosas del trabajo freelance es modificar cosas que pasaron por miles de personas con distintos tipos de prácticas, tecnologías obsoletas, etc… Sin embargo, eso es cuestión de acomodarse al proyecto y no suele demorar mucho. Pero lo más difícil es siempre entender lo que quiere el cliente, y en los últimos trabajos me paso que los clientes en si no sabían que querían, o si lo sabían no podían ponerlo en palabras (gracias a esto la IA nunca va a reemplazar a nadie)&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/4452wB8y/freelanceragain.png" alt="Freelancer" title="Freelancer"
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Por lo cual al realizar las review de los proyectos siguiendo sus escasas indicaciones me encontraba con que “yo quería esto así, o esto aca” o el típico “podemos agregar esto” Y obviamente todo es extremadamente urgente y se necesita para YA!&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="fuera-del-scoop"&gt;
Fuera del scoop
&lt;a href="#fuera-del-scoop" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Muchas de las ideas que se ocurrían o muchas de las cosas que ellos querían no estaban cotizadas, no pertenecían al planteo inicial, y claramente al comunicar esto aparecen frases como… “pero es obvio que voy a necesitar esto”&lt;/p&gt;
&lt;p&gt;Más allá de que parezca obvio nosotros cotizamos lo que se pide explícitamente y esto no incluye obviedades no explícitas. Esto es algo muy difícil de hacer entender al cliente por lo cual más abajo te voy a dejar una “técnica” super obvia y sencilla que me ahorra muchísimo dolor de cabeza.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="fuera-del-presupuesto"&gt;
Fuera del presupuesto
&lt;a href="#fuera-del-presupuesto" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Si bien tiene mucha relación hay una delgada línea, por ejemplo, no es lo mismo armar una web que diseñar una web, tal vez tú que estás leyendo esto entiendes la diferencia, pero el 90% de los clientes no. Y si yo te hago un presupuesto por el armado de una web (app, backend, etc…) No incluye diseño, arquitectura, imágenes, logos ni nada que no esté presupuestado.&lt;/p&gt;
&lt;p&gt;Esto también es algo que muchas veces la gente cree que con 100 U$D tu te encargas de todo, y si mi trabajo es armar una web no tengo porque buscar las imágenes que a mi me parezcan para que luego me las hagas cambiar porque quieres otras… Si quieres eso también tenemos que hablar del diseño…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-solución"&gt;
Mi “solución”
&lt;a href="#mi-soluci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien esto es algo bastante obvio muchas veces no le dedicamos el tiempo necesario, pero nada mejor que redactar el acuerdo, con todo lo que incluye y lo que no. Esto lleva mucha practica hacerlo bien, pero termina siendo un documento en el que podemos apoyarnos cuando nuestro cliente nos pide cosas de más… Y a ver, no digo que seamos super estrictos en eso, siempre podemos dar un plus, el tema es cuando hacemos un trabajo de 700 U$D por solo 100 U$D&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Me gustaria saber si tu trabajas de freelance, y que secretos puedes contarnos para todos los que aún seguimos teniendo dificultades&lt;/p&gt;</description></item><item><title>Un Guardián Digital para Tu Servidor Cloud</title><link>https://patojad.com.ar/post/2024/11/un-guardi%C3%A1n-digital-para-tu-servidor-cloud/</link><pubDate>Fri, 15 Nov 2024 10:12:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/11/un-guardi%C3%A1n-digital-para-tu-servidor-cloud/</guid><description>&lt;p&gt;Hoy vamos a ver un poco mas sobre &lt;code&gt;fail2ban&lt;/code&gt; y como instalarlo en tu servidor cloud.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-fail2ban"&gt;
¿Qué es Fail2ban?
&lt;a href="#qu%c3%a9-es-fail2ban" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Fail2ban es una herramienta de seguridad que actúa como un vigilante digital para tu servidor cloud. Su función principal es bloquear automáticamente las direcciones IP que intentan acceder a tu servidor de forma repetida y fallida. Esto ayuda a prevenir ataques de fuerza bruta, donde los hackers intentan adivinar contraseñas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalando-fail2ban"&gt;
Instalando Fail2ban
&lt;a href="#instalando-fail2ban" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para instalar Fail2ban en tu servidor, puedes utilizar el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install fail2ban&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Una vez instalado, necesitarás configurar un archivo de configuración local:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nano /etc/fail2ban/jail.local&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="configurando-fail2ban"&gt;
Configurando Fail2ban
&lt;a href="#configurando-fail2ban" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Dentro del archivo de configuración, puedes personalizar varias opciones, como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ignoreip: Una lista de direcciones IP que no serán bloqueadas.&lt;/li&gt;
&lt;li&gt;bantime: El tiempo durante el cual una IP bloqueada permanecerá inaccesible.&lt;/li&gt;
&lt;li&gt;findtime: El período de tiempo en el que se cuentan los intentos fallidos.&lt;/li&gt;
&lt;li&gt;maxretry: El número máximo de intentos fallidos permitidos antes de bloquear una IP.&lt;/li&gt;
&lt;li&gt;También puedes configurar notificaciones por correo electrónico para recibir alertas sobre intentos de intrusión.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="habilitando-jails"&gt;
Habilitando Jails
&lt;a href="#habilitando-jails" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Los &amp;ldquo;jails&amp;rdquo; son reglas específicas que Fail2ban aplica a diferentes servicios en tu servidor, como SSH, FTP, o servicios web. Puedes habilitar o deshabilitar los jails según tus necesidades.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="reiniciando-fail2ban"&gt;
Reiniciando Fail2ban
&lt;a href="#reiniciando-fail2ban" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que hayas configurado los jails, reinicia el servicio de Fail2ban para aplicar los cambios:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl restart fail2ban.service&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="verificando-el-bloqueo-de-ip"&gt;
Verificando el Bloqueo de IP
&lt;a href="#verificando-el-bloqueo-de-ip" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Puedes verificar las direcciones IP bloqueadas utilizando el comando &lt;code&gt;iptables -L&lt;/code&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="desbloqueando-una-ip"&gt;
Desbloqueando una IP
&lt;a href="#desbloqueando-una-ip" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si necesitas desbloquear una IP que ha sido bloqueada por error, puedes utilizar el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo fail2ban-client &lt;span class="nb"&gt;set&lt;/span&gt; &amp;lt;jail&amp;gt; unbanip &amp;lt;ip_address&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Fail2ban es una herramienta poderosa que puede ayudar a proteger tu servidor cloud de ataques maliciosos. Con una configuración adecuada, puedes mejorar significativamente la seguridad de tu infraestructura en línea.&lt;/p&gt;</description></item><item><title>Cómo instalar Bun.js en MacOS con Homebrew</title><link>https://patojad.com.ar/post/2024/11/c%C3%B3mo-instalar-bun.js-en-macos-con-homebrew/</link><pubDate>Fri, 01 Nov 2024 10:24:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/11/c%C3%B3mo-instalar-bun.js-en-macos-con-homebrew/</guid><description>&lt;p&gt;Instalar &lt;strong&gt;Bun.js&lt;/strong&gt; en MacOS puede hacerse de varias maneras, y en este artículo exploraremos cómo hacerlo con Homebrew, un gestor de paquetes que simplifica la instalación de herramientas en Mac. Aunque hay otros métodos, en mi caso he optado por usar Brew por preferencia personal, y en este tutorial te guiaré paso a paso en el proceso. Además, agregaré información básica sobre &lt;strong&gt;Bun.js&lt;/strong&gt; y su utilidad, así como algunos consejos útiles para la instalación.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-bunjs-y-por-qué-usarlo"&gt;
¿Qué es &lt;strong&gt;Bun.js&lt;/strong&gt; y por qué usarlo?
&lt;a href="#qu%c3%a9-es-bunjs-y-por-qu%c3%a9-usarlo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Bun.js&lt;/strong&gt; es un runtime y gestor de paquetes todo en uno para JavaScript, desarrollado con el objetivo de ofrecer una alternativa ultrarrápida a Node.js y npm. Su principal ventaja es la velocidad, ya que está diseñado desde cero para mejorar el rendimiento en aplicaciones web y herramientas de desarrollo. Gracias a su enfoque optimizado en operaciones comunes, &lt;strong&gt;Bun.js&lt;/strong&gt; resulta ideal para desarrolladores que buscan una alternativa a otros runtimes y desean mayor rapidez en sus aplicaciones.&lt;/p&gt;
&lt;p&gt;Para profundizar en &lt;strong&gt;Bun.js&lt;/strong&gt; y su ecosistema, pronto estaré publicando un artículo que detallará todas sus características y ventajas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="requisitos-previos-instalar-homebrew"&gt;
Requisitos previos: Instalar Homebrew
&lt;a href="#requisitos-previos-instalar-homebrew" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Antes de comenzar con la instalación de &lt;strong&gt;Bun.js&lt;/strong&gt;, necesitarás tener Homebrew instalado en tu Mac. Si aún no lo tienes, puedes hacerlo siguiendo los pasos del tutorial que te dejo en este &lt;a href="https://patojad.com.ar/post/2023/02/como-instalar-brew-en-macos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
enlace
&lt;/a&gt;. Homebrew es un gestor de paquetes para MacOS que facilita la instalación de software y herramientas en tu sistema. Una vez que lo tengas instalado, podrás instalar &lt;strong&gt;Bun.js&lt;/strong&gt; y otros paquetes con un simple comando en la terminal.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A continuación, te muestro cómo instalar &lt;strong&gt;Bun.js&lt;/strong&gt; en MacOS, para esto voy a dejarte los comandos que usamos en el video y otra opcion que tambien comentamos para que vos utilices la que creas mas conveniente.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="usando-homebrew"&gt;
Usando Homebrew
&lt;a href="#usando-homebrew" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Sigue estos pasos para instalar &lt;strong&gt;Bun.js&lt;/strong&gt; utilizando Homebrew:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abre la Terminal y ejecuta el siguiente comando para instalar &lt;strong&gt;Bun.js&lt;/strong&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install bun&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Para verificar que &lt;strong&gt;Bun.js&lt;/strong&gt; se haya instalado correctamente, utiliza el siguiente comando:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bun --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Si ves la versión de &lt;strong&gt;Bun.js&lt;/strong&gt; en pantalla, significa que la instalación fue exitosa.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="otros-métodos-para-instalar-bunjs-en-macos"&gt;
Otros métodos para instalar &lt;strong&gt;Bun.js&lt;/strong&gt; en MacOS
&lt;a href="#otros-m%c3%a9todos-para-instalar-bunjs-en-macos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Aunque Brew es una opción rápida y práctica, existen otros métodos para instalar &lt;strong&gt;Bun.js&lt;/strong&gt; en MacOS:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instalación directa desde el script de Bun: Ejecuta el siguiente comando en la Terminal para una instalación rápida:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://bun.sh/install &lt;span class="p"&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# En caso de querer instalar una version específica&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://bun.sh/install &lt;span class="p"&gt;|&lt;/span&gt; bash -s &lt;span class="s2"&gt;&amp;#34;bun-v1.0.0&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
Este script se encargará de descargar e instalar &lt;strong&gt;Bun.js&lt;/strong&gt; directamente desde su sitio oficial.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="solución-de-problemas-comunes"&gt;
Solución de problemas comunes
&lt;a href="#soluci%c3%b3n-de-problemas-comunes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Es posible que te encuentres con algunos problemas durante la instalación. A continuación, presento algunos problemas comunes y cómo solucionarlos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Error al ejecutar comandos de Brew: Si Brew no está reconocido en tu Terminal, asegúrate de que está en tu PATH. Puedes añadirlo con:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;eval &amp;#34;$(/opt/homebrew/bin/brew shellenv)&amp;#34;&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.zprofile
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;/opt/homebrew/bin/brew shellenv&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Error de permisos: Si encuentras problemas de permisos, intenta ejecutar el comando con sudo, aunque esto no suele ser necesario en instalaciones estándar de Brew.
&lt;ul&gt;
&lt;li&gt;Comando ‘bun’ no encontrado después de la instalación: Si la Terminal no reconoce el comando bun después de instalarlo, intenta cerrar y reabrir la Terminal, o añade el PATH de &lt;strong&gt;Bun.js&lt;/strong&gt; manualmente:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/opt/homebrew/bin:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Instalar &lt;strong&gt;Bun.js&lt;/strong&gt; en MacOS con Homebrew es una manera sencilla y práctica para iniciarse con este potente runtime de JavaScript. No obstante, existen otros métodos de instalación, como el script directo o la descarga manual desde GitHub, que también puedes considerar según tus preferencias.&lt;/p&gt;
&lt;p&gt;No olvides visitar el video en YouTube para ver el proceso en acción, y asegúrate de tener Brew correctamente configurado para evitar problemas. Espero que esta guía te haya resultado útil, ¡y te animo a explorar todo el potencial de &lt;strong&gt;Bun.js&lt;/strong&gt; en tus próximos proyectos de desarrollo!&lt;/p&gt;</description></item><item><title>Pacman vs Apt: Una guía para cambiar de gestor de paquetes</title><link>https://patojad.com.ar/post/2024/08/pacman-vs-apt-una-gu%C3%ADa-para-cambiar-de-gestor-de-paquetes/</link><pubDate>Tue, 20 Aug 2024 10:04:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/08/pacman-vs-apt-una-gu%C3%ADa-para-cambiar-de-gestor-de-paquetes/</guid><description>&lt;p&gt;Si estás pensando en cambiar de distribución Linux, es probable que te hayas encontrado con dos gestores de paquetes muy populares: pacman y apt. Ambos herramientas te permiten instalar, actualizar y eliminar software en tu sistema, pero tienen enfoques y sintaxis diferentes. En este artículo, exploraremos las principales diferencias entre pacman y apt para ayudarte a tomar una decisión informada.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-un-gestor-de-paquetes"&gt;
¿Qué es un gestor de paquetes?
&lt;a href="#qu%c3%a9-es-un-gestor-de-paquetes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Antes de adentrarnos en la comparación, es importante entender qué es un gestor de paquetes. Imagina una biblioteca de software, donde cada libro representa un programa. El gestor de paquetes es el bibliotecario que te ayuda a encontrar, tomar prestado y devolver los libros que necesitas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="pacman-vs-apt-una-visión-general"&gt;
Pacman vs. Apt: una visión general
&lt;a href="#pacman-vs-apt-una-visi%c3%b3n-general" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pacman&lt;/strong&gt;: El gestor de paquetes utilizado en Arch Linux y sus derivados. Se caracteriza por su enfoque minimalista y su base de datos de paquetes plana.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apt&lt;/strong&gt;: El gestor de paquetes utilizado en Debian y sus derivados, como Ubuntu. Es conocido por su sistema de dependencias sofisticado y su gran cantidad de paquetes disponibles.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="diferencias-clave"&gt;
Diferencias clave
&lt;a href="#diferencias-clave" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Antes de entrar en materia, es importante tener en cuenta que tanto &lt;code&gt;pacman&lt;/code&gt; como &lt;code&gt;apt&lt;/code&gt; son excelentes gestores de paquetes, cada uno con sus propias fortalezas y debilidades. La elección entre ambos dependerá de tus preferencias personales y necesidades específicas. A continuación, exploraremos algunas de las diferencias clave entre ambos:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="filosofía"&gt;
Filosofía
&lt;a href="#filosof%c3%ada" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pacman&lt;/strong&gt;: Prioriza la simplicidad y la flexibilidad. Te da un mayor control sobre tu sistema, pero requiere una configuración inicial más detallada.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apt&lt;/strong&gt;: Ofrece una experiencia más automatizada y orientada al usuario. Gestiona las dependencias de forma más estricta, lo que puede simplificar la instalación de software.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="sintaxis-de-los-comandos"&gt;
Sintaxis de los comandos
&lt;a href="#sintaxis-de-los-comandos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pacman&lt;/strong&gt;: Utiliza una sintaxis más concisa y directa. Por ejemplo, para instalar un paquete, se usa &lt;code&gt;sudo pacman -S nombre_del_paquete&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apt&lt;/strong&gt;: Tiene una sintaxis más verbosa. Para instalar un paquete, se utiliza &lt;code&gt;sudo apt install nombre_del_paquete&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="base-de-datos-de-paquetes"&gt;
Base de datos de paquetes
&lt;a href="#base-de-datos-de-paquetes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pacman&lt;/strong&gt;: Mantiene una base de datos plana, lo que facilita la gestión de paquetes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apt&lt;/strong&gt;: Utiliza una base de datos más compleja, con información sobre dependencias y conflictos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="actualizaciones"&gt;
Actualizaciones
&lt;a href="#actualizaciones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pacman&lt;/strong&gt;: Ofrece un sistema de actualizaciones más flexible, permitiéndote elegir qué paquetes actualizar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apt&lt;/strong&gt;: Realiza actualizaciones de forma más automatizada, pero puede ser más restrictivo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="tabla-comparativa"&gt;
Tabla comparativa
&lt;a href="#tabla-comparativa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Característica&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Pacman&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Apt&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Filosofía&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Minimalista, flexible&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Automatizado, orientado al usuario&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Sintaxis&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Concisa&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Verbosa&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Base de datos&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Plana&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Compleja&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Actualizaciones&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Flexibles&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Automatizadas&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cuál-es-mejor"&gt;
¿Cuál es mejor?
&lt;a href="#cu%c3%a1l-es-mejor" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La elección entre pacman y apt depende de tus preferencias y necesidades. Si buscas un mayor control sobre tu sistema y prefieres una configuración más manual, pacman puede ser una buena opción. Si prefieres una experiencia más automatizada y una gran cantidad de paquetes disponibles, apt es una excelente elección.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ejemplos-prácticos"&gt;
Ejemplos prácticos
&lt;a href="#ejemplos-pr%c3%a1cticos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Buscar paquetes:
&lt;ul&gt;
&lt;li&gt;Pacman:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacman -Ss firefox&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Apt:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt search firefox&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Buscar paquetes por descripción:
&lt;ul&gt;
&lt;li&gt;Pacman:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacman -F descripción_del_paquete&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Apt:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt-cache search descripción_del_paquete&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Instalar un paquete:
&lt;ul&gt;
&lt;li&gt;Pacman:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S firefox&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Apt:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install firefox&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Actualizar el sistema:
&lt;ul&gt;
&lt;li&gt;Pacman:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Syu&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Apt:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt upgrade&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Eliminar un paquete:
&lt;ul&gt;
&lt;li&gt;Pacman:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Rs firefox&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Apt:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt remove firefox&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Eliminar paquetes huérfanos:
&lt;ul&gt;
&lt;li&gt;Pacman:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Rns &lt;span class="k"&gt;$(&lt;/span&gt;pacman -Qdtq&lt;span class="k"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Apt:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt autoremove&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Limpiar caché:
&lt;ul&gt;
&lt;li&gt;Pacman:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Sc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Apt:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt clean&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Tanto &lt;code&gt;pacman&lt;/code&gt; como &lt;code&gt;apt&lt;/code&gt; son &lt;em&gt;gestores de paquetes&lt;/em&gt; excelentes, cada uno con sus propias fortalezas y debilidades. La mejor opción para ti dependerá de tus necesidades y preferencias personales. Al comprender las diferencias entre ambos, podrás elegir el gestor de paquetes que mejor se adapte a tu flujo de trabajo.&lt;/p&gt;</description></item><item><title>El misterio del WiFi: Cómo envían datos por el aire (sin magia)</title><link>https://patojad.com.ar/post/2024/08/el-misterio-del-wifi-c%C3%B3mo-env%C3%ADan-datos-por-el-aire-sin-magia/</link><pubDate>Sat, 03 Aug 2024 10:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/08/el-misterio-del-wifi-c%C3%B3mo-env%C3%ADan-datos-por-el-aire-sin-magia/</guid><description>&lt;p&gt;En la era digital, el &lt;strong&gt;WiFi&lt;/strong&gt; es como el aire que respiramos: omnipresente y esencial. Pero&amp;hellip; &lt;em&gt;¿alguna vez te has preguntado cómo funciona este milagro de la tecnología? ¿Cómo es posible que nuestros dispositivos se conecten a internet sin cables?&lt;/em&gt; En este artículo, desvelaremos el misterio del &lt;strong&gt;WiFi&lt;/strong&gt; y explicaremos cómo envían datos por el aire sin magia.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-funciona-el-wifi"&gt;
Cómo funciona el &lt;strong&gt;WiFi&lt;/strong&gt;
&lt;a href="#c%c3%b3mo-funciona-el-wifi" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El &lt;strong&gt;WiFi&lt;/strong&gt; es una tecnología de red inalámbrica que permite la comunicación entre dispositivos a través de ondas de radio. Sí, ¡ondas de radio! Al igual que las estaciones de radio que escuchamos en el coche, el &lt;strong&gt;WiFi&lt;/strong&gt; utiliza una banda de frecuencia específica para transmitir datos. Pero, en lugar de música, transmite 1s y 0s, los ladrillos básicos de la información digital.&lt;/p&gt;
&lt;p&gt;Cuando un dispositivo se conecta a una red &lt;strong&gt;WiFi&lt;/strong&gt;, envía una solicitud de conexión al punto de acceso (router). El router, a su vez, asigna una dirección IP al dispositivo y establece una conexión. Luego, cuando el dispositivo quiere enviar datos (como un mensaje o una solicitud de página web), los convierte en una señal digital y la envía al router mediante una antena.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-modulación-cómo-se-convierten-los-datos-en-ondas-de-radio"&gt;
La modulación: Cómo se convierten los datos en ondas de radio
&lt;a href="#la-modulaci%c3%b3n-c%c3%b3mo-se-convierten-los-datos-en-ondas-de-radio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para transmitir los datos por el aire, el &lt;strong&gt;WiFi&lt;/strong&gt; utiliza una técnica llamada modulación. La modulación es el proceso de alterar la señal de radio para codificar la información digital. Piensa en ello como una forma de &amp;ldquo;marcar&amp;rdquo; la señal de radio con los 1s y 0s que componen los datos.&lt;/p&gt;
&lt;p&gt;Existen diferentes tipos de modulación, pero el &lt;strong&gt;WiFi&lt;/strong&gt; utiliza una técnica llamada modulación de amplitud y fase (QAM, por sus siglas en inglés). La QAM altera la amplitud y la fase de la señal de radio para representar los datos. Por ejemplo, un cambio en la amplitud podría representar un 1, mientras que un cambio en la fase podría representar un 0.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-protocolo-ieee-80211-el-lenguaje-del-wifi"&gt;
El protocolo IEEE 802.11: El lenguaje del &lt;strong&gt;WiFi&lt;/strong&gt;
&lt;a href="#el-protocolo-ieee-80211-el-lenguaje-del-wifi" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El protocolo IEEE 802.11 es el estándar que define cómo se comunican los dispositivos en una red &lt;strong&gt;WiFi&lt;/strong&gt;. Es como el lenguaje que hablan los dispositivos para entenderse entre sí. El protocolo define cómo se envían y reciben los datos, cómo se gestionan las conexiones y cómo se resuelven los conflictos.&lt;/p&gt;
&lt;p&gt;El protocolo IEEE 802.11 tiene varias variantes, como 802.11b, 802.11g y 802.11n. Cada variante tiene diferentes velocidades de transmisión y alcances. Por ejemplo, el 802.11n es más rápido y tiene un alcance mayor que el 802.11g.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ejemplos-y-casos-de-estudio"&gt;
Ejemplos y casos de estudio
&lt;a href="#ejemplos-y-casos-de-estudio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El &lt;strong&gt;WiFi&lt;/strong&gt; es utilizado en una variedad de aplicaciones, desde la conectividad en casa y en la oficina hasta la conectividad en dispositivos móviles y vehículos. Aquí te presento algunos ejemplos y casos de estudio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Conectividad en casa: El &lt;strong&gt;WiFi&lt;/strong&gt; es utilizado para conectar dispositivos como laptops, tabletas y smartphones a internet.&lt;/li&gt;
&lt;li&gt;Conectividad en la oficina: El &lt;strong&gt;WiFi&lt;/strong&gt; es utilizado para conectar dispositivos de los empleados y para la conectividad de la red de la empresa.&lt;/li&gt;
&lt;li&gt;Dispositivos móviles: El &lt;strong&gt;WiFi&lt;/strong&gt; es utilizado en dispositivos móviles como smartphones y tabletas para conectarse a internet cuando no hay cobertura de red celular.&lt;/li&gt;
&lt;li&gt;Vehículos: El &lt;strong&gt;WiFi&lt;/strong&gt; es utilizado en vehículos para la conectividad de los sistemas de infoentretenimiento y para la conectividad de los dispositivos de los pasajeros.&lt;/li&gt;
&lt;li&gt;Redes locales: Por lo general podemos ver que dispositivos como cromecast, impresoras, cámaras de seguridad, extensores de wifi, radios de autos, entre otros generan una red wifi local para poder configurarlos.&lt;/li&gt;
&lt;li&gt;Compartir datos moviles: En algunos casos, los dispositivos móviles pueden compartir su conexión a internet a través de una red &lt;strong&gt;WiFi&lt;/strong&gt; generada.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En resumen, el &lt;strong&gt;WiFi&lt;/strong&gt; es una tecnología de red inalámbrica que utiliza ondas de radio para transmitir datos. La modulación es el proceso de alterar la señal de radio para codificar la información digital. El protocolo IEEE 802.11 es el estándar que define cómo se comunican los dispositivos en una red &lt;strong&gt;WiFi&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;WiFi&lt;/strong&gt; es una tecnología que ha revolucionado la forma en que nos conectamos a internet y ha abierto un mundo de posibilidades para la conectividad y la comunicación. Espero que este artículo te haya ayudado a entender mejor cómo funciona el &lt;strong&gt;WiFi&lt;/strong&gt; y su importancia en nuestra vida diaria.&lt;/p&gt;</description></item><item><title>Desmitificando la seguridad de los empaquetados de aplicaciones en Linux</title><link>https://patojad.com.ar/post/2024/07/desmitificando-la-seguridad-de-los-empaquetados-de-aplicaciones-en-linux/</link><pubDate>Thu, 25 Jul 2024 12:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/07/desmitificando-la-seguridad-de-los-empaquetados-de-aplicaciones-en-linux/</guid><description>&lt;p&gt;El empaquetado de aplicaciones en Linux es un tema que ha generado mucho debate en la comunidad. Algunos defienden el uso de paquetes de distribuidores, mientras que otros prefieren el empaquetado de terceros como Flatpak o Snap. En este vídeo, vamos a desmitificar algunos conceptos erróneos sobre la seguridad y el empaquetado de aplicaciones en Linux.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="verificación-de-aplicaciones"&gt;
Verificación de aplicaciones
&lt;a href="#verificaci%c3%b3n-de-aplicaciones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La verificación de aplicaciones es un proceso que garantiza que la aplicación que se descarga y se instala proviene directamente del desarrollador y no ha sido modificada por un tercero. Esto es especialmente importante en Linux, donde cualquier persona puede crear un paquete y distribuirlo. Sin embargo, la verificación de aplicaciones no garantiza que la aplicación sea segura o libre de vulnerabilidades.
Por ejemplo, la biblioteca XZ fue hackeada y contenía una backdoor. Aunque la aplicación fue verificada, todavía contenía el código malicioso. Otro ejemplo es el caso de KeePassXC, donde el mantenedor de la versión de Debian decidió eliminar algunas características sin el consentimiento del desarrollador original.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="empaquetado-de-distribuidores"&gt;
Empaquetado de distribuidores
&lt;a href="#empaquetado-de-distribuidores" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El empaquetado de distribuidores no es necesariamente más seguro que el empaquetado de terceros. Los mantenedores de paquetes pueden no ser desarrolladores y no realizar revisiones de seguridad del código. Además, los paquetes de distribuidores pueden contener versiones antiguas de bibliotecas que no han sido actualizadas con las últimas correcciones de seguridad.
Por ejemplo, la vulnerabilidad de log4j afectó a muchas distribuciones de Linux, incluyendo a Debian y Ubuntu. Aunque los paquetes de distribuidores fueron actualizados, todavía había versiones antiguas de la biblioteca que no habían sido parcheadas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sandbox"&gt;
Sandbox
&lt;a href="#sandbox" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El sandbox es un sistema de permisos que limita lo que una aplicación puede hacer en el sistema. Sin embargo, no garantiza que la aplicación sea segura. Un ejemplo de esto es el caso de las aplicaciones de criptomonedas que fueron hackeadas en el Snap Store. A pesar de que estas aplicaciones estaban sandboxeadas, todavía podían acceder a la conexión a internet y realizar acciones maliciosas.
Otro ejemplo es el caso de Flatpak, que permite a las aplicaciones acceder a la carpeta de documentos del usuario sin restricciones. Aunque el sandbox de Flatpak es más estricto que el de Snap, todavía hay riesgos de seguridad asociados con el uso de aplicaciones sandboxeadas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="dependencias"&gt;
Dependencias
&lt;a href="#dependencias" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Las dependencias en el empaquetado de aplicaciones pueden ser un problema. Los paquetes de distribuidores no siempre están actualizados, y los paquetes de terceros pueden contener versiones antiguas de bibliotecas. Esto puede llevar a vulnerabilidades de seguridad y problemas de compatibilidad.
Por ejemplo, la biblioteca OpenSSL es una dependencia común en muchas aplicaciones. Sin embargo, las versiones antiguas de OpenSSL contienen vulnerabilidades de seguridad que pueden ser explotadas por atacantes. Si una aplicación utiliza una versión antigua de OpenSSL, puede ser vulnerable a ataques, incluso si el paquete ha sido verificado.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En conclusión, la seguridad del empaquetado de aplicaciones en Linux depende de muchos factores. Es importante recordar que los usuarios son responsables de verificar la seguridad de las aplicaciones que instalan. También es importante elegir fuentes de paquetes confiables y mantener las aplicaciones actualizadas.&lt;/p&gt;</description></item><item><title>Explorando las Diferentes Versiones del Kernel de Linux: Guía para Elegir el Adecuado</title><link>https://patojad.com.ar/post/2024/06/explorando-las-diferentes-versiones-del-kernel-de-linux-gu%C3%ADa-para-elegir-el-adecuado/</link><pubDate>Tue, 18 Jun 2024 11:54:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/06/explorando-las-diferentes-versiones-del-kernel-de-linux-gu%C3%ADa-para-elegir-el-adecuado/</guid><description>&lt;p&gt;En el mundo de Linux, el kernel es el corazón del sistema operativo, controlando todo el hardware y permitiendo que el software interactúe con él. Si bien existe un kernel oficial de Linux, existen diversas variantes que se adaptan a diferentes necesidades y casos de uso. En esta oportunidad, exploraremos las distintas versiones del kernel de Linux y te guiaremos para elegir la adecuada para tu sistema.&lt;/p&gt;
&lt;p&gt;Si bien veremos como comando rápido como instalarlo en Arch Linux estos kernels se pueden instalar fácilmente en cualquier distribución de linux.&lt;/p&gt;
&lt;div class="w-full rounded-xl bg-yellow-600/75 text-yellow-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-warning fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;A lo largo del artículo verá la ausencia de guías para Debian/Ubuntu, con el tiempo retomaré contacto con dichas distribuciones y derivadas.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="kernel-de-linux-estándar"&gt;
Kernel de Linux Estándar:
&lt;a href="#kernel-de-linux-est%c3%a1ndar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El kernel oficial de Linux, lanzado por Linus Torvalds y los desarrolladores del proyecto, es la base para todas las demás variantes. Se actualiza cada dos o dos meses y medio, ofreciendo nuevas funciones y correcciones de errores. Si no tienes necesidades específicas, este kernel es una opción sólida y confiable.
Este es el que se suele utilizar por defecto en la mayoría de las distribuciones y suele ser el mas recomendado para la mayoría de los usuarios.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Arch y derivadas:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pasman -Sy linux linux-headers&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Debian/Ubuntu y dereivadas:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install linux linux-headers&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="versiones-lts-soporte-a-largo-plazo"&gt;
Versiones LTS (Soporte a Largo Plazo)
&lt;a href="#versiones-lts-soporte-a-largo-plazo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si buscas estabilidad a largo plazo, las versiones LTS del kernel de Linux son la mejor opción. Estas versiones reciben actualizaciones de seguridad y mantenimiento durante un período prolongado, generalmente hasta 6 años. Son ideales para servidores y sistemas críticos que requieren estabilidad y confiabilidad a largo plazo.
También son una buena opción para equipos viejos que ya tienen hardware deprecado, esto permite mantener actualizaciones de seguridad sin perder la compatibilidad.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalación-1"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n-1" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Arch y derivadas:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Sy linux-tls linux-lts-headers&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="kernel-libre-de-linux"&gt;
Kernel Libre de Linux
&lt;a href="#kernel-libre-de-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para aquellos que priorizan la libertad de software, el kernel Libre de Linux elimina todo el código no libre y binario. Esto significa que solo se incluye software de código abierto, lo que garantiza la transparencia y la seguridad total. Sin embargo, ten en cuenta que la compatibilidad con hardware puede ser limitada.
Linux libre es un proyecto muy interesante que no solo promueve la libertad, como efecto rebote permite demostrar que las bistrós 100% libres no lo son en realidad.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalación-2"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n-2" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Arch y derivadas (via AUR):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -Sy linux-libre linux-libre-headers linux-libre-frimware&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="kernel-reforzado"&gt;
Kernel Reforzado
&lt;a href="#kernel-reforzado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El kernel reforzado está diseñado para mejorar la seguridad del sistema mediante la restricción del acceso a ciertas funciones del kernel y la ocultación de información sensible a otros usuarios. Es ideal para entornos de alta seguridad, como sistemas gubernamentales o financieros.
Sobre este existen versiones con parches interesantes como la de cloudflare. Sin embargo sus usos son mas limitados ya que para el usuario final no tienen mucho sentido.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalación-3"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n-3" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Arch y derivadas (via AUR):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -Sy linux-hardened-git linux-hardened-headers-git&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="kernels-de-tiempo-real-y-baja-latencia"&gt;
Kernels de Tiempo Real y Baja Latencia
&lt;a href="#kernels-de-tiempo-real-y-baja-latencia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Estos kernels están optimizados para aplicaciones que requieren un rendimiento en tiempo real predecible, como la producción de audio o la automatización industrial. Priorizan la latencia mínima entre la asignación de una tarea a la CPU y su ejecución.
La gente suele confundir este kernel y cree que con el la pc funcionara mas rápido, pero deben entender que esta optimizado simplemente llamadas en tiempo real, ideal para aquellos que monitorean lo que graban y realizan producción musical. No obstante este kernel NO deberia usarse si nos dedicamos a jugar, visualizar contenido o stremear, ya que podría ser contradictorio.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalación-4"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n-4" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Arch y derivadas (via AUR):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -Sy linux-rt linux-rt-headers&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="kernel-de-android"&gt;
Kernel de Android
&lt;a href="#kernel-de-android" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El kernel de Android es una versión especializada diseñada para dispositivos móviles como teléfonos inteligentes y tabletas. Incluye optimizaciones para la gestión de energía, la suspensión y reactivación, y controladores de dispositivos específicos para dispositivos móviles.
Este particularmente deberíamos usarlo si viene instalado en nuestro dispositivo, pero rara vez deberíamos intentar compilarlo nosotros dado que no mantiene la compatibilidad con los ordenadores de sobremesa.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="kernels-zen-y-liquorix"&gt;
Kernels Zen y Liquorix
&lt;a href="#kernels-zen-y-liquorix" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Estos kernels se enfocan en mejorar el rendimiento del escritorio de Linux. Implementan optimizaciones para el programador de CPU, la compresión de memoria y la velocidad de lectura/escritura de RAM. Si buscas un mayor rendimiento para juegos o uso general del escritorio, estos kernels pueden ser una buena opción.
Es una gran kernel para ordenadores de sobremesa, y genera mejoras de rendimientos. Sin embargo no hace magia, esto se traduce en mas calor, por lo cual no se recomienda tanto en notebooks dado que las temperaturas elevadas y sus sistemas de refrigeración son muy inferiores a los de los ordenadores de sobremesa.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalación-5"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n-5" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Podemos repasar la instalación de Liquorix en Arch Linux desde el &lt;a href="https://patojad.com.ar/post/2021/05/instalar-el-zen-kernel/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
siguiente articulo
&lt;/a&gt;. Y tambien podemos ver la version orientada a la rama Debian en el &lt;a href="https://patojad.com.ar/post/2020/01/liquorix-que-es-como-lo-instalo/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
siguiente articulo
&lt;/a&gt;. Ambos se encuentran acompañados de una guía de instalación y un video.&lt;/p&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Contiene versiones LTS, Real Time, etc. Siempre siguiendo la premisa de Zen/Liquorix respectivamente.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="kernel-xan-mod"&gt;
Kernel Xan Mod
&lt;a href="#kernel-xan-mod" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Similar a los kernels Zen y Liquorix, Xan Mod ofrece optimizaciones para mejorar el rendimiento del sistema. Se destaca por su enfoque en la personalización, permitiendo a los usuarios ajustar y configurar diversos aspectos del kernel para adaptarlo a sus necesidades específicas.
Tiene una configuración que, dependiendo del hardware, genera un mejor rendimiento que el kernel Zen (liquorix). Sin embargo es probable que veas un poco mas de uso de ram/cpu lo cual es una parte necesaria para visualizar esa alta de performance que vamos a sentir.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalación-6"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n-6" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Arch y derivadas (via AUR):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -Sy linux-xanmod linux-xanmod-headers&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Contiene versiones LTS, Real Time, etc. Siempre siguiendo la premisa de Xanmod.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="tkg-the-kernel-git"&gt;
TKG (The Kernel Git)
&lt;a href="#tkg-the-kernel-git" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;TKG no es un kernel en sí, sino un sistema de compilación que permite a los usuarios crear kernels personalizados. Ofrece gran flexibilidad para elegir parches específicos e integrar optimizaciones personalizadas. Es ideal para desarrolladores y usuarios avanzados que desean un control total sobre el kernel.
En base a esto salen algunos kernel preconfigurados optimizados para usuarios finales, pero la idea principal del proyecto es facilitar a los desarrolladores o usuarios avanzados la configuración y/o compilación del kernel.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalación-7"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n-7" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Arch y derivadas (via AUR):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -Sy linux-tkg linux-tkg-headers&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Contiene versiones LTS, Real Time, etc. Siempre siguiendo la premisa de TKG.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="elegir-el-kernel-adecuado"&gt;
Elegir el Kernel Adecuado
&lt;a href="#elegir-el-kernel-adecuado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La mejor opción de kernel para ti dependerá de tus necesidades y prioridades. Si buscas estabilidad y confiabilidad, el kernel estándar o LTS es una buena elección. Para mayor seguridad, considera el kernel reforzado. Si requieres un rendimiento en tiempo real, opta por un kernel de tiempo real o baja latencia. Para dispositivos móviles, el kernel de Android es esencial. Y si buscas optimizar el rendimiento del escritorio, prueba los kernels Zen, Liquorix o Xan Mod. TKG es ideal para usuarios avanzados que desean un control total sobre el kernel.&lt;/p&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Recuerda: Puedes probar diferentes kernels reiniciando en ellos y comparando el rendimiento y la estabilidad. Si experimentas problemas, siempre puedes volver al kernel original. Asegúrate de instalar los controladores adecuados para tu hardware con cada kernel que uses.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="en-resumen"&gt;
En resumen
&lt;a href="#en-resumen" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El mundo del kernel de Linux ofrece una variedad de opciones para adaptarse a diferentes necesidades. Al comprender las características y ventajas de cada versión, puedes elegir el kernel que mejor se adapte a tu sistema y experiencia de usuario.&lt;/p&gt;</description></item><item><title>Exportando Claves GPG: Protegiendo tu información en cualquier sistema operativo</title><link>https://patojad.com.ar/post/2024/05/exportando-claves-gpg-protegiendo-tu-informaci%C3%B3n-en-cualquier-sistema-operativo/</link><pubDate>Wed, 15 May 2024 11:13:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/05/exportando-claves-gpg-protegiendo-tu-informaci%C3%B3n-en-cualquier-sistema-operativo/</guid><description>&lt;p&gt;En el mundo digital actual, la seguridad de la información es primordial. Las claves GPG (GnuPG) son una herramienta fundamental para proteger tus datos confidenciales, ya sea que estés enviando correos electrónicos, compartiendo archivos o almacenando información sensible. Exportar tus claves GPG te permite respaldarlas y utilizarlas en diferentes dispositivos o sistemas operativos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-son-las-claves-gpg"&gt;
¿Qué son las claves GPG?
&lt;a href="#qu%c3%a9-son-las-claves-gpg" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Las claves GPG, como ya vimos en &lt;a href="https://patojad.com.ar/post/2024/05/exportando-claves-gpg-protegiendo-tu-informaci%c3%b3n-en-cualquier-sistema-operativo/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Cómo Generar una Clave GPG para Firmar Archivos
&lt;/a&gt;, son pares de claves criptográficas que se utilizan para cifrar y descifrar información. La clave pública se comparte con otros usuarios para que puedan enviarte mensajes cifrados que solo tú podrás descifrar con tu clave privada. La clave privada debe mantenerse en secreto, ya que es la única que te permite acceder a la información cifrada.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-exportar-las-claves-gpg"&gt;
¿Por qué exportar las claves GPG?
&lt;a href="#por-qu%c3%a9-exportar-las-claves-gpg" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Exportar las claves GPG tiene varios beneficios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Respaldo:&lt;/strong&gt; Si tu computadora falla o pierdes tu dispositivo, puedes restaurar tus claves GPG desde una copia de seguridad y seguir accediendo a tu información cifrada.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portabilidad:&lt;/strong&gt; Puedes usar tus claves GPG en diferentes dispositivos o sistemas operativos, lo que te permite cifrar y descifrar información sin importar dónde te encuentres.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Colaboración:&lt;/strong&gt; Puedes compartir tu clave pública con otros usuarios para que puedan enviarte mensajes cifrados de forma segura.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-exportar-las-claves-gpg-en-diferentes-sistemas-operativos"&gt;
¿Cómo exportar las claves GPG en diferentes sistemas operativos?
&lt;a href="#c%c3%b3mo-exportar-las-claves-gpg-en-diferentes-sistemas-operativos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El proceso de exportar las claves GPG varía ligeramente según el sistema operativo que estés utilizando. A continuación, se detallan los pasos generales para exportar las claves GPG en Windows, macOS y Linux:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="windows"&gt;
Windows:
&lt;a href="#windows" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Instala &lt;strong&gt;Gpg4win&lt;/strong&gt;, una suite de software GPG para Windows.&lt;/li&gt;
&lt;li&gt;Abre &lt;strong&gt;Kleopatra&lt;/strong&gt;, la aplicación de gestión de claves GPG incluida en &lt;strong&gt;Gpg4win&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Selecciona la clave que deseas exportar en el panel izquierdo.&lt;/li&gt;
&lt;li&gt;Haz clic en el botón &amp;ldquo;Exportar certificado&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Elige la opción &amp;ldquo;Exportar clave&amp;rdquo; y guarda el archivo .asc en una ubicación segura.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="macos"&gt;
MacOS:
&lt;a href="#macos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Instala &lt;strong&gt;GPG Suite&lt;/strong&gt;, una suite de software GPG para macOS.&lt;/li&gt;
&lt;li&gt;Abre &lt;strong&gt;GPG Keychain Access&lt;/strong&gt;, la aplicación de gestión de claves GPG incluida en &lt;strong&gt;GPG Suite&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Selecciona la clave que deseas exportar en la lista de claves.&lt;/li&gt;
&lt;li&gt;Haz clic en el menú &amp;ldquo;Archivo&amp;rdquo; y selecciona &amp;ldquo;Exportar&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Elige la opción &amp;ldquo;Exportar clave&amp;rdquo; y guarda el archivo .asc en una ubicación segura.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="linux"&gt;
Linux:
&lt;a href="#linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Abre una terminal y escribe el siguiente comando para exportar tu clave pública:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gpg --output public.gpg --armor --export jdecima@vasak.net.ar&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Para exportar tu clave privada, escribe el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gpg --output private.gpg --armor --export-secret-key jdecima@vasak.net.ar&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Utiliza el correo que utilizaste a la hora de crearlo, el comando es un ejemplo de como debe usarse&lt;/p&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-yellow-600/75 text-yellow-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-warning fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Recuerda: La clave privada debe mantenerse en secreto y nunca debe compartirse con nadie.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Cómo Generar una Clave GPG para Firmar Archivos</title><link>https://patojad.com.ar/post/2024/05/c%C3%B3mo-generar-una-clave-gpg-para-firmar-archivos/</link><pubDate>Thu, 02 May 2024 09:04:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/05/c%C3%B3mo-generar-una-clave-gpg-para-firmar-archivos/</guid><description>&lt;p&gt;La seguridad digital es una preocupación creciente en el mundo actual, especialmente cuando se trata de la autenticidad e integridad de archivos importantes. Una forma de garantizar que tus archivos no hayan sido modificados y provengan realmente de la fuente que dicen ser es mediante la firma digital, y una herramienta popular para lograr esto es &lt;strong&gt;GPG&lt;/strong&gt; &lt;em&gt;(GNU Privacy Guard)&lt;/em&gt;. En esta guía para principiantes, aprenderás cómo generar tu primera clave &lt;strong&gt;GPG&lt;/strong&gt; para firmar archivos de manera segura.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-gpg-y-para-qué-sirve"&gt;
¿Qué es GPG y para qué sirve?
&lt;a href="#qu%c3%a9-es-gpg-y-para-qu%c3%a9-sirve" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;GPG&lt;/strong&gt;, o &lt;strong&gt;GNU Privacy Guard&lt;/strong&gt;, es una herramienta de criptografía de código abierto que proporciona privacidad y autenticación a través del cifrado de datos y la firma digital. Su función principal es permitir a los usuarios firmar digitalmente archivos para garantizar su autenticidad e integridad. Esto significa que puedes estar seguro de que los archivos no han sido alterados y que provienen realmente de la persona o entidad que afirma haberlos creado.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="generación-de-una-clave-gpg-en-la-línea-de-comandos"&gt;
Generación de una Clave GPG en la Línea de Comandos
&lt;a href="#generaci%c3%b3n-de-una-clave-gpg-en-la-l%c3%adnea-de-comandos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para generar una clave &lt;strong&gt;GPG&lt;/strong&gt;, simplemente sigue estos pasos ya sea Windows, MacOS o Linux:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abre la línea de comandos.&lt;/li&gt;
&lt;li&gt;Ejecuta el comando &lt;code&gt;gpg --full-generate-key&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Sigue las instrucciones en pantalla para configurar los detalles de tu clave, como el tipo de clave y su tamaño.&lt;/li&gt;
&lt;li&gt;Proporciona una contraseña segura cuando se te solicite.&lt;/li&gt;
&lt;li&gt;Una vez completado, tu clave &lt;strong&gt;GPG&lt;/strong&gt; estará lista para ser utilizada.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;¡Felicidades! Ahora has generado tu primera clave &lt;strong&gt;GPG&lt;/strong&gt; y estás un paso más cerca de garantizar la autenticidad e integridad de tus archivos digitales. Asegúrate de guardar tu clave en un lugar seguro y nunca compartirla con nadie más. En futuras guías, exploraremos cómo utilizar esta clave para firmar archivos y proteger tu información aún más.&lt;/p&gt;
&lt;p&gt;Recuerda, la seguridad digital es una responsabilidad de todos, y aprender herramientas como &lt;strong&gt;GPG&lt;/strong&gt; puede ayudarte a proteger tus datos y comunicaciones en línea.&lt;/p&gt;</description></item><item><title>Benchmark: Emuladores de terminal en MacOS y GNU/Linux</title><link>https://patojad.com.ar/post/2024/04/benchmark-emuladores-de-terminal-en-macos-y-gnu-linux/</link><pubDate>Fri, 19 Apr 2024 11:13:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/04/benchmark-emuladores-de-terminal-en-macos-y-gnu-linux/</guid><description>&lt;script&gt;
window.onload = function () {
const linuxbench = new CanvasJS.Chart("linuxCharts", {
exportEnabled: true,
animationEnabled: true,
title:{
text: "Terminales Linux Benchmark - 2014"
},
subtitles: [{
text: "Terminales de GNU/Linux usadas para el benchmark en 2014 "
}],
axisX: {
title: "States"
},
axisY: {
title: "Demora - segundos",
titleFontColor: "#4F81BC",
lineColor: "#4F81BC",
labelFontColor: "#4F81BC",
tickColor: "#4F81BC",
includeZero: true
},
toolTip: {
shared: true
},
legend: {
cursor: "pointer",
itemclick: toggleDataSeries
},
data: [{
type: "column",
name: "Warp",
showInLegend: true,
yValueFormatString: "#,##0.# s",
dataPoints: [
{ label: "Solo caracteres ASCII", y: 3.45 },
{ label: "Caracteres Unicode", y: 3.48 },
{ label: "Códigos CSI con pocos caracteres", y: 2.59 },
{ label: "Códigos de escape largos", y: 8.21 },
{ label: "Imágenes", y: 2.75 }
]
},
{
type: "column",
name: "kgx",
axisYType: "secondary",
showInLegend: true,
yValueFormatString: "#,##0.# s",
dataPoints: [
{ label: "Solo caracteres ASCII", y: 1.28 },
{ label: "Caracteres Unicode", y: 1.67 },
{ label: "Códigos CSI con pocos caracteres", y: 3.05 },
{ label: "Códigos de escape largos", y: 5.37 },
{ label: "Imágenes", y: 3.46 }
]
},
{
type: "column",
name: "Kitty",
axisYType: "secondary",
showInLegend: true,
yValueFormatString: "#,##0.# s",
dataPoints: [
{ label: "Solo caracteres ASCII", y: 3.29 },
{ label: "Caracteres Unicode", y: 3.04 },
{ label: "Códigos CSI con pocos caracteres", y: 1.67 },
{ label: "Códigos de escape largos", y: 2.4 },
{ label: "Imágenes", y: 1.81 }
]
}
]
});
const macosbench = new CanvasJS.Chart("macosCharts", {
exportEnabled: true,
animationEnabled: true,
title:{
text: "Terminales MacOS Benchmark - 2014"
},
subtitles: [{
text: "Terminales de MacOS usadas para el benchmark en 2014 "
}],
axisX: {
title: "States"
},
axisY: {
title: "Demora - segundos",
titleFontColor: "#4F81BC",
lineColor: "#4F81BC",
labelFontColor: "#4F81BC",
tickColor: "#4F81BC",
includeZero: true
},
toolTip: {
shared: true
},
legend: {
cursor: "pointer",
itemclick: toggleDataSeries
},
data: [{
type: "column",
name: "Warp",
showInLegend: true,
yValueFormatString: "#,##0.# s",
dataPoints: [
{ label: "Solo caracteres ASCII", y: 3.02 },
{ label: "Caracteres Unicode", y: 2.55 },
{ label: "Códigos CSI con pocos caracteres", y: 2.38 },
{ label: "Códigos de escape largos", y: 7.08 },
{ label: "Imágenes", y: 2.67 }
]
},
{
type: "column",
name: "Apple Terminal",
axisYType: "secondary",
showInLegend: true,
yValueFormatString: "#,##0.# s",
dataPoints: [
{ label: "Solo caracteres ASCII", y: 7.2 },
{ label: "Caracteres Unicode", y: 4.43 },
{ label: "Códigos CSI con pocos caracteres", y: 3.71 },
{ label: "Códigos de escape largos", y: 28.22 },
{ label: "Imágenes", y: 9.07 }
]
},
{
type: "column",
name: "Kitty",
axisYType: "secondary",
showInLegend: true,
yValueFormatString: "#,##0.# s",
dataPoints: [
{ label: "Solo caracteres ASCII", y: 1.68 },
{ label: "Caracteres Unicode", y: 2.77 },
{ label: "Códigos CSI con pocos caracteres", y: 2 },
{ label: "Códigos de escape largos", y: 3.41 },
{ label: "Imágenes", y: 2.41 }
]
}
]
});
linuxbench.render();
macosbench.render();
function toggleDataSeries(e) {
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
e.dataSeries.visible = false;
} else {
e.dataSeries.visible = true;
}
e.chart.render();
}
}
&lt;/script&gt;
&lt;p&gt;Medir el rendimiento del emulador de terminal es fundamental para los usuarios que buscan una experiencia fluida y eficiente. En este sentido, se centra en tres aspectos principales: el consumo de energía en tareas habituales, la latencia del teclado a la pantalla y el rendimiento al procesar grandes cantidades de datos.&lt;/p&gt;
&lt;p&gt;Kitty tiene un &amp;ldquo;kitten&amp;rdquo; integrado para medir el rendimiento de transferencia. Funciona mediante la carga de grandes cantidades de datos de diferentes tipos en el dispositivo tty y midiendo qué tan rápido el terminal analiza y responde a ellos. Las mediciones a continuación se realizaron con la misma fuente, tamaño de fuente y tamaño de ventana para todos los terminales, y con la configuración predeterminada, en la misma computadora.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="replicar-el-proceso"&gt;
Replicar el proceso
&lt;a href="#replicar-el-proceso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para replicar el proceso de medición de rendimiento, primero necesitas instalar &lt;code&gt;kitty&lt;/code&gt; en tu sistema. Luego, ejecuta el siguiente comando en tu terminal:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kitten __benchmark__ --render&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="entendiéndo-los-resultados"&gt;
Entendiéndo los resultados
&lt;a href="#entendi%c3%a9ndo-los-resultados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Los resultados de las pruebas se dividen en cinco categorías: solo caracteres ASCII, caracteres Unicode, códigos CSI con pocos caracteres, códigos de escape largos e imágenes. Cada categoría representa un tipo diferente de datos que se procesan en el terminal.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="solo-caracteres-ascii"&gt;
Solo caracteres ASCII
&lt;a href="#solo-caracteres-ascii" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Los caracteres ASCII son aquellos que pertenecen al conjunto de caracteres ASCII estándar, que incluye letras, números, signos de puntuación y algunos caracteres especiales. Estos caracteres se representan mediante un código numérico de 7 bits. Se utilizan comúnmente en la entrada y salida de datos en la mayoría de los entornos de terminal y son compatibles con una amplia gama de dispositivos y sistemas.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="caracteres-unicode"&gt;
Caracteres Unicode
&lt;a href="#caracteres-unicode" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Los caracteres Unicode son aquellos que pertenecen al estándar Unicode, que es un estándar de codificación de caracteres que permite representar la mayoría de los sistemas de escritura del mundo, así como símbolos y caracteres especiales. Los caracteres Unicode se utilizan cuando se necesita admitir una amplia variedad de idiomas y símbolos en la entrada y salida de datos en la terminal.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="códigos-csi-con-pocos-caracteres"&gt;
Códigos CSI con pocos caracteres
&lt;a href="#c%c3%b3digos-csi-con-pocos-caracteres" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Los códigos CSI (Control Sequence Introducer) son secuencias de escape que se utilizan para controlar aspectos de la apariencia y el comportamiento de la terminal. Los códigos CSI con pocos caracteres son aquellos que consisten en una secuencia de escape de control simple que realiza una acción específica, como cambiar el color del texto o mover el cursor a una posición específica en la pantalla.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="códigos-de-escape-largos"&gt;
Códigos de escape largos
&lt;a href="#c%c3%b3digos-de-escape-largos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Los códigos de escape largos son secuencias de escape más complejas que los códigos CSI con pocos caracteres. Estos códigos pueden realizar acciones más avanzadas, como cambiar las propiedades de la terminal, realizar operaciones de formato de texto más complejas o controlar dispositivos periféricos conectados a la terminal.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="imágenes"&gt;
Imágenes
&lt;a href="#im%c3%a1genes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;En algunas terminales avanzadas, es posible mostrar imágenes directamente en la pantalla utilizando códigos de escape específicos. Estas imágenes pueden ser gráficos simples, como iconos o logotipos, y se utilizan para mejorar la experiencia visual del usuario en la terminal.
En resumen, cada uno de estos tipos se utiliza en la terminal para diferentes propósitos, desde la representación de caracteres básicos hasta el control avanzado de la apariencia y el comportamiento de la terminal, e incluso la visualización de imágenes directamente en la pantalla. Su uso depende de las necesidades específicas de la aplicación o del entorno de trabajo en la terminal.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="resultados-en-macos"&gt;
Resultados en MacOS
&lt;a href="#resultados-en-macos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En MacOS se realizaron las pruebas con los siguientes terminales: Warp, Apple Terminal y Kitty. Sirviendo Kitty y Warp para comparar con las pruebas realizadas en GNU/Linux. A continuación, se presentan los resultados obtenidos:&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Terminal&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Solo caracteres ASCII&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Caracteres Unicode&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Códigos CSI con pocos caracteres&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Códigos de escape largos&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Imágenes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Warp&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;3.02&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;2.55&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;2.38&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;7.08&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;2.67&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Apple Terminal&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;7.2&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;4.43&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;3.71&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;28.22&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;9.07&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Kitty&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;1.68&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;2.77&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;2&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;3.41&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;2.41&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;En esta tabla, cada columna representa diferentes tipos de datos. La columna CSI es para datos que consisten en una combinación de códigos de escape de formato típicos y algo de texto solo ASCII.&lt;/p&gt;
&lt;div id="macosCharts" style="height: 600px; width: 100%;"&gt;&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="resultados-en-gnulinux"&gt;
Resultados en GNU/Linux
&lt;a href="#resultados-en-gnulinux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En GNU/Linux se realizaron las pruebas con los siguientes terminales: Warp, kgx y Kitty. Siendo kgx la relativamente &lt;em&gt;nueva&lt;/em&gt; terminal de Gnome. A continuación, se presentan los resultados obtenidos:&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Terminal&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Solo caracteres ASCII&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Caracteres Unicode&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Códigos CSI con pocos caracteres&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Códigos de escape largos&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Imágenes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Warp&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;3.45&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;3.48&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;2.59&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;8.21&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;2.75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;kgx&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;1.28&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;1.67&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;3.05&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;5.37&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;3.46&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Kitty&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;3.29&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;3.04&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;1.67&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;2.4&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;1.81&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;En esta tabla, cada columna representa diferentes tipos de datos. La columna CSI es para datos que consisten en una combinación de códigos de escape de formato típicos y algo de texto solo ASCII.&lt;/p&gt;
&lt;div id="linuxCharts" style="height: 600px; width: 100%;"&gt;&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Los resultados de nuestra comparativa demuestran que Kitty destaca en términos de rendimiento en ambos sistemas operativos. Con tiempos de procesamiento más rápidos y una menor latencia, Kitty ofrece una experiencia superior en la mayoría de las métricas evaluadas. Si buscas un emulador de terminal que priorice el rendimiento, Kitty es una opción sólida tanto en MacOS como en GNU/Linux.&lt;/p&gt;
&lt;script src="https://cdn.canvasjs.com/canvasjs.min.js"&gt;&lt;/script&gt;</description></item><item><title>Descubriendo PrimeVue: La Biblioteca de Componentes para Desarrolladores Vue.js</title><link>https://patojad.com.ar/post/2024/04/descubriendo-primevue-la-biblioteca-de-componentes-para-desarrolladores-vue.js/</link><pubDate>Thu, 18 Apr 2024 10:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/04/descubriendo-primevue-la-biblioteca-de-componentes-para-desarrolladores-vue.js/</guid><description>&lt;p&gt;Si eres nuevo en el mundo del desarrollo web con &lt;strong&gt;Vue.js&lt;/strong&gt;, es posible que aún no estés familiarizado con &lt;strong&gt;&lt;a href="https://primevue.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeVue
&lt;/a&gt;&lt;/strong&gt;. ¡Pero no te preocupes! En este artículo, te introduciré a esta potente biblioteca de componentes y te mostraré por qué es una herramienta esencial para cualquier desarrollador que trabaje con &lt;strong&gt;Vue.js&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-primevue"&gt;
¿Qué es PrimeVue?
&lt;a href="#qu%c3%a9-es-primevue" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://primevue.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeVue
&lt;/a&gt;&lt;/strong&gt; es una biblioteca de componentes de interfaz de usuario (UI) diseñada específicamente para &lt;strong&gt;Vue.js&lt;/strong&gt;. ¿Qué significa esto? En pocas palabras, &lt;strong&gt;&lt;a href="https://primevue.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeVue
&lt;/a&gt;&lt;/strong&gt; proporciona una amplia gama de componentes predefinidos listos para usar en tus aplicaciones &lt;strong&gt;Vue.js&lt;/strong&gt;, lo que te permite construir interfaces de usuario de manera rápida y eficiente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-ofrece-primevue-a-los-desarrolladores"&gt;
¿Qué ofrece PrimeVue a los desarrolladores?
&lt;a href="#qu%c3%a9-ofrece-primevue-a-los-desarrolladores" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://primevue.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeVue
&lt;/a&gt;&lt;/strong&gt; ofrece una variedad de componentes UI esenciales, como botones, formularios, tablas, gráficos y mucho más. Estos componentes están diseñados con un enfoque en la usabilidad, la accesibilidad y el rendimiento, lo que significa que puedes crear interfaces de usuario atractivas y funcionales sin tener que preocuparte por los detalles técnicos subyacentes.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://primevue.org/setup/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Documentación
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-importancia-de-primevue-en-el-ecosistema-de-vuejs"&gt;
La importancia de PrimeVue en el ecosistema de Vue.js
&lt;a href="#la-importancia-de-primevue-en-el-ecosistema-de-vuejs" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En un ecosistema tan rico y diverso como &lt;strong&gt;Vue.js&lt;/strong&gt;, &lt;strong&gt;&lt;a href="https://primevue.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeVue
&lt;/a&gt;&lt;/strong&gt; destaca como una de las opciones preferidas para el desarrollo de interfaces de usuario. Su facilidad de uso, su amplia gama de componentes y su sólida comunidad de usuarios lo convierten en una herramienta imprescindible para cualquier proyecto &lt;strong&gt;Vue.js&lt;/strong&gt;, ya sea pequeño o grande.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="filosofía-de-diseño-de-primevue"&gt;
Filosofía de diseño de PrimeVue
&lt;a href="#filosof%c3%ada-de-dise%c3%b1o-de-primevue" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La filosofía de diseño de &lt;strong&gt;&lt;a href="https://primevue.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeVue
&lt;/a&gt;&lt;/strong&gt; se centra en la simplicidad, la modularidad y la flexibilidad. Los componentes están diseñados para ser fáciles de usar y personalizar, lo que te permite adaptarlos a las necesidades específicas de tu proyecto. Además, &lt;strong&gt;&lt;a href="https://primevue.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeVue
&lt;/a&gt;&lt;/strong&gt; sigue las mejores prácticas de diseño de interfaces de usuario, lo que garantiza una experiencia de usuario intuitiva y agradable.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="beneficios-del-uso-de-primevue"&gt;
Beneficios del uso de PrimeVue
&lt;a href="#beneficios-del-uso-de-primevue" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;¿Por qué deberías considerar usar &lt;strong&gt;&lt;a href="https://primevue.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeVue
&lt;/a&gt;&lt;/strong&gt; en tu próximo proyecto &lt;strong&gt;Vue.js&lt;/strong&gt;? Aquí hay algunos beneficios clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ahorro de tiempo:&lt;/strong&gt; Con una amplia gama de componentes listos para usar, puedes construir interfaces de usuario de manera rápida y eficiente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistencia:&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://primevue.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeVue
&lt;/a&gt;&lt;/strong&gt; proporciona una colección coherente y bien diseñada de componentes, lo que garantiza una apariencia y funcionalidad uniformes en toda tu aplicación.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comunidad activa:&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://primevue.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeVue
&lt;/a&gt;&lt;/strong&gt; cuenta con una comunidad activa de desarrolladores y usuarios que están disponibles para proporcionar soporte, compartir conocimientos y contribuir al desarrollo continuo de la biblioteca.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En resumen, &lt;strong&gt;&lt;a href="https://primevue.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeVue
&lt;/a&gt;&lt;/strong&gt; es una biblioteca de componentes UI poderosa y fácil de usar que ofrece una solución completa para el desarrollo de interfaces de usuario en aplicaciones &lt;strong&gt;Vue.js&lt;/strong&gt;. Ya seas un principiante o un experto en &lt;strong&gt;Vue.js&lt;/strong&gt;, &lt;strong&gt;&lt;a href="https://primevue.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeVue
&lt;/a&gt;&lt;/strong&gt; te proporciona las herramientas que necesitas para construir aplicaciones web modernas y atractivas.&lt;/p&gt;
&lt;p&gt;¡Espero que esta introducción te haya inspirado a explorar &lt;strong&gt;&lt;a href="https://primevue.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeVue
&lt;/a&gt;&lt;/strong&gt; y todas las posibilidades emocionantes que ofrece para tus proyectos &lt;strong&gt;Vue.js&lt;/strong&gt;! Y recuerda, ¡el equipo de &lt;strong&gt;&lt;a href="https://www.primetek.com.tr/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
PrimeTek
&lt;/a&gt;&lt;/strong&gt; está para ayudarte en cada paso del camino!&lt;/p&gt;</description></item><item><title>Bun o Node.js en 2024: ¿Cuál es la mejor opción para desarrollo web?</title><link>https://patojad.com.ar/post/2024/04/bun-o-node.js-en-2024-cu%C3%A1l-es-la-mejor-opci%C3%B3n-para-desarrollo-web/</link><pubDate>Wed, 10 Apr 2024 09:04:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/04/bun-o-node.js-en-2024-cu%C3%A1l-es-la-mejor-opci%C3%B3n-para-desarrollo-web/</guid><description>&lt;p&gt;Cuando se trata de desarrollo web, ¡Hay tantas herramientas! Pero la opción más popular y ampliamente utilizada es &lt;strong&gt;Node.js&lt;/strong&gt;. Sin embargo, &lt;strong&gt;Bun&lt;/strong&gt;, una nueva herramienta, también trae muchos beneficios.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="deberías-cambiar-de-nodejs-a-bun-en-2024"&gt;
¿Deberías cambiar de Node.js a Bun en 2024?
&lt;a href="#deber%c3%adas-cambiar-de-nodejs-a-bun-en-2024" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Hoy estamos aquí para analizar las diferencias clave y ayudarnos a decidir cuál podría ser la mejor opción para este 2024. Así que, ¡toma una taza de café ☕️, pon tu lista de reproducción de codificación favorita y vamos a darle!&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="comprendiendo-bun-el-novato-en-el-barrio"&gt;
Comprendiendo Bun: El Novato en el Barrio
&lt;a href="#comprendiendo-bun-el-novato-en-el-barrio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Imagina a &lt;strong&gt;Bun&lt;/strong&gt; como tu fiel compañero, siempre listo para simplificar tus aventuras de desarrollo web. Este moderno y liviano entorno de ejecución es un nuevo entorno de ejecución de &lt;strong&gt;JavaScript&lt;/strong&gt; completamente escrito en el lenguaje de programación &lt;strong&gt;Zig&lt;/strong&gt;, como una brisa fresca en un día caluroso de verano: refrescante y eficiente. &lt;strong&gt;Bun&lt;/strong&gt; está diseñado para ser un reemplazo directo de &lt;strong&gt;Node.js&lt;/strong&gt; y soporta la mayoría de las mismas API y características. Con &lt;strong&gt;Bun&lt;/strong&gt;, construir aplicaciones web se vuelve muy fácil gracias a su sintaxis intuitiva y características simplificadas.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="explorando-nodejs-el-guerrero-veterano"&gt;
Explorando Node.js: El Guerrero Veterano
&lt;a href="#explorando-nodejs-el-guerrero-veterano" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Ahora, imagina a &lt;strong&gt;Node.js&lt;/strong&gt; como el guerrero veterano del reino del desarrollo web, probado en batalla y confiable. Este entorno de ejecución es tu elección para aplicaciones escalables y de alto rendimiento. Su modelo de I/O no bloqueante y basado en eventos es como tener un superpoder para manejar múltiples tareas simultáneamente. Esto lo hace adecuado para manejar conexiones concurrentes y procesar grandes volúmenes de datos. Con su vasto ecosistema de módulos y bibliotecas, &lt;strong&gt;Node.js&lt;/strong&gt; capacita a los desarrolladores para crear una amplia gama de aplicaciones, desde servidores web hasta dispositivos IoT.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="comparación-de-características-bun-vs-nodejs"&gt;
Comparación de características: Bun vs. Node.js
&lt;a href="#comparaci%c3%b3n-de-caracter%c3%adsticas-bun-vs-nodejs" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento:&lt;/strong&gt; Node.js brilla en el manejo de miles de conexiones con facilidad, como un superhéroe manejando una ciudad bulliciosa. Por otro lado, Bun, aunque más nuevo, se defiende bien y es perfecto para cargas de trabajo moderadas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Facilidad de uso:&lt;/strong&gt; Bun es tu guía amigable del barrio, haciendo del desarrollo web un paseo alegre con su simplicidad. Mientras tanto, Node.js ofrece una inmersión más profunda en el mundo de la programación asincrónica, como dominar un rompecabezas complejo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalabilidad:&lt;/strong&gt; Tanto Bun como Node.js son tus compañeros confiables para escalar aplicaciones. Node.js destaca en el manejo de conexiones concurrentes, mientras que Bun hereda esta fortaleza y se adapta a varios entornos sin problemas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="escenarios-del-mundo-real-dónde-brillan"&gt;
Escenarios del Mundo Real: ¿Dónde Brillan?
&lt;a href="#escenarios-del-mundo-real-d%c3%b3nde-brillan" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bun:&lt;/strong&gt; Ideal para startups y equipos pequeños, Bun es tu compañero ágil para construir aplicaciones web y APIs livianas. Es como tener una varita mágica para prototipos rápidos sin comprometer el rendimiento.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node.js:&lt;/strong&gt; Ampliamente utilizado en diversas industrias, Node.js es tu aliado versátil para aplicaciones diversas, desde servidores web hasta dispositivos IoT. Su capacidad para manejar tareas de I/O lo convierte en el favorito entre las empresas para construir soluciones robustas y de alto rendimiento.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="pensamientos-finales-eligiendo-tu-compañero-de-desarrollo-web"&gt;
Pensamientos Finales: Eligiendo tu Compañero de Desarrollo Web
&lt;a href="#pensamientos-finales-eligiendo-tu-compa%c3%b1ero-de-desarrollo-web" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En la batalla de &lt;strong&gt;Bun&lt;/strong&gt; vs. &lt;strong&gt;Node.js&lt;/strong&gt;, la elección es tuya según tu búsqueda en el reino del desarrollo web. Ya sea que busques simplicidad y velocidad o potencia y escalabilidad, tanto &lt;strong&gt;Bun&lt;/strong&gt; como &lt;strong&gt;Node.js&lt;/strong&gt; están listos para acompañarte en tus aventuras de desarrollo web.&lt;/p&gt;
&lt;p&gt;Entonces, queridos desarrolladores, ¿qué compañero elegirás para tu próxima aventura de desarrollo web?&lt;/p&gt;</description></item><item><title>De VMware a una Infraestructura alternativa</title><link>https://patojad.com.ar/post/2024/04/de-vmware-a-una-infraestructura-alternativa/</link><pubDate>Mon, 08 Apr 2024 10:24:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/04/de-vmware-a-una-infraestructura-alternativa/</guid><description>&lt;p&gt;Para proporcionar algo de contexto antes de profundizar en nuestro artículo, vale la pena recapitular brevemente la situación actual con &lt;strong&gt;VMware&lt;/strong&gt; y las razones por las que muchas empresas están migrando a soluciones alternativas (incluso de código abierto, como aquellas basadas en infraestructura Ubuntu).&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-las-empresas-se-están-alejando-de-vmware"&gt;
¿Por qué las empresas se están alejando de VMware?
&lt;a href="#por-qu%c3%a9-las-empresas-se-est%c3%a1n-alejando-de-vmware" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;VMware&lt;/strong&gt; es un proveedor líder en el campo de la &lt;a href="https://patojad.com.ar/post/2020/02/que-es-la-virtualizacion/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
virtualización
&lt;/a&gt;, con aproximadamente el 45% de participación en el mercado. Muchas empresas han estado utilizando productos &lt;strong&gt;VMware&lt;/strong&gt; desde hace décadas, y si bien sus herramientas son familiares y ampliamente difusas, también son costosas ya que se basan en tecnología propietaria.&lt;/p&gt;
&lt;p&gt;Con la adquisición de &lt;strong&gt;VMware&lt;/strong&gt; por parte de &lt;strong&gt;Broadcom&lt;/strong&gt;, las preocupaciones existentes relacionadas con los costos y la dependencia de un único proveedor ocupan un lugar destacado en la agenda de muchos usuarios empresariales. Siguiendo las anteriores adquisiciones como por ejemplo las de &lt;strong&gt;CA Technologies&lt;/strong&gt; y &lt;strong&gt;Symantec&lt;/strong&gt;, los clientes experimentaron un aumento de precios, reducción de la inversión en innovación o desarrollo y la reducción o limitación del soporte.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-seguir"&gt;
¿Cómo seguir?
&lt;a href="#c%c3%b3mo-seguir" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Con un escenario parecido, los clientes de &lt;strong&gt;VMware&lt;/strong&gt; temen que suceda lo mismo con la reciente adquisición. En una encuesta realizada a más de 300 usuarios empresariales de &lt;strong&gt;VMware&lt;/strong&gt; tras el anuncio de la adquisición, 451 Research encontró que el 40% de los encuestados se sienten inseguros después del trato. A la luz de estas preocupaciones, los actuales clientes de VMware ahora tienen varias opciones (afortunadamente).&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="seguir-usando-vmware"&gt;
Seguir usando VMware
&lt;a href="#seguir-usando-vmware" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La primera opción es seguir usando &lt;strong&gt;VMware&lt;/strong&gt;. Evitando la necesidad de migrar y volver a capacitar o entrenar a los usuarios y personal técnico en general, esta opción ofrece estabilidad, pero sacrifica flexibilidad, además eventualmente puede traer como consecuencia un alto costo total de propiedad a la vez que presenta algunos riesgos comerciales debido a cambios o evoluciones de la oferta de servicios tras la compra.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="la-nube-pública"&gt;
La Nube Pública
&lt;a href="#la-nube-p%c3%bablica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Otra opción es pasar a una nube pública o &lt;strong&gt;Public Cloud&lt;/strong&gt;. Estas plataformas dan a las empresas acceso a poderosas herramientas y a una arquitectura más moderna, pero a veces cuando se ejecuta con importantes cargas de trabajo y a largo plazo las nubes públicas pueden resultar muy costosas.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="kubevirt-y-kubernetes"&gt;
Kubevirt y Kubernetes
&lt;a href="#kubevirt-y-kubernetes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La siguiente alternativa es utilizar &lt;strong&gt;Kubevirt&lt;/strong&gt; para ejecutar temporalmente máquinas virtuales en &lt;strong&gt;Kubernetes&lt;/strong&gt;. Si bien esta puede ser una buena solución intermedia o temporal antes de transformar y rediseñar por completo las cargas de trabajo, no es viable a largo plazo. &lt;strong&gt;Kubernetes&lt;/strong&gt; está destinado a cargas de &lt;em&gt;trabajo sin estado&lt;/em&gt; (stateless), efímeras y escalables, pero aquellas cargas de trabajo que se ejecutan en las máquinas virtuales tradicionales tienen estado, son duraderas y difíciles de escalar, lo que convierte esta opción en algo poco práctico con el pasar del tiempo.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="migrar-a-una-solución-de-código-abierto"&gt;
Migrar a una solución de código abierto
&lt;a href="#migrar-a-una-soluci%c3%b3n-de-c%c3%b3digo-abierto" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La opción final y, en muchos casos, la más convincente es migrar o mover los servicios hacia otras soluciones de &lt;a href="https://patojad.com.ar/post/2020/02/que-es-la-virtualizacion/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
virtualización
&lt;/a&gt; de infraestructura de código abierto con una empresa comercial que ofrezca una alternativa comercial (pero compatible con todos los estándares).&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="próximos-pasos"&gt;
Próximos pasos
&lt;a href="#pr%c3%b3ximos-pasos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En nuestro próximo artículo profundizaremos como &lt;strong&gt;OpenStack&lt;/strong&gt; puede convertirse en una válida opción para dejar atrás VMware.&lt;/p&gt;
&lt;p&gt;Si tu carga de trabajo puede ser redimensionada puedes optar por un VPS en la Nube de alto rendimiento, muchos proveedores privados pueden ofrecerte una amplia variedad de servicios como por ejemplo la gente de &lt;a href="https://plataforma.vpsuniverse.net/aff.php?aff=25" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
VPSuniverse
&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Formatos de Empaquetado en Linux: Nativos, Flatpak, Snap y AppImage</title><link>https://patojad.com.ar/post/2024/03/formatos-de-empaquetado-en-linux-nativos-flatpak-snap-y-appimage/</link><pubDate>Mon, 25 Mar 2024 12:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/03/formatos-de-empaquetado-en-linux-nativos-flatpak-snap-y-appimage/</guid><description>&lt;p&gt;En el tradicional formato de empaquetado de Linux, tenemos &lt;strong&gt;DEB&lt;/strong&gt; (para debian, ubuntu y derivadas), &lt;strong&gt;RPM&lt;/strong&gt; (para redhat, fedora y derivadas) y otras variantes. Más recientemente, se han añadido &lt;strong&gt;Flatpak&lt;/strong&gt;, &lt;strong&gt;Snap&lt;/strong&gt; e &lt;strong&gt;AppImage&lt;/strong&gt;, lo que ha generado una gran variedad de formatos con diferentes características, ventajas y limitaciones. En este análisis, exploraremos el rendimiento de cada formato y las funciones que faltan en cada uno.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="nativas"&gt;
Nativas
&lt;a href="#nativas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Generalmente no son compatibles entre distintas distribuciones, no implementan ningún modelo de seguridad o espacio aislado específico y se distribuyen a través de repositorios, ya sean oficiales o de terceros. Estos paquetes pueden contener bibliotecas o aplicaciones y todas las bibliotecas se comparten entre aplicaciones, lo que ahorra espacio y evita bibliotecas duplicadas. Sin embargo, esto también significa que una aplicación que necesita una biblioteca más nueva podría no funcionar en una distribución más antigua.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="flatpak"&gt;
Flatpak
&lt;a href="#flatpak" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Generalmente agregan además de sus paquetes regulares, son agnósticos de la distribución en sí, por lo que si su distro admite el &lt;strong&gt;Flatpak&lt;/strong&gt;, puede ejecutar exactamente el mismo paquete que cualquier otra distribución. El desarrollador empaqueta su aplicación una vez y se ejecuta en todo, no es necesario duplicar el trabajo de empaquetado. Los &lt;strong&gt;Flatpak&lt;/strong&gt; tienen un empaquetado &amp;ldquo;sandbox&amp;rdquo;, lo que significa que ofrecen menos agujeros de seguridad para posibles atacantes y, al mismo tiempo, comparten una gran cantidad de bibliotecas a través de tiempos de ejecución. Algunos &lt;strong&gt;Flatpak&lt;/strong&gt; contienen muchas bibliotecas en las que confían muchas aplicaciones. También pueden enviar sus propias bibliotecas en el paquete, lo que significa que pueden usar más espacio con el tiempo. Los &lt;strong&gt;Flatpak&lt;/strong&gt; se distribuyen principalmente a través de Flathub y repositorios en línea, pero usted también puede crear su propio repositorio ya que todo es de código abierto.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="snap"&gt;
Snap
&lt;a href="#snap" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Los &lt;strong&gt;Snaps&lt;/strong&gt; son básicamente el mismo concepto que los &lt;strong&gt;Flatpak&lt;/strong&gt;, pero para Ubuntu. Hay algunas diferencias técnicas con los &lt;strong&gt;Flatpak&lt;/strong&gt;, especialmente con respecto a cómo se abren y montan las aplicaciones en el sistema, pero funcionan de la misma manera. De esta manera, tiene tiempos de ejecución que incluyen bibliotecas necesarias para múltiples aplicaciones y luego las aplicaciones que pueden usar estos tiempos de ejecución se pueden aislar, pero no es obligatorio, por lo que algunas no lo son y se distribuyen exclusivamente a través de la tienda de Snap administrada por Canonical y ese específico. El back-end no es de código abierto. Los &lt;strong&gt;Snaps&lt;/strong&gt; se empaquetan una vez y cualquier distribución puede usar el mismo Snap siempre que admita el formato. Otra gran diferencia es que los &lt;strong&gt;Snaps&lt;/strong&gt; son adecuados no solo para aplicaciones gráficas sino también para programas de línea de comandos, aplicaciones del lado del servidor o incluso el kernel, el entorno de escritorio, el cargador de arranque o los controladores.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="appimage"&gt;
AppImage
&lt;a href="#appimage" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Son un formato más portátil similar a lo que hace &lt;strong&gt;MacOS&lt;/strong&gt;: toda la aplicación se envía dentro de un solo archivo con la mayoría, si no todas, sus bibliotecas. Esto significa que puede copiar y pegar aplicaciones desde un sistema a otro y se ejecutan en cualquier distribución que tenga acceso a fuse, que es lo que usan las imágenes de la aplicación para ejecutar las imágenes de la aplicación. A diferencia de las anteriores, no se ejecutan en un sandbox, aunque puedes hacerlo manualmente con algo como Fire Jail y, a veces, dependen de las bibliotecas del sistema que distribución se envía como paquetes regulares. Esto significa que ciertas imágenes de aplicaciones pueden no funcionar en ciertos sistemas que no tienen la biblioteca requerida; generalmente se distribuyen desde el sitio web de los desarrolladores o desde la aplicación App Image Hub. Las imágenes no crean automáticamente entradas en su sistema. menú a menos que use un demonio específico que se ejecuta en segundo plano.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="puntos-de-referencia-de-rendimiento"&gt;
Puntos de referencia de rendimiento
&lt;a href="#puntos-de-referencia-de-rendimiento" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Z5xcr9pK/image.png" alt="PC de pruebas" title="PC de pruebas"
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Las pruebas de rendimiento se llevaron a cabo en una máquina virtual Ubuntu 23.04 con 16 GB de RAM y un procesador Intel Core i7 de 13.a generación. Se instalaron aplicaciones en todos los formatos de empaquetado, y se midió el tiempo de apertura inicial y las ejecuciones posteriores. Los resultados mostraron diferencias en el tiempo de inicio y el rendimiento en pruebas como Velocímetro y Jetstream Benchmark.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;16 GB de RAM&lt;/li&gt;
&lt;li&gt;Procesador Intel Core i7 de 13.a generación&lt;/li&gt;
&lt;li&gt;Renderizado por hardware&lt;/li&gt;
&lt;li&gt;Ubuntu 23.04&lt;/li&gt;
&lt;li&gt;Maquina virtual&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Recordemos que esto no pretende ser una maquina real sino un punto para una comparación de rendimiento entre los distintos formatos de empaquetado.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="resultados"&gt;
Resultados
&lt;a href="#resultados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Dzfc52PQ/image.png" alt="Resultados 1" title="Resultados 1"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/RCJLgpKY/image.png" alt="Resultados 2" title="Resultados 2"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sandbox"&gt;
Sandbox
&lt;a href="#sandbox" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Los formatos de empaquetado como &lt;strong&gt;Flatpaks&lt;/strong&gt; y &lt;strong&gt;Snaps&lt;/strong&gt; utilizan entornos de sandbox para proporcionar aislamiento y seguridad a las aplicaciones. Sin embargo, esto puede afectar el rendimiento y la compatibilidad con ciertas características, como la mensajería nativa. El Sandbox no es 100% a prueba de balas. Nada lo es, pero es interesante limitar a qué puede acceder la aplicación, todo esto se administra a través de permisos de aplicaciones, de manera muy similar a lo que encontraría en las aplicaciones de Android o iOS, puede otorgar permisos a las aplicaciones para acceder a archivos y carpetas específicos o servicios y componentes específicos del sistema, todo esto generalmente se maneja a través de portales de escritorio que significa que la aplicación realmente no accede al archivo o a la carpeta, abre un portal que es lo que accede al recurso requerido y lo pasa a la aplicación.&lt;/p&gt;
&lt;p&gt;Esto es similar a cómo los navegadores web ejecutan cada pestaña en un proceso separado al que no se puede acceder. el hilo principal del navegador o las otras pestañas, los paquetes regulares no están protegidos de forma predeterminada, se instalan en el sistema de archivos y requieren privilegios de root para instalarse, lo que significa que si el paquete tiene algunos scripts maliciosos posteriores a la instalación que ejecuta, le ha dado rienda suelta sobre su sistema y cualquier aplicación que haya instalado a través de paquetes pueden acceder a cualquier cosa que su usuario pueda acceder a su directorio completo de home, por ejemplo, u otros archivos de configuración de aplicaciones.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="funciones-faltantes"&gt;
Funciones faltantes
&lt;a href="#funciones-faltantes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Cada formato de empaquetado tiene limitaciones y funciones faltantes. Por ejemplo, los paquetes &lt;strong&gt;Flatpak&lt;/strong&gt; y Snap carecen de compatibilidad con la mensajería nativa, lo que puede afectar su utilidad en ciertos casos de uso. Además, el soporte para el tema del sistema puede ser imperfecto en algunos formatos, lo que puede afectar la integración visual con el entorno del usuario.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A pesar de las diferencias y limitaciones, todos los formatos de empaquetado ofrecen una experiencia similar en la ejecución de aplicaciones en Linux. La elección del formato adecuado puede depender de factores como la seguridad, la portabilidad y las características específicas requeridas por el usuario. Si bien la unificación hacia un formato de empaquetado único podría simplificar la experiencia para los usuarios principiantes, actualmente cada formato tiene su lugar en el ecosistema de Linux.&lt;/p&gt;</description></item><item><title>Explorando SystemD en el Mundo Linux: Críticas, Realidades y Controversias</title><link>https://patojad.com.ar/post/2024/03/explorando-systemd-en-el-mundo-linux-cr%C3%ADticas-realidades-y-controversias/</link><pubDate>Fri, 15 Mar 2024 18:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/03/explorando-systemd-en-el-mundo-linux-cr%C3%ADticas-realidades-y-controversias/</guid><description>&lt;p&gt;En el vasto y diverso ecosistema de Linux, cada componente del sistema es objeto de discusión y opinión, y el sistema de inicio no es la excepción. &lt;strong&gt;SystemD&lt;/strong&gt; ha sido un tema de controversia dentro de la comunidad, generando críticas y debates en línea. En este artículo, profundizaremos en qué es &lt;strong&gt;SystemD&lt;/strong&gt;, su evolución, y las razones detrás de las críticas que ha enfrentado.&lt;/p&gt;
&lt;p&gt;Ya escribi algunos articulos planteando los problemas de &lt;strong&gt;SystemD&lt;/strong&gt; y las alternativas que existen, pero en esta ocasión quiero profundizar en el tema y explicar las razones de la resistencia que ha enfrentado &lt;strong&gt;SystemD&lt;/strong&gt;. Y la explicacion de las cosas buenas que tiene, porque no todo es malo.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2020/06/systemd-solucion-o-problema/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
SystemD ¿Solucion o Problema?
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2020/07/systemd-no-es-el-problema-respuesta-a-zatiel/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
¿SystemD no es el problema? Respuesta a Zatiel
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="desentrañando-systemd-y-su-rol-como-sistema-de-inicio"&gt;
Desentrañando SystemD y su Rol como Sistema de Inicio
&lt;a href="#desentra%c3%b1ando-systemd-y-su-rol-como-sistema-de-inicio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En el corazón de todos los sistemas basados en Linux se encuentra un sistema de inicio, el primer proceso que entra en acción después de arrancar el sistema operativo. Este proceso trabaja en segundo plano, gestionando servicios y procesos esenciales. En este contexto, &lt;strong&gt;SystemD&lt;/strong&gt; se presenta como un sistema de inicio predominante en muchas distribuciones de Linux.&lt;/p&gt;
&lt;p&gt;Iniciado en 2010 bajo el liderazgo de &lt;strong&gt;Red Hat&lt;/strong&gt; y &lt;strong&gt;Leonard Puttering&lt;/strong&gt;, &lt;strong&gt;SystemD&lt;/strong&gt; nació con la intención de reemplazar soluciones existentes como &lt;strong&gt;SysV&lt;/strong&gt; y &lt;strong&gt;Upstart&lt;/strong&gt;. Su enfoque principal era mejorar el rendimiento del sistema, acelerar los tiempos de arranque y reducir el consumo de recursos. Rápidamente, se convirtió en el sistema de inicio predeterminado para distros populares como &lt;em&gt;Fedora&lt;/em&gt;, &lt;em&gt;Arch Linux&lt;/em&gt;, &lt;em&gt;Debian&lt;/em&gt; y &lt;em&gt;Ubuntu&lt;/em&gt;, entre otras.&lt;/p&gt;
&lt;p&gt;A pesar de su adopción generalizada, algunas distribuciones, como &lt;em&gt;Alpine Linux&lt;/em&gt;, &lt;em&gt;MX Linux&lt;/em&gt;, &lt;em&gt;&lt;a href="https://patojad.com.ar/post/2019/09/voidlinux-por-jos%c3%a9/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Void Linux
&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="https://patojad.com.ar/post/2020/08/artix-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Artix
&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="https://patojad.com.ar/post/2020/06/instalcion-milagros/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
MilagOS
&lt;/a&gt;&lt;/em&gt; y otras, han optado por no adoptar &lt;strong&gt;SystemD&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="explorando-las-razones-de-la-resistencia"&gt;
Explorando las Razones de la Resistencia
&lt;a href="#explorando-las-razones-de-la-resistencia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="el-argumento-del-bloat"&gt;
El Argumento del &amp;ldquo;Bloat&amp;rdquo;
&lt;a href="#el-argumento-del-bloat" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Un argumento recurrente contra &lt;strong&gt;SystemD&lt;/strong&gt; es su expansión progresiva hacia funciones que tradicionalmente eran gestionadas por servicios individuales. Esta acumulación de características ha llevado a críticas sobre su conformidad con la filosofía &lt;strong&gt;UNIX&lt;/strong&gt;, que aboga por la simplicidad y la especialización de funciones.&lt;/p&gt;
&lt;p&gt;Aunque &lt;strong&gt;SystemD&lt;/strong&gt; mantiene su modularidad (recordemos qeu son varios mini-binarios especificos), su crecimiento ha llevado a la percepción de ser una solución monolítica. Además, su actualización periódica y la adición de nuevas funciones pueden traducirse en un mayor uso de espacio y recursos, lo que preocupa a aquellos que buscan eficiencia (hablando en kb de recursos).&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="dependencia-omnipresente-y-restricciones-de-opciones"&gt;
Dependencia Omnipresente y Restricciones de Opciones
&lt;a href="#dependencia-omnipresente-y-restricciones-de-opciones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;SystemD&lt;/strong&gt; se ha vuelto tan integral en muchos aspectos del sistema que su ausencia puede limitar la funcionalidad de otros componentes. Servicios como el inicio de sesión gráfico o la gestión de conexiones de red a menudo dependen de componentes de &lt;strong&gt;SystemD&lt;/strong&gt;. Aunque es posible prescindir de él, las distribuciones que optan por no implementarlo deben buscar, proporcionar y mantener alternativas.&lt;/p&gt;
&lt;p&gt;No podemos culpar a los desarrolladres de las aplicaciones por usar el set de herramientas que les provee &lt;strong&gt;SystemD&lt;/strong&gt;. Sin embargo, esto puede ser un problema para aquellos que buscan una mayor diversidad de opciones. Aun asi, hay que entender que estos set de herramienta facilitan y simplifican el trabajo de los desarrolladores, permitiendoles enfocarse en la funcionalidad de sus aplicaciones.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="red-hat-como-dueño-de-systemd"&gt;
Red Hat como &amp;ldquo;Dueño&amp;rdquo; de SystemD
&lt;a href="#red-hat-como-due%c3%b1o-de-systemd" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Otra crítica común se dirige al hecho de que &lt;strong&gt;SystemD&lt;/strong&gt; es un proyecto de &lt;strong&gt;Red Hat&lt;/strong&gt;. Aunque comenzó como un proyecto de esta compañía, actualmente propiedad de IBM, algunas voces expresan preocupación sobre el control que una entidad única puede tener sobre la dirección del sistema de inicio en Linux. Las recientes transformaciones en la gestión de la comunidad por parte de &lt;strong&gt;Red Hat&lt;/strong&gt; han aumentado estas preocupaciones.&lt;/p&gt;
&lt;p&gt;Aun asi, &lt;strong&gt;SystemD&lt;/strong&gt; es un proyecto de código abierto, y su desarrollo está abierto a la participación de la comunidad. Además, la adopción de &lt;strong&gt;SystemD&lt;/strong&gt; por parte de otras distribuciones, como Debian y Ubuntu, ha ayudado a mitigar estas preocupaciones dado que en la actualidad es un proyecto que va mas alla de &lt;strong&gt;Red Hat&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="restricción-de-opciones-y-seguridad-del-sistema"&gt;
Restricción de Opciones y Seguridad del Sistema
&lt;a href="#restricci%c3%b3n-de-opciones-y-seguridad-del-sistema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;SystemD&lt;/strong&gt; ha sido señalado como un factor que contribuye a la uniformidad en los sistemas Linux, restringiendo la diversidad de opciones. También se argumenta que su presencia crea un riesgo de seguridad, al ser un objetivo único para posibles ataques.&lt;/p&gt;
&lt;p&gt;Sin embargo, defensores de &lt;strong&gt;SystemD&lt;/strong&gt; contrarrestan estas preocupaciones destacando su integración con el kernel de Linux y su eficiencia. Aseguran que, aunque puede haber un riesgo potencial debido a su ubicuidad, la confianza en un proyecto bien mantenido y ampliamente utilizado puede superar estos desafíos. Y es una realidad que &lt;strong&gt;SystemD&lt;/strong&gt; es un proyecto bien mantenido y ampliamente utilizado con un desarrollo activo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En resumen, las críticas hacia &lt;strong&gt;SystemD&lt;/strong&gt; abordan aspectos que van desde la filosofía &lt;strong&gt;UNIX&lt;/strong&gt; hasta preocupaciones sobre dependencias y seguridad. Aunque se presentan alternativas viables, la elección de utilizar &lt;strong&gt;SystemD&lt;/strong&gt; o no a menudo se reduce a la conveniencia, eficiencia y preferencias de cada usuario.&lt;/p&gt;</description></item><item><title>Instalar grafica NVIDIA integrada en Arch Linux</title><link>https://patojad.com.ar/post/2024/02/instalar-grafica-nvidia-integrada-en-arch-linux/</link><pubDate>Tue, 20 Feb 2024 14:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/02/instalar-grafica-nvidia-integrada-en-arch-linux/</guid><description>&lt;p&gt;Hola! Les comparto el método que encontré para hacer funcionar mi gráfica nvidia integrada con 10 años de antigüedad usando drivers privativo y Optimus Manager!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ej.: mi gráfica es NVIDIA GeForge GTX770M y la versión compatible es la nvidia-470xx)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="detectando-tipo-de-controladores-de-video"&gt;
Detectando tipo de controladores de video:
&lt;a href="#detectando-tipo-de-controladores-de-video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lspci &lt;span class="p"&gt;|&lt;/span&gt; grep VGA&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;en mi caso responde: &lt;code&gt;00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lspci -k &lt;span class="p"&gt;|&lt;/span&gt; grep VGA -A &lt;span class="m"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;en mi caso responde:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;log&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subsystem: Toshiba Corporation 4th Gen Core Processor Integrated Graphics Controller
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Kernel driver in use: i915&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalando-controlador-de-codigo-abieto-de-intel"&gt;
Instalando controlador de Codigo abieto de Intel:
&lt;a href="#instalando-controlador-de-codigo-abieto-de-intel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S xf86-video-intel intel-ucode&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="detectar-nvidia"&gt;
Detectar Nvidia:
&lt;a href="#detectar-nvidia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Ver DRIVERS de VIDEO instalados:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;xrandr --listproviders&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Ver paquetes NVIDIA instalados:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Ss nvidia&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Ver paquete NVIDIA SETTINGS instalado:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Ss nvidia-settings&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="desinstalando-versiones-anteriores"&gt;
Desinstalando versiones anteriores:
&lt;a href="#desinstalando-versiones-anteriores" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Rns nombredelpaquete&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;ej.:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Rns nvidia-340xx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="detectar-driver-compatible-con-la-gráfica-nvidia"&gt;
Detectar Driver compatible con la gráfica NVIDIA:
&lt;a href="#detectar-driver-compatible-con-la-gr%c3%a1fica-nvidia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Hay que considerar dos factores de compatibilidad: &lt;strong&gt;Versión nvidia&lt;/strong&gt; y el &lt;strong&gt;Kernel&lt;/strong&gt;&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ver-lista-de-compatibilidad"&gt;
Ver lista de compatibilidad:
&lt;a href="#ver-lista-de-compatibilidad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Entrar a la &lt;a href="https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
siguiente página
&lt;/a&gt; y buscar tu modelo de nvidia dentro de la lista para saber con
que versión es compatible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="nvidia-según-el-kernel"&gt;
Nvidia según el kernel:
&lt;a href="#nvidia-seg%c3%ban-el-kernel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;kernel linux → nvidia&lt;/li&gt;
&lt;li&gt;linux-lts → nvidia-lts&lt;/li&gt;
&lt;li&gt;todos los kernel (construye dinámicamente los módulos del kernel) → nvidia-dkms&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;ej: en mi caso como el modelo de la nvidia es viejo debo usar por compatibilidad el kernetl lts pero con nvidia-dkms&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="pasos-previos-a-la-instalación"&gt;
Pasos previos a la instalación:
&lt;a href="#pasos-previos-a-la-instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Habilitar Multilib para ejecutar aplicaciones 32 bits en sist. de 64 bits:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nano /etc/pacman.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
(para habilitar hay que descomentar las dos lineas siguientes, borrar # y guardar)
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;cfg&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cfg" data-lang="cfg"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[multilib]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Include&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;/etc/pacman.d/mirrorlist&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
Para guardar cambios: Ctrol + o (letra), Para confirmar: enter, Para salir: Ctrol + x&lt;/li&gt;
&lt;li&gt;Entrar al archivo sddm para editarlo (en el caso de que se use kde) con el siguiente comando:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nano /etc/sddm.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
Agregar # a las dos líneas que estan debajo de [X11]:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;cfg&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cfg" data-lang="cfg"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[X11]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# DisplayCommand&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# DisplayStopCommand&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
Ctrl + o
Enter
Ctrol + X&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="borrar-archivos-que-esten-dentro-de-la-carpeta-x11-para-que-no-interfieran"&gt;
Borrar archivos que esten dentro de la carpeta X11 para que no interfieran:
&lt;a href="#borrar-archivos-que-esten-dentro-de-la-carpeta-x11-para-que-no-interfieran" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Ir a la carpeta: &lt;code&gt;/etc/X11/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ver si hay archivos xorg fuera de las carpetas.&lt;/li&gt;
&lt;li&gt;Si hay archivos xorg: los vamos a borrar de la siguiente manera:
&lt;ul&gt;
&lt;li&gt;Hacer Click derecho y seleccionar abrir terminal aqui&lt;/li&gt;
&lt;li&gt;Para Borrar los archivos y dejar las carpetas
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rm xorg.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mv xorg.conf xorg.conf0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rm xorg.conf.nvidia-xconfig-original&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalar-controlador-privativo-de-nvidia"&gt;
Instalar controlador privativo de Nvidia:
&lt;a href="#instalar-controlador-privativo-de-nvidia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="nvidia-para-kernel-linux-última-versión"&gt;
Nvidia para kernel linux (última versión)
&lt;a href="#nvidia-para-kernel-linux-%c3%baltima-versi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S nvidia nvidia-utils&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="nvidia-para-kernel-linux-lts-para-nvidia-viejas-es-mejor-no-usar-lts"&gt;
Nvidia para kernel linux-lts: (para nvidia viejas es mejor no usar lts)
&lt;a href="#nvidia-para-kernel-linux-lts-para-nvidia-viejas-es-mejor-no-usar-lts" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S nvidia-lts&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="nvidia-para-kernel-linux-zen-sirve-para-todos-los-kernel-dkms"&gt;
Nvidia para kernel linux-zen: (sirve para todos los kernel) dkms
&lt;a href="#nvidia-para-kernel-linux-zen-sirve-para-todos-los-kernel-dkms" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S nvidia-dkms&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;ej: en mi caso compatible con GeForge GTX770M&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S nvidia-470xx-dkms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S nvidia-470xx-utils
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S lib32-nvidia-470xx-utils
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S lib32-opencl-nvidia-470xx
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S opencl-nvidia-470xx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;En una linea todos los paquetes dkms para la versión 470xx:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S nvidia-470xx-dkms nvidia-470xx-utils lib32-nvidia-470xx-utils lib32-opencl-nvidia-470xx opencl-nvidia-470xx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalar-mhwd"&gt;
Instalar MhWd:
&lt;a href="#instalar-mhwd" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ yay -S mhwd-nvidia-versión&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;ej: en mi caso compatible 470xx&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S mhwd-nvidia-470xx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalar-nvidia-settings"&gt;
Instalar Nvidia Settings:
&lt;a href="#instalar-nvidia-settings" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S nvidia-settings&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;ej.: Compatible 470xx:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S nvidia-470xx-settings&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalar-bbswithc"&gt;
Instalar bbswithc
&lt;a href="#instalar-bbswithc" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="para-kernel-linux"&gt;
Para kernel linux:
&lt;a href="#para-kernel-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S bbswitch&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="para-kernel-linux-zen-o-si-usamos-las-nvidia-dkms"&gt;
Para kernel linux-Zen o si usamos las nvidia-dkms:
&lt;a href="#para-kernel-linux-zen-o-si-usamos-las-nvidia-dkms" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S bbswitch-dkms&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalar-optimus-manager"&gt;
Instalar Optimus Manager:
&lt;a href="#instalar-optimus-manager" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S optimus-manager optimus-manager-qt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Actualizar:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Syyu&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Verificar el estado de Optimus Manager:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl status optimus-manager.service&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Para parar el proceso apretar: q&lt;/p&gt;
&lt;p&gt;Reiniciar:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reboot&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="configurar-optimus-manager"&gt;
Configurar Optimus Manager:
&lt;a href="#configurar-optimus-manager" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Ir al Menú de aplicaciones y ejecutar Optimus manager&lt;/li&gt;
&lt;li&gt;Va aparecer un icono en la barra.&lt;/li&gt;
&lt;li&gt;Hacer Click derecho sobre el ícono de Optimus manager de la barra y entrar a Configuración.
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/ZYdrnpxr/image.png" alt="Optimus Manager" title="Optimus Manager"
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Gmh8FyGg/image.png" alt="Optimus Manager" title="Optimus Manager"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/VkGSDkFf/image.png" alt="Optimus Manager" title="Optimus Manager"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/FKYYqXPj/image.png" alt="Optimus Manager" title="Optimus Manager"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/ZqXWzsgX/image.png" alt="Optimus Manager" title="Optimus Manager"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-yellow-600/75 text-yellow-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-warning fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;OJO: INICIAR SESIÓN CON X11 (Xorg de KDE) porque optimus manager no es compatible con wayland&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Reiniciar el sistema:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reboot&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="comprobar-si-funciona-nvidia"&gt;
Comprobar si funciona Nvidia:
&lt;a href="#comprobar-si-funciona-nvidia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Abrir la consola y poner el siguiente comando:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;optimus-manager --print-mode&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
ej: en mi caso responde:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;log&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Current GPU mode : nvidia&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Poner el siguiente comando:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;glxgears -info&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
Se abre la siguiente ventana:
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/c1BLFJsp/image.png" alt="glxgears" title="glxgears"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Cerrar la ventana chicha y se frena el proceso.&lt;/li&gt;
&lt;li&gt;Subir por la consola hasta donde se puso el comando para ver el resultado.
Ej: en mi caso dio:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;log&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Running synchronized to the vertical refresh. The framerate should be
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;approximately the same as the monitor refresh rate.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GL_RENDERER = NVIDIA GeForce GTX 770M/PCIe/SSE2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GL_VERSION = 4.6.0 NVIDIA 470.223.02
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GL_VENDOR = NVIDIA Corporation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="configurar-nvidia-settings"&gt;
CONFIGURAR NVIDIA SETTINGS
&lt;a href="#configurar-nvidia-settings" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Entrar al Menu de apliciones y abrir Nvidia X Server Settings&lt;/li&gt;
&lt;li&gt;Entrar a “OpenGL Settings”&lt;/li&gt;
&lt;li&gt;En la solapa Image Settings:&lt;/li&gt;
&lt;li&gt;Poner la configuración deseada:
High Performance (mejor rendimiento, elijo esta)
High Quality (mejor calidad)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-el-controlador-gwe-controla-las-gpu-nvidia"&gt;
INSTALAR EL CONTROLADOR GWE: controla las GPU NVIDIA
&lt;a href="#instalar-el-controlador-gwe-controla-las-gpu-nvidia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S gwe&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Únete como Beta Tester y Ayuda a Mejorar Arch Linux</title><link>https://patojad.com.ar/post/2024/02/%C3%BAnete-como-beta-tester-y-ayuda-a-mejorar-arch-linux/</link><pubDate>Fri, 16 Feb 2024 10:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/02/%C3%BAnete-como-beta-tester-y-ayuda-a-mejorar-arch-linux/</guid><description>&lt;p&gt;¿Eres un usuario apasionado de &lt;strong&gt;Arch Linux&lt;/strong&gt; y te encantaría contribuir a su mejora? ¡Esta es tu oportunidad! &lt;strong&gt;Arch Linux&lt;/strong&gt; está en busca de Beta Testers que deseen probar nuevas versiones de aplicaciones y bibliotecas antes de su lanzamiento oficial al público.&lt;/p&gt;
&lt;p&gt;Los Beta Testers desempeñan un papel crucial en la mejora de la estabilidad y calidad de &lt;strong&gt;Arch Linux&lt;/strong&gt;. Gracias a su arduo trabajo, la distribución ha experimentado mejoras significativas en los últimos años.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-un-beta-tester"&gt;
¿Qué es un Beta Tester?
&lt;a href="#qu%c3%a9-es-un-beta-tester" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Un Beta Tester es un usuario que prueba una versión de software antes de su lanzamiento oficial. Su tarea consiste en detectar errores y problemas que puedan surgir, con el objetivo de garantizar una experiencia de usuario óptima.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-anuncio"&gt;
El Anuncio
&lt;a href="#el-anuncio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El anuncio original fue publicado en Reddit por &lt;a href="https://www.reddit.com/user/Antiz1996/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-reddit-alien" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
u/Antiz1996 (Robin Candau)
&lt;/a&gt;, miembro del equipo de testing de Arch. En el anuncio, se invita a los usuarios a unirse al equipo de pruebas oficial de &lt;strong&gt;Arch Linux&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hola,&lt;/p&gt;
&lt;p&gt;Esperamos que hayan tenido un buen comienzo en el nuevo año 2024. Con el nuevo año suelen venir nuevas resoluciones. Si no tiene ninguno hasta ahora, tenemos uno para usted: ¿Qué pasaría si decidiera brindarle a Arch un poco de ayuda con las actualizaciones del paquete de prueba este año? 😃&lt;/p&gt;
&lt;p&gt;Arch utiliza &lt;a href="https://wiki.archlinux.org/title/Official_repositories#Testing_repositories" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
repositorios de prueba
&lt;/a&gt; como un búfer para las actualizaciones de paquetes principales/críticos (o cualquier otra actualización de paquetes que se beneficiaría de ser probada primero) antes de ingresar a los repositorios estables.&lt;/p&gt;
&lt;p&gt;Probar estas actualizaciones de paquetes nos ayuda a detectar más errores por adelantado y garantiza actualizaciones impecables para los repositorios estables, ¡y ahí es donde usted puede ayudar!&lt;/p&gt;
&lt;p&gt;Al unirse al &lt;a href="https://wiki.archlinux.org/title/Arch_Testing_Team" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
equipo de pruebas oficial de Arch Linux
&lt;/a&gt;, tendrá la posibilidad de &amp;ldquo;aprobar&amp;rdquo; paquetes durante las pruebas después de garantizar su corrección (o &lt;a href="https://wiki.archlinux.org/title/Bug_reporting_guidelines" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
informar un error
&lt;/a&gt; de otro modo). Esto ayuda a los mantenedores de paquetes de Arch a detectar posibles errores por adelantado y ayuda a sacar paquetes de los repositorios de prueba de manera más rápida y eficiente.&lt;/p&gt;
&lt;p&gt;No necesariamente buscamos pruebas en profundidad. Verificar que un programa se inicia correctamente y que eres capaz de realizar tu rutina habitual con él ya es una buena prueba por sí sola. También puede consultar las &lt;a href="https://wiki.archlinux.org/title/Arch_Testing_Team#Guidelines" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
pautas generales de prueba
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Esta es una forma muy eficaz y bastante sencilla de contribuir a Arch Linux. Cuantos más probadores tengamos, más confiables serán las actualizaciones de paquetes.&lt;/p&gt;
&lt;p&gt;¡Esperamos ver a algunos de ustedes allí! 😉&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Podes ver el anuncio original en &lt;a href="https://www.reddit.com/r/archlinux/comments/1aniloc/join_the_arch_testing_team_call_for_participation/?share_id=ix0fdh7Xw1cmkqPFbaAC0&amp;amp;utm_content=1&amp;amp;utm_medium=android_app&amp;amp;utm_name=androidcss&amp;amp;utm_source=share&amp;amp;utm_term=1" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-reddit-alien" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Reddit
&lt;/a&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-aplicar"&gt;
¿Cómo Aplicar?
&lt;a href="#c%c3%b3mo-aplicar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para convertirte en un tester oficial de Arch, simplemente contacta a &lt;a href="https://archlinux.org/people/developers/#bluewind" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Florian Pritz
&lt;/a&gt; a través de &lt;a href="mailto:bluewind@xinu.at" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-envelope"&gt;&lt;/i&gt;&amp;nbsp;
correo electrónico
&lt;/a&gt; y solicita una cuenta de verificador.&lt;/p&gt;
&lt;p&gt;Una vez que obtengas tu cuenta de verificador, podrás acceder a la &lt;a href="https://archlinux.org/devel" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
archweb
&lt;/a&gt; y encontrarás una pestaña llamada &amp;ldquo;signoffs&amp;rdquo;. En esta sección, podrás ver una lista de paquetes que necesitan al menos dos firmas de aprobación (signoffs).&lt;/p&gt;
&lt;p&gt;Prueba los paquetes listados localmente y, si funcionan correctamente, puedes firmarlos presionando el botón &amp;ldquo;signoff&amp;rdquo; en el paquete respectivo.&lt;/p&gt;
&lt;p&gt;¡Únete hoy mismo y contribuye al crecimiento y desarrollo de &lt;strong&gt;Arch Linux&lt;/strong&gt;!&lt;/p&gt;</description></item><item><title>Guía Completa para Instalar y Utilizar Timeshift en Linux</title><link>https://patojad.com.ar/post/2024/01/gu%C3%ADa-completa-para-instalar-y-utilizar-timeshift-en-linux/</link><pubDate>Tue, 09 Jan 2024 10:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2024/01/gu%C3%ADa-completa-para-instalar-y-utilizar-timeshift-en-linux/</guid><description>&lt;p&gt;La gestión de copias de seguridad es esencial para cualquier usuario de Linux que desee mantener la integridad de su sistema operativo. En este artículo, exploraremos &lt;strong&gt;Timeshift&lt;/strong&gt;, una poderosa herramienta de respaldo para Linux, respondiendo preguntas clave y proporcionando instrucciones detalladas para su instalación en diversas distribuciones.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-timeshift-de-linux"&gt;
¿Qué es Timeshift de Linux?
&lt;a href="#qu%c3%a9-es-timeshift-de-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Timeshift&lt;/strong&gt; es una herramienta de respaldo para sistemas operativos basados en Linux que permite realizar instantáneas del sistema en un momento específico. Estas instantáneas se pueden utilizar para restaurar el sistema a ese estado particular en caso de fallos o problemas. &lt;strong&gt;Timeshift&lt;/strong&gt; utiliza tecnologías como &lt;strong&gt;rsync&lt;/strong&gt; y &lt;strong&gt;Btrfs&lt;/strong&gt; para crear y gestionar estas instantáneas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-diferencia-hay-entre-rsync-y-timeshift"&gt;
¿Qué diferencia hay entre rsync y Timeshift?
&lt;a href="#qu%c3%a9-diferencia-hay-entre-rsync-y-timeshift" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Aunque &lt;strong&gt;rsync&lt;/strong&gt; y &lt;strong&gt;Timeshift&lt;/strong&gt; comparten la capacidad de realizar copias de seguridad, difieren en su enfoque. &lt;strong&gt;Rsync&lt;/strong&gt; es una herramienta de sincronización de archivos, mientras que &lt;strong&gt;Timeshift&lt;/strong&gt; va más allá al capturar el estado completo del sistema en un momento dado. &lt;strong&gt;Timeshift&lt;/strong&gt; simplifica el proceso de restauración del sistema a un estado anterior mediante la gestión eficiente de instantáneas.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="timeshift-es-una-herramienta-de-respaldo"&gt;
¿Timeshift es una herramienta de respaldo?
&lt;a href="#timeshift-es-una-herramienta-de-respaldo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Sí, &lt;strong&gt;Timeshift&lt;/strong&gt; se clasifica como una herramienta de respaldo, pero va más allá de simplemente copiar archivos. Al crear instantáneas del sistema, &lt;strong&gt;Timeshift&lt;/strong&gt; permite restaurar todo el estado del sistema, incluyendo archivos del sistema, configuraciones y aplicaciones instaladas, proporcionando una solución integral para la gestión de copias de seguridad.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="timeshift-funciona-en-ubuntu"&gt;
¿Timeshift funciona en Ubuntu?
&lt;a href="#timeshift-funciona-en-ubuntu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Timeshift&lt;/strong&gt; es compatible con varias distribuciones de Linux, incluyendo &lt;strong&gt;Ubuntu&lt;/strong&gt;. Su versatilidad y capacidad de adaptación a diferentes sistemas hacen que sea una opción sólida para usuarios de Ubuntu, o cualquier distribucion, que buscan una solución de respaldo confiable.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación-de-timeshift-en-distintas-distribuciones"&gt;
Instalación de Timeshift en Distintas Distribuciones:
&lt;a href="#instalaci%c3%b3n-de-timeshift-en-distintas-distribuciones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A continuación, te presentamos cómo instalar &lt;strong&gt;Timeshift&lt;/strong&gt; en algunas de las distribuciones de Linux más populares:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ubuntu--debian"&gt;
Ubuntu / Debian
&lt;a href="#ubuntu--debian" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install timeshift&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arch-linux"&gt;
Arch Linux
&lt;a href="#arch-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;En este caso diferimos del video ya que en el mismo se instala desde AUR con algunos complementos adicionales que simplifican y automatizan su uso y en este caso lo haremos desde los repositorios oficiales.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S timeshift&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="fedora"&gt;
Fedora
&lt;a href="#fedora" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install timeshift&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="opensuse"&gt;
openSUSE:
&lt;a href="#opensuse" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo zypper install timeshift&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Timeshift&lt;/strong&gt; emerge como una herramienta esencial para la gestión de copias de seguridad en sistemas Linux. Su capacidad para crear instantáneas del sistema y simplificar la restauración lo convierte en una opción valiosa. Al seguir nuestras instrucciones, puedes instalar y comenzar a utilizar Timeshift en tu distribución de Linux preferida, asegurando la estabilidad y seguridad de tu sistema.&lt;/p&gt;</description></item><item><title>MacOS y Windows no pueden... Pero Linux si...</title><link>https://patojad.com.ar/post/2023/12/macos-y-windows-no-pueden...-pero-linux-si.../</link><pubDate>Wed, 27 Dec 2023 10:09:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/12/macos-y-windows-no-pueden...-pero-linux-si.../</guid><description>&lt;p&gt;En el universo tecnológico, Linux destaca por sus capacidades únicas que superan a sus competidores más grandes, Windows y MacOS. Antes de explorar estas diferencias, es importante destacar que no estamos proclamando la supremacía de un sistema sobre otro, simplemente queremos resaltar algunas de las ventajas del sistema que personalmente prefiero utilizar.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="portabilidad-un-mundo-de-posibilidades"&gt;
Portabilidad: Un Mundo de Posibilidades
&lt;a href="#portabilidad-un-mundo-de-posibilidades" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La portabilidad de Linux es una joya escondida: cambiar el disco de PC es suficiente para trasladar todo el sistema. Aunque esto pueda parecer poco interesante a primera vista, brinda una ventaja significativa al recuperar datos o migrar de un equipo a otro. La ejecución de drivers esenciales a nivel de kernel asegura una retrocompatibilidad impresionante entre distintos equipos.&lt;/p&gt;
&lt;p&gt;Aunque es cierto que algunos drivers específicos, como los de las placas de vídeo propietarias, deben instalarse al cambiar de equipo, el sistema iniciará y será perfectamente funcional. En comparación, en Windows, la dependencia de los drivers está tan integrada en la instalación que es probable que no reconozca hardware como la placa de red o Bluetooth, y conseguir instaladores puede resultar complicado.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="adaptabilidad-modularidad-linux-se-ajusta-a-ti"&gt;
Adaptabilidad (Modularidad): Linux se Ajusta a Ti
&lt;a href="#adaptabilidad-modularidad-linux-se-ajusta-a-ti" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La adaptabilidad de Linux es una característica distintiva: el sistema se adapta a tus necesidades, no al revés. Aunque esto puede generar críticas debido a la abundancia de aplicaciones similares, en mi experiencia profesional, esta flexibilidad ha ahorrado tiempo considerable. La capacidad de programar tareas para satisfacer mis necesidades ha aumentado no solo mi productividad, sino también la posibilidad de automatizar diversas tareas para un multitasking eficiente. En sistemas más cerrados, las limitaciones a menudo conducen a frustraciones o a la necesidad de modificar el sistema para lograr objetivos específicos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="live-más-que-una-prueba-una-herramienta-poderosa"&gt;
Live: Más que una Prueba, una Herramienta Poderosa
&lt;a href="#live-m%c3%a1s-que-una-prueba-una-herramienta-poderosa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La opción de tener un live no solo facilita la prueba previa del sistema, sino que también proporciona una herramienta potente para ejecutar en cualquier PC. Aunque hay proyectos en Windows que ofrecen funcionalidades similares, no son oficiales ni estables, ya que la estabilidad está vinculada a la versión de la ISO. Linux, en cambio, ofrece diversas herramientas para arrancar desde la ISO y utilizar el sistema para probar, instalar o incluso realizar reparaciones y recuperación de datos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="compatibilidad-con-hardware-antiguo-un-doble-filo"&gt;
Compatibilidad con Hardware Antiguo: Un Doble Filo
&lt;a href="#compatibilidad-con-hardware-antiguo-un-doble-filo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La compatibilidad de Linux con hardware antiguo puede considerarse una desventaja para aquellos que ejecutan el sistema en equipos con dos décadas de antigüedad. Sin embargo, en equipos de 5 o 10 años atrás, Linux es completamente compatible con la mayoría de los dispositivos, a diferencia de otros sistemas que presentan limitaciones y requieren manipulaciones para la instalación.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="personalización-de-la-interfaz-de-usuario-ui"&gt;
Personalización de la Interfaz de Usuario (UI)
&lt;a href="#personalizaci%c3%b3n-de-la-interfaz-de-usuario-ui" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Linux brilla en la personalización de la interfaz de usuario, ofreciendo una variedad de configuraciones que realzan su aspecto. La posibilidad de personalizar iconos, algo complejo en otros sistemas, se logra de manera sencilla en Linux. Mientras que en otros sistemas se puede hacer con software adicional, en Linux la adaptabilidad y personalización están integradas en todo el sistema.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="múltiples-proveedores-diversidad-y-soporte"&gt;
Múltiples Proveedores: Diversidad y Soporte
&lt;a href="#m%c3%baltiples-proveedores-diversidad-y-soporte" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Cada distribución de Linux tiene su propio ciclo, permitiendo cambiar de una a otra y recibir soporte de diferentes empresas, como Canonical o Red Hat. Esto asegura la existencia y diversidad de elecciones, manteniendo la robustez del soporte a lo largo del tiempo.&lt;/p&gt;</description></item><item><title>Onlyoffice DocSpace 2.0 lanzado con salas públicas, complementos, reasignación de datos, interfaz RTL y otras mejoras</title><link>https://patojad.com.ar/post/2023/12/onlyoffice-docspace-2.0-lanzado-con-salas-p%C3%BAblicas-complementos-reasignaci%C3%B3n-de-datos-interfaz-rtl-y-otras-mejoras/</link><pubDate>Wed, 13 Dec 2023 15:56:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/12/onlyoffice-docspace-2.0-lanzado-con-salas-p%C3%BAblicas-complementos-reasignaci%C3%B3n-de-datos-interfaz-rtl-y-otras-mejoras/</guid><description>&lt;p&gt;Después de un gran lanzamiento de ONLYOFFICE DocSpace 1.0 en abril de 2023, los desarrolladores lanzaron la versión 2.0 del entorno colaborativo basado en salas con la pila tecnológica actualizada y muchas características nuevas.&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;ONLYOFFICE DocSpace&lt;/strong&gt; actualizado viene con muchas novedades en toda la plataforma, que incluyen un nuevo tipo de salas para compartir públicamente, administración mejorada de salas, complementos para funcionalidad adicional, una página de perfil más intuitiva, reasignación de datos, más teclas de acceso rápido, herramientas de desarrollador extendidas y más.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="salas-publicas"&gt;
Salas publicas
&lt;a href="#salas-publicas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Las salas públicas recientemente agregadas facilitan mucho el trabajo en documentos con cualquier tercero. Permiten invitar a usuarios a través de enlaces externos para permitirles ver archivos sin registrarse. Si es necesario, los usuarios pueden generar múltiples enlaces externos con diferentes parámetros para establecer varios permisos de acceso. Para proteger documentos en una sala pública, se encuentran disponibles protección con contraseña, restricción de copia de contenido de archivos, así como restricción de descarga e impresión de archivos.&lt;/p&gt;
&lt;p&gt;Además, las salas públicas se pueden integrar en cualquier interfaz web a través de herramientas de desarrollo. De esta forma, los usuarios del sitio web o servicio correspondiente pueden acceder a los archivos de la sala directamente desde el frontend web.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="nuevas-funciones-para-la-gestión-de-salas"&gt;
Nuevas funciones para la gestión de salas.
&lt;a href="#nuevas-funciones-para-la-gesti%c3%b3n-de-salas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;ONLYOFFICE DocSpace 2.0&lt;/strong&gt; ofrece la posibilidad de crear una sala basada en archivos y carpetas personales. Si solo se selecciona una carpeta, su contenido se copia a la sala creada.&lt;/p&gt;
&lt;p&gt;Entre otras opciones nuevas para la gestión de salas se encuentran la descarga de salas , el filtrado por sala en la Papelera y la posibilidad de abandonar una sala y cambiar su propietario .&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="reasignación-de-datos"&gt;
Reasignación de datos
&lt;a href="#reasignaci%c3%b3n-de-datos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A partir de ahora, los administradores de SOLAMENTE OFFICE DocSpace pueden reasignar salas y archivos almacenados dentro de las salas que pertenecen a los usuarios con el estado Desactivado. Los datos se reasignan al administrador que está realizando la operación.&lt;/p&gt;
&lt;p&gt;También es posible seleccionar manualmente otro usuario de destino para reasignarlo. Esta característica permite elegir si eliminar un usuario o no al reasignar datos. Si se elimina un usuario y se reasignan sus datos, se eliminarán sus archivos personales. Es posible cancelar el proceso de reasignación ya iniciado haciendo clic en el botón correspondiente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="complementos-para-funciones-adicionales"&gt;
Complementos para funciones adicionales
&lt;a href="#complementos-para-funciones-adicionales" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La última actualización trae complementos integrados del sistema que permiten ampliar la funcionalidad de DocSpace. El propietario y los administradores de DocSpace pueden habilitar dichos complementos a través de la configuración de Integración. Una vez habilitados, los complementos están disponibles para todos los usuarios.&lt;/p&gt;
&lt;p&gt;La versión actual incluye PDF Converter para convertir documentos, hojas, diapositivas y formularios a PDF , draw.io para trabajar con diagramas de aspecto profesional y el complemento. que convierte la voz de archivos de audio y video en texto.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="página-de-perfil-rediseñada"&gt;
Página de perfil rediseñada
&lt;a href="#p%c3%a1gina-de-perfil-redise%c3%b1ada" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para que la navegación dentro de los perfiles de usuario sea más intuitiva, los desarrolladores organizaron todas las configuraciones personales en cuatro pestañas. La pestaña Iniciar sesión permite realizar un seguimiento de las sesiones activas y cerrar sesión si es necesario. Las notificaciones se habilitan o deshabilitan a través de la pestaña correspondiente. El cambio entre temas claros, oscuros o del sistema se realiza a través de la pestaña Tema de la interfaz.&lt;/p&gt;
&lt;p&gt;La pestaña Gestión de archivos comprende las configuraciones movidas desde el panel lateral izquierdo y permite activar, por ejemplo, una opción para guardar la copia del archivo también en el formato original.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mejoras-para-trabajar-con-formularios"&gt;
Mejoras para trabajar con formularios
&lt;a href="#mejoras-para-trabajar-con-formularios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La galería de formularios incorporada, que brinda acceso rápido a las plantillas de formulario listas para usar, obtiene una navegación más conveniente gracias al filtrado agregado por categoría, idioma y nombre junto con ordenar por nombre y fecha de última modificación. Es más, ahora es posible enviar plantillas creadas por usuarios a la Galería de formularios y obtener una recompensa.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="múltiples-actualizaciones-para-elementos-y-diseño-de-la-interfaz"&gt;
Múltiples actualizaciones para elementos y diseño de la interfaz.
&lt;a href="#m%c3%baltiples-actualizaciones-para-elementos-y-dise%c3%b1o-de-la-interfaz" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para una experiencia de usuario más cómoda, el equipo de ONLYOFFICE implementó más teclas de acceso rápido, miniaturas de videos , lenguajes RTL para la interfaz en el modo beta, navegación de 2 niveles , vista móvil para las páginas de configuración de Apariencia, Marca, Inicio de sesión único y SDK de Javascript. .&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="actualizaciones-de-la-pila-tecnológica"&gt;
Actualizaciones de la pila tecnológica
&lt;a href="#actualizaciones-de-la-pila-tecnol%c3%b3gica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para ONLYOFFICE DocSpac e , los desarrolladores utilizan componentes y motores actualizados , incluidos .NET Core y la última versión de .NET para el lado del servidor, un backend confiable, y React para el lado del cliente para garantizar una apariencia moderna y compatibilidad con dispositivos móviles .&lt;/p&gt;
&lt;p&gt;En la versión 2.0, la pila tecnológica se actualiza en consecuencia para garantizar un trabajo más confiable, incluido React v18 , soporte para OpenSearch y la última versión de Elasticsearch, Storybook actualizado y descripciones de componentes , y más.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="regiones-de-nube-pública"&gt;
Regiones de nube pública
&lt;a href="#regiones-de-nube-p%c3%bablica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El dominio .com de ONLYOFFICE DocSpace Cloud ahora comprende dos regiones. Junto con Oregón, se añade la ubicación del servidor de datos de Frankfurt para garantizar un trabajo más fluido para los usuarios en Europa.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="herramientas-e-integración-para-desarrolladores"&gt;
Herramientas e integración para desarrolladores
&lt;a href="#herramientas-e-integraci%c3%b3n-para-desarrolladores" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Además de activar los complementos del sistema, ahora los desarrolladores pueden crear y agregar sus propios complementos a DocSpace utilizando el SDK de complementos y los ejemplos de código disponibles.&lt;/p&gt;
&lt;p&gt;La configuración de webhooks agregada permite realizar acciones personalizadas en el costado de cualquier aplicación o sitio web en función de varios eventos en DocSpace. Además, el onlyoffice DocSpace autohospedado también presenta una nueva sección en la configuración de integración donde es posible conectar onlyoffice docs. Esta configuración será útil para aquellos que tienen instalado un Document Server independiente y necesitan integrarlo con su DocSpace.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="acerca-de-solamenteoffice-docspace"&gt;
Acerca de SOLAMENTEOFFICE DocSpace
&lt;a href="#acerca-de-solamenteoffice-docspace" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;SOLAMENTEOFFICE DocSpace&lt;/strong&gt; está destinado a mejorar la colaboración en documentos de Office y otros contenidos con diversas personas con las que los usuarios necesitan interactuar, como sus colegas, compañeros de equipo, clientes, socios, contratistas, patrocinadores, etc.&lt;/p&gt;
&lt;p&gt;La plataforma proporciona un entorno de sala para organizar una estructura de archivos clara según las necesidades de los usuarios o los objetivos del proyecto. Los permisos de acceso flexibles y los roles de usuario permiten ajustar el acceso a todo el espacio o a habitaciones separadas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="enlaces-útiles"&gt;
Enlaces útiles
&lt;a href="#enlaces-%c3%batiles" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Sitio oficial : &lt;a href="https://www.onlyoffice.com" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.onlyoffice.com
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Página oficial del proyecto - &lt;a href="https://www.onlyoffice.com/docspace.aspx" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.onlyoffice.com/docspace.aspx
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Registro — &lt;a href="https://www.onlyoffice.com/docspace-registration.aspx" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.onlyoffice.com/docspace-registration.aspx
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Facebook - &lt;a href="https://facebook.com/profile.php?id=100064155187996" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-facebook" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
https://facebook.com/profile.php?id=100064155187996
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Twitter - &lt;a href="https://twitter.com/only_office" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-twitter" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
https://twitter.com/only_office
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Linkedin - &lt;a href="https://linkedin.com/company/ascensio-system-sia/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-linkedin" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
https://linkedin.com/company/ascensio-system-sia/
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Instagram - &lt;a href="https://instagram.com/the_onlyoffice/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-instagram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
https://instagram.com/the_onlyoffice/
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;TikTok - &lt;a href="https://tiktok.com/@only_office" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://tiktok.com/@only_office
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Instalación de Wine en GNU/Linux para Ejecutar Aplicaciones Windows</title><link>https://patojad.com.ar/post/2023/11/instalaci%C3%B3n-de-wine-en-gnu-linux-para-ejecutar-aplicaciones-windows/</link><pubDate>Wed, 15 Nov 2023 12:02:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/11/instalaci%C3%B3n-de-wine-en-gnu-linux-para-ejecutar-aplicaciones-windows/</guid><description>&lt;p&gt;La compatibilidad entre sistemas operativos es esencial, y Wine, una herramienta de código abierto, facilita la ejecución de aplicaciones Windows en entornos GNU/Linux. En esta guía, exploraremos qué es Wine, cómo instalarlo en distintas distribuciones y dónde se instalan las aplicaciones. ¡Descubre cómo ampliar las posibilidades de tu sistema operativo!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-wine"&gt;
¿Qué es Wine?
&lt;a href="#qu%c3%a9-es-wine" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Wine, que significa &amp;ldquo;Wine Is Not an Emulator&amp;rdquo; (Wine no es un emulador), es una capa de compatibilidad que permite ejecutar aplicaciones diseñadas para Microsoft Windows en sistemas operativos basados en Unix, como GNU/Linux. No es una máquina virtual ni emula un entorno Windows completo; en cambio, traduce llamadas de sistema de Windows a llamadas de sistema compatibles con Unix.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-usar-wine"&gt;
¿Por qué usar Wine?
&lt;a href="#por-qu%c3%a9-usar-wine" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Wine es una herramienta muy útil para aquellos que necesitan ejecutar aplicaciones Windows en entornos GNU/Linux. Algunos ejemplos de casos de uso incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ejecutar aplicaciones de productividad como Microsoft Office.&lt;/li&gt;
&lt;li&gt;Ejecutar aplicaciones de diseño como Adobe Photoshop.&lt;/li&gt;
&lt;li&gt;Ejecutar juegos de Windows.&lt;/li&gt;
&lt;li&gt;Ejecutar aplicaciones de Windows que no tienen alternativas nativas en GNU/Linux.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-se-instala-wine"&gt;
¿Cómo se instala Wine?
&lt;a href="#c%c3%b3mo-se-instala-wine" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La instalación de Wine varía según la distribución de GNU/Linux que estés utilizando. A continuación, se detallan los pasos para algunas distribuciones populares.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="debianubuntu"&gt;
Debian/Ubuntu
&lt;a href="#debianubuntu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dpkg --add-architecture i386
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install wine64 wine32&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="fedora"&gt;
Fedora
&lt;a href="#fedora" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install wine&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arch-linux-y-derivadas-como-manjaro"&gt;
Arch Linux (y derivadas como Manjaro):
&lt;a href="#arch-linux-y-derivadas-como-manjaro" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S wine&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="opensuse"&gt;
OpenSUSE:
&lt;a href="#opensuse" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo zypper install wine&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="dónde-se-instalan-las-aplicaciones-con-wine"&gt;
¿Dónde se instalan las aplicaciones con Wine?
&lt;a href="#d%c3%b3nde-se-instalan-las-aplicaciones-con-wine" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Las aplicaciones instaladas con Wine se almacenan en un directorio llamado &lt;code&gt;wineprefix&lt;/code&gt;. Por defecto, se encuentra en el directorio de inicio del usuario en una carpeta oculta llamada &lt;code&gt;.wine&lt;/code&gt;. Dentro de este directorio, encontrarás una estructura similar a la de un sistema Windows estándar, con carpetas como &lt;code&gt;Program Files&lt;/code&gt; y &lt;code&gt;Windows&lt;/code&gt;.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="proceso-de-instalación-básico-de-una-aplicación-con-wine"&gt;
Proceso de instalación básico de una aplicación con Wine
&lt;a href="#proceso-de-instalaci%c3%b3n-b%c3%a1sico-de-una-aplicaci%c3%b3n-con-wine" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Descarga el instalador de la aplicación Windows que deseas ejecutar.&lt;/li&gt;
&lt;li&gt;Abre una terminal y navega hasta el directorio donde descargaste el instalador.&lt;/li&gt;
&lt;li&gt;Ejecuta el siguiente comando:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wine nombre_del_instalador.exe&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Sigue los pasos de instalación como lo harías en Windows.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusiones"&gt;
Conclusiones
&lt;a href="#conclusiones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Wine&lt;/strong&gt; es una herramienta invaluable para aquellos que necesitan ejecutar aplicaciones Windows en entornos GNU/Linux. Su capacidad para traducir llamadas de sistema y proporcionar un entorno de ejecución nativo es fundamental para mejorar la interoperabilidad entre diferentes sistemas operativos.&lt;/p&gt;</description></item><item><title>Cómo ver emojis correctamente en aplicaciones y sitios web</title><link>https://patojad.com.ar/post/2023/11/c%C3%B3mo-ver-emojis-correctamente-en-aplicaciones-y-sitios-web/</link><pubDate>Tue, 14 Nov 2023 14:06:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/11/c%C3%B3mo-ver-emojis-correctamente-en-aplicaciones-y-sitios-web/</guid><description>&lt;p&gt;Últimamente, me di cuenta de un problema después de la última instalación de mi sistema operativo: no podía ver correctamente los emojis en varios sitios web. Este inconveniente no solo afectaba a las plataformas en línea, sino también a las aplicaciones instaladas. A menudo, estas aplicaciones asumen que tenemos ciertos elementos instalados, pero no los marcan como dependencias.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/tgVP6XSd/erroremoji.webp" alt="error en los iconos" title="error en los iconos"
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Así que decidí documentar una solución para asegurarnos de tener todo lo necesario instalado y poder disfrutar de emojis perfectamente visibles tanto en aplicaciones como en sitios web.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="emojis"&gt;
Emojis
&lt;a href="#emojis" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Comencemos instalando la compatibilidad global de emojis, utilizando noto-fonts-emoji, uno de los proveedores de fuentes más importantes. Puedes instalarlo fácilmente desde tu gestor de paquetes con el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -Sy noto-fonts-emoji&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/K8WB4KNv/emojis.webp" alt="instalacion de emojis" title="instalacion de emojis"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="banderas"&gt;
Banderas
&lt;a href="#banderas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Además de los emojis tradicionales, es común encontrarse con banderas, especialmente en sitios web con múltiples idiomas. Para esto, necesitamos instalar el paquete específico que contiene emojis de banderas: noto-fonts-emoji-flags.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -Sy noto-fonts-emoji-flags&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/wjMD65DG/flags.webp" alt="instalacion de banderas" title="instalacion de banderas"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="resumen"&gt;
Resumen
&lt;a href="#resumen" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que hayas instalado ambos paquetes sugeridos, simplemente reinicia tu aplicación o navegador. ¡Ahora podrás disfrutar de todos los emojis en los sitios web y aplicaciones sin problemas!&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/4dVzDJp4/flagok.webp" alt="emojis ok" title="emojis ok"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>Cómo estructurar mi proyecto Vue.js</title><link>https://patojad.com.ar/post/2023/11/c%C3%B3mo-estructurar-mi-proyecto-vue.js/</link><pubDate>Thu, 02 Nov 2023 10:06:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/11/c%C3%B3mo-estructurar-mi-proyecto-vue.js/</guid><description>&lt;p&gt;Cuando intento aprender algo nuevo, a menudo me enfrento a la pregunta de cómo estructurar mi proyecto. ¿Cuál es la mejor práctica para hacerlo? ¿Dónde debo colocar mis archivos para evitar el caos en el proyecto? Este artículo está dedicado principalmente a los desarrolladores que acaban de comenzar a aprender &lt;strong&gt;Vue.js&lt;/strong&gt;, pero también puede ser interesante para los veteranos de &lt;strong&gt;Vue.js&lt;/strong&gt; que deseen obtener una nueva perspectiva sobre este tema.&lt;/p&gt;
&lt;p&gt;Comencemos desde cero con la instalación de un nuevo proyecto utilizando Vue CLI.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vue create mi-asombrosa-app&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Después de la instalación, podrás ver la siguiente estructura de carpetas (esto también depende de las opciones que hayas seleccionado en Vue CLI; para este proyecto, he seleccionado todas las opciones posibles):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--public
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----img
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------icons
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----favicon.ico
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----index.html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----robots.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--src
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----assets
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------logo.png
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----components
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------HelloWorld.vue
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----router
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------index.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----store
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------index.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----views
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------About.vue
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------Home.vue
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----App.vue
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----main.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----registerServiceWorkers.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----shims-vue.d.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--tests
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----e2e
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----unit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--.browserslistrc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--.eslintrc.js
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--.gitignore
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--babel.config.js
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--cypress.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--jest.config.js
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--package.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--package-lock.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--README.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--tsconfig.json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Esta es una estructura bastante estándar, pero no es adecuada para aplicaciones de tamaño medio o grande. Nos centraremos en la carpeta &amp;ldquo;src&amp;rdquo;, pero antes de continuar, echemos un vistazo rápido a otras carpetas.&lt;/p&gt;
&lt;p&gt;La carpeta &lt;code&gt;public&lt;/code&gt; se utiliza si necesitas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Archivos con nombres especiales en la salida de compilación.&lt;/li&gt;
&lt;li&gt;Referencias dinámicas para imágenes. (Aunque es mejor usar &lt;code&gt;@/assets/&lt;/code&gt; para esto).&lt;/li&gt;
&lt;li&gt;Si la biblioteca es incompatible con Webpack.&lt;/li&gt;
&lt;li&gt;Puedes encontrar más información sobre cómo utilizar la carpeta &lt;code&gt;public&lt;/code&gt; aquí.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tests/e2e&lt;/code&gt; es para pruebas de extremo a extremo.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tests/unit&lt;/code&gt; es para pruebas unitarias.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="estructura-de-la-carpeta-src"&gt;
Estructura de la carpeta &lt;code&gt;src&lt;/code&gt;
&lt;a href="#estructura-de-la-carpeta-src" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ahora, empecemos a estructurar nuestra carpeta &amp;ldquo;src&amp;rdquo; en el nuevo proyecto. Aquí está la estructura que me gustaría presentar:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;src
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--assets
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--common
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--layouts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--middlewares
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--modules
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--plugins
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--router
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--services
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--static
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--store
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--views&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Recorreremos todas las carpetas una por una y entenderemos por qué las necesitamos.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;assets&lt;/code&gt;: En este directorio, almacenaremos todos los archivos de activos. Aquí queremos guardar fuentes, iconos, imágenes, estilos, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;common&lt;/code&gt;: Esta carpeta se utiliza para guardar archivos comunes. Por lo general, se puede dividir en múltiples carpetas internas: componentes, mezclas, directivas, etc., o archivos individuales, como &lt;code&gt;funciones.ts&lt;/code&gt;, &lt;code&gt;helpers.ts&lt;/code&gt;, &lt;code&gt;constants.ts&lt;/code&gt;, &lt;code&gt;config.ts&lt;/code&gt; y otros. La principal razón para poner un archivo en esta carpeta es utilizarlo en muchos lugares. Por ejemplo, dentro de &lt;code&gt;src/common/components&lt;/code&gt; puedes almacenar &lt;code&gt;Button.vue&lt;/code&gt;, un componente compartido utilizado en toda la aplicación. En &lt;code&gt;helpers.ts&lt;/code&gt;, puedes escribir una función común para usar en varios lugares.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;layouts&lt;/code&gt;: Ya he abordado el problema de los diseños en uno de mis artículos anteriores. Puedes guardar los diseños de tu aplicación en este directorio. Por ejemplo: &lt;code&gt;AppLayout.vue&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;middlewares&lt;/code&gt;: Este directorio trabaja estrechamente con Vue Router. Puedes almacenar tus guards de navegación en esta carpeta. Aquí tienes un breve ejemplo de un middleware:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;checkAuth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;isAuthenticated&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isAuthenticated&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/login&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;y úsalo dentro de Vue Router:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Router&lt;/span&gt; &lt;span class="nx"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;vue-router&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;checkAuth&lt;/span&gt; &lt;span class="nx"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;../middlewares/checkAuth.js&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isAuthenticated&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Router&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;routes&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;history&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;beforeEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;from&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;checkAuth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;isAuthenticated&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;modules&lt;/code&gt;: Este es el núcleo de nuestra aplicación. Aquí almacenamos todos nuestros módulos, partes lógicamente separadas de nuestra aplicación. Te animo a que, dentro de cada módulo, crees:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Una carpeta de componentes internos donde puedes guardar tus componentes Vue.&lt;/li&gt;
&lt;li&gt;Una carpeta de pruebas (prefiero mantener todas las pruebas relacionadas en el módulo).&lt;/li&gt;
&lt;li&gt;Un archivo &lt;code&gt;store.ts&lt;/code&gt; o un directorio &lt;code&gt;store&lt;/code&gt;, donde mantengas el módulo de Vuex (o Pinia). Por ejemplo, este es un ejemplo de un módulo de pedidos, donde almacenas todos los componentes relacionados con los pedidos en tu aplicación: lista de pedidos, detalles del pedido, etc. Módulo de Vuex de pedidos. Archivos relacionados adicionales. Puede verse así:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;src
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--modules
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----orders
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------__tests__
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------components
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--------OrdersList.vue
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--------OrderDetails.vue
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------store
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--------actions.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--------getters.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--------mutations.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--------state.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------helpers.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------types.ts&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;plugins&lt;/code&gt;: En esta carpeta puedes crear y conectar todos tus plugins. Aquí tienes un ejemplo de conexión de un plugin en Vue 2:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;MyPlugin&lt;/span&gt; &lt;span class="nx"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;./myPlugin.ts&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;MyPlugin&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;someOption&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;En Vue 3, conectarás tu plugin en &lt;code&gt;main.ts&lt;/code&gt;. Pero aún puedes crear tus plugins dentro de la carpeta &lt;code&gt;plugins&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;services&lt;/code&gt;: Esta carpeta es necesaria para almacenar tus servicios. Por ejemplo, puedes crear y guardar un servicio de conexiones API, un servicio de gestión de almacenamiento local, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;static&lt;/code&gt;: Por lo general, no necesitas esta carpeta. Puede usarse para guardar algunos datos ficticios.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;router&lt;/code&gt;: Dentro de este directorio puedes almacenar todos los archivos relacionados con Vue Router. Puede ser solo &lt;code&gt;index.ts&lt;/code&gt; con el enrutador y las rutas en un solo lugar (en este caso, probablemente sea una buena idea almacenar este archivo en la raíz de &lt;code&gt;src&lt;/code&gt;). Yo prefiero separar el enrutador y las rutas en dos archivos diferentes para evitar confusiones.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;store&lt;/code&gt;: Este es el directorio de Vuex donde puedes almacenar todos los archivos relacionados con Vuex. Dado que deseas separar tus módulos de Vuex, en esta carpeta debes almacenar el estado raíz, las acciones, las mutaciones y los getters, y conectar automáticamente todos los módulos de Vuex desde el directorio de módulos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;views&lt;/code&gt;: Esta es la segunda carpeta más importante de nuestra aplicación. Aquí almacenamos todos los puntos de entrada para las rutas de la aplicación. Por ejemplo, en tu aplicación puedes tener rutas como &lt;code&gt;/home&lt;/code&gt;, &lt;code&gt;/about&lt;/code&gt;, &lt;code&gt;/orders&lt;/code&gt;. Respectivamente, en la carpeta &lt;code&gt;views&lt;/code&gt; deberías tener &lt;code&gt;Home.vue&lt;/code&gt;, &lt;code&gt;About.vue&lt;/code&gt;, &lt;code&gt;Orders.vue&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Podrías preguntarte por qué debemos separar vistas y módulos si podemos almacenarlos en el mismo lugar. Veo algunas ventajas en separarlos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Estructura de archivos más clara.&lt;/li&gt;
&lt;li&gt;Te permite comprender rápidamente qué rutas tienes en la aplicación.&lt;/li&gt;
&lt;li&gt;Facilita la comprensión de cuál archivo es la raíz de la página y dónde comienza a funcionar.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusiones"&gt;
Conclusiones
&lt;a href="#conclusiones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En este artículo, compartí mi enfoque para crear aplicaciones Vue basado en mi experiencia de trabajo en muchas aplicaciones Vue diferentes. Por supuesto, estas son solo sugerencias, y eres libre de usar todas, algunas o ninguna de ellas. Espero que este artículo ayude a algunos desarrolladores a estructurar sus proyectos de una manera nueva y les brinde más ideas.&lt;/p&gt;</description></item><item><title>Cómo Importar tus Claves SSH: Una Guía para DevOps</title><link>https://patojad.com.ar/post/2023/10/c%C3%B3mo-importar-tus-claves-ssh-una-gu%C3%ADa-para-devops/</link><pubDate>Wed, 25 Oct 2023 12:11:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/10/c%C3%B3mo-importar-tus-claves-ssh-una-gu%C3%ADa-para-devops/</guid><description>&lt;p&gt;Es común que los desarrolladores y DevOps tengan múltiples aspectos vinculados a sus claves &lt;a href="https://patojad.com.ar/post/2023/10/claves-ssh-una-gu%c3%ada-completa-para-la-seguridad-en-conexiones-remotas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
SSH
&lt;/a&gt;, desde el acceso a servidores hasta repositorios. Por lo tanto, es de vital importancia tener una copia de seguridad de tus claves &lt;a href="https://patojad.com.ar/post/2023/10/claves-ssh-una-gu%c3%ada-completa-para-la-seguridad-en-conexiones-remotas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
SSH
&lt;/a&gt;. En este artículo, te mostraré cómo importar tu copia de seguridad, evitando la tediosa tarea de crear una nueva clave y darla de alta en todos tus sistemas y servidores.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="dónde-se-almacenan-las-claves-ssh"&gt;
¿Dónde se Almacenan las Claves SSH?
&lt;a href="#d%c3%b3nde-se-almacenan-las-claves-ssh" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El lugar donde se almacenan las claves &lt;a href="https://patojad.com.ar/post/2023/10/claves-ssh-una-gu%c3%ada-completa-para-la-seguridad-en-conexiones-remotas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
SSH
&lt;/a&gt; varía según el sistema operativo que utilices. En mi caso, uso Linux, y las claves se guardan en la carpeta &lt;code&gt;~/.ssh/&lt;/code&gt;. Esta carpeta contiene tanto las claves públicas como las privadas, así como archivos de configuración para &lt;a href="https://patojad.com.ar/post/2023/10/claves-ssh-una-gu%c3%ada-completa-para-la-seguridad-en-conexiones-remotas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
SSH
&lt;/a&gt;. Si estás en Windows, las claves se guardan en &lt;code&gt;C:\Users\USERNAME\.ssh\&lt;/code&gt;. En el caso de macOS, las claves se encuentran en la carpeta &lt;code&gt;~/.ssh/&lt;/code&gt;, similar a Linux.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-importar-una-clave-ssh"&gt;
¿Cómo Importar una Clave SSH?
&lt;a href="#c%c3%b3mo-importar-una-clave-ssh" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para importar una clave &lt;a href="https://patojad.com.ar/post/2023/10/claves-ssh-una-gu%c3%ada-completa-para-la-seguridad-en-conexiones-remotas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
SSH
&lt;/a&gt;, el primer paso es copiar tanto la clave pública como la privada a la carpeta correspondiente en tu sistema operativo: &lt;code&gt;~/.ssh/&lt;/code&gt; para Linux y &lt;code&gt;C:\Users\USERNAME\.ssh\&lt;/code&gt; para Windows. Una vez que las claves estén en la carpeta, debes otorgar los permisos adecuados a la clave privada. Esto se logra ejecutando el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;700&lt;/span&gt; ~/.ssh/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;600&lt;/span&gt; ~/.ssh/id_rsa
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;600&lt;/span&gt; ~/.ssh/id_rsa.pub&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Con los permisos establecidos, el siguiente paso es agregar la clave al agente SSH. Esto se logra ejecutando el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh-add ~/.ssh/id_rsa&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-yellow-600/75 text-yellow-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-warning fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;En el video, el Agente SSH se actualiza automáticamente, por lo que este paso se omite en la guía.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Siguiendo estos pasos, habrás importado tu clave SSH de manera segura y eficiente, evitando la creación y alta manual en cada servidor y sistema al que necesitas acceder.&lt;/p&gt;</description></item><item><title>Claves SSH: Una Guía Completa para la Seguridad en Conexiones Remotas</title><link>https://patojad.com.ar/post/2023/10/claves-ssh-una-gu%C3%ADa-completa-para-la-seguridad-en-conexiones-remotas/</link><pubDate>Tue, 24 Oct 2023 12:55:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/10/claves-ssh-una-gu%C3%ADa-completa-para-la-seguridad-en-conexiones-remotas/</guid><description>&lt;p&gt;En el mundo de la informática y la seguridad en línea, las &lt;strong&gt;Claves SSH&lt;/strong&gt; son una parte fundamental de la protección de tus sistemas y datos. Si te has preguntado qué significa &lt;strong&gt;SSH&lt;/strong&gt;, para qué sirve una clave &lt;strong&gt;SSH&lt;/strong&gt; o cuáles son las ventajas de utilizar &lt;strong&gt;SSH&lt;/strong&gt;, estás en el lugar correcto. En este artículo, exploraremos en detalle todo lo que necesitas saber sobre las &lt;strong&gt;Claves SSH&lt;/strong&gt; y por qué son esenciales en el mundo de la seguridad en línea.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-una-clave-ssh"&gt;
¿Qué es una clave SSH?
&lt;a href="#qu%c3%a9-es-una-clave-ssh" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;SSH&lt;/strong&gt; es la abreviatura de &lt;em&gt;&amp;ldquo;Secure Shell&amp;rdquo;&lt;/em&gt;. Se trata de un protocolo de red que permite a los usuarios acceder de forma segura a sistemas y datos a través de una conexión cifrada. Una &lt;em&gt;&amp;ldquo;Clave SSH&amp;rdquo;&lt;/em&gt; es una parte crucial de este protocolo y es utilizada para autenticar la identidad del usuario y cifrar la comunicación entre el cliente y el servidor. En resumen, una clave &lt;strong&gt;SSH&lt;/strong&gt; es una forma segura de autenticación que permite a un usuario acceder a un sistema o servidor de manera segura y encriptada.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-significa-ssh"&gt;
¿Qué significa SSH?
&lt;a href="#qu%c3%a9-significa-ssh" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;SSH&lt;/strong&gt;, como se mencionó anteriormente, es la abreviatura de &lt;em&gt;&amp;ldquo;Secure Shell&amp;rdquo;&lt;/em&gt;. Es un protocolo de red que se utiliza para acceder a sistemas remotos de manera segura. La palabra &lt;em&gt;&amp;ldquo;secure&amp;rdquo;&lt;/em&gt; en &lt;strong&gt;SSH&lt;/strong&gt; es clave aquí, ya que resalta la importancia de la seguridad en la comunicación entre el cliente y el servidor. &lt;strong&gt;SSH&lt;/strong&gt; utiliza técnicas de cifrado para proteger la información transmitida, lo que lo convierte en una opción segura para la administración de sistemas y transferencia de datos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="para-qué-sirve-una-clave-ssh"&gt;
¿Para qué sirve una clave SSH?
&lt;a href="#para-qu%c3%a9-sirve-una-clave-ssh" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Las &lt;strong&gt;claves SSH&lt;/strong&gt; se utilizan principalmente para la autenticación y el cifrado de la comunicación entre un cliente y un servidor. Cuando un usuario se conecta a un servidor &lt;strong&gt;SSH&lt;/strong&gt;, el sistema verifica su identidad utilizando una clave &lt;strong&gt;SSH&lt;/strong&gt;. Esto proporciona un alto nivel de seguridad, ya que las &lt;strong&gt;claves SSH&lt;/strong&gt; son difíciles de adivinar o piratear. Además, una vez que la conexión está establecida, toda la comunicación entre el cliente y el servidor se cifra, lo que significa que cualquier dato transmitido, como contraseñas o archivos, está protegido contra posibles ataques de intermediarios maliciosos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cuál-es-la-ventaja-de-usar-ssh"&gt;
¿Cuál es la ventaja de usar SSH?
&lt;a href="#cu%c3%a1l-es-la-ventaja-de-usar-ssh" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El uso de &lt;strong&gt;SSH&lt;/strong&gt; conlleva varias ventajas clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Seguridad:&lt;/strong&gt; &lt;strong&gt;SSH&lt;/strong&gt; es altamente seguro debido a la autenticación de clave pública y al cifrado de extremo a extremo. Esto significa que tus datos y credenciales de acceso están protegidos contra amenazas de seguridad.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Autenticación sin contraseña:&lt;/strong&gt; Las &lt;strong&gt;claves SSH&lt;/strong&gt; permiten la autenticación sin necesidad de ingresar una contraseña cada vez que te conectas. Esto no solo es más cómodo, sino que también elimina la necesidad de almacenar contraseñas en el servidor, lo que mejora la seguridad.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Acceso remoto seguro:&lt;/strong&gt; &lt;strong&gt;SSH&lt;/strong&gt; permite a los administradores de sistemas y desarrolladores acceder a servidores y sistemas de manera segura desde cualquier ubicación, lo que facilita la administración y el mantenimiento de sistemas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Transferencia de archivos segura:&lt;/strong&gt; Además de la administración remota, &lt;strong&gt;SSH&lt;/strong&gt; también se utiliza para la transferencia de archivos segura, lo que lo convierte en una herramienta versátil para la administración de sistemas y el intercambio de datos.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En resumen, las &lt;strong&gt;Claves SSH&lt;/strong&gt; son fundamentales en la seguridad de la comunicación y el acceso a sistemas remotos. Ofrecen una forma segura de autenticación y cifrado, lo que protege tus datos y sistemas contra posibles amenazas. Ya sea que seas un administrador de sistemas, un desarrollador o simplemente un usuario preocupado por la seguridad, comprender y utilizar las &lt;strong&gt;Claves SSH&lt;/strong&gt; es esencial en el mundo digital actual.&lt;/p&gt;</description></item><item><title>Mi terminal ZSH + PowerLevel10K</title><link>https://patojad.com.ar/post/2023/10/mi-terminal-zsh--powerlevel10k/</link><pubDate>Thu, 12 Oct 2023 12:22:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/10/mi-terminal-zsh--powerlevel10k/</guid><description>&lt;p&gt;Muchos me preguntaron sobre mi terminal en videos anteriores, en esta oportunidad quiero explicar como llegar a tener una terminal como la que uso yo, y específicamente, porque tener una terminal así.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/performance.gif" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Dentro de mi profesión como developer es importante la velocidad y simplicidad de tareas cotidianas y una de esas es el uso de la terminal, la terminal la uso todo el dia y para prácticamente todo, por lo cual requiero una terminal que pueda personalizar para que se acomode y obviamente me simplifique todo lo que pueda…&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/DvcA_iFov54?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="zsh-un-shell-diferente"&gt;
ZSH un shell diferente
&lt;a href="#zsh-un-shell-diferente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;ZSH (Z shell) es una terminal (o mejor dicho shell) para uso interactivo que nos permitirá ser más eficientes cuando estemos delante de la consola. Esta Shell nos permite interpretar, además de comandos, scripts lo cual puede volverse extremadamente útil. Y entre sus ventajas podemos enumerar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eficiencia&lt;/li&gt;
&lt;li&gt;Completado de tabulador mejorado (para los que usamos tab con frecuencia esto es lo que mas me enamoro)&lt;/li&gt;
&lt;li&gt;Expansión de nombres de fichero mejorada&lt;/li&gt;
&lt;li&gt;Manejo de arrays mejorado&lt;/li&gt;
&lt;li&gt;Totalmente personalizable (a los fanáticos de la belleza esto les va a encantar)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La instalación es muy simple porque viene en los repositorios de la mayoría de las distros de linux. Lo cual nos permite hacerlo de una manera muy simple:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# debian/ubuntu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install zsh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# archlinux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S zsh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Si queremos definir este shell como shell por defecto (de esta forma al abrir la terminal iniciará este shell y no bash que suele ser el shell por defecto de la mayoría de las distros) ejecutamos el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chsh -s &lt;span class="sb"&gt;`&lt;/span&gt;which zsh&lt;span class="sb"&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Sin embargo por sí solo puede ser un poco engorroso de configurar y puede llevarnos demasiado tiempo, pero como vivimos en el mundo del Software Libre y de la gente que no se queda quieta, podemos encontrar unas &lt;strong&gt;vitaminas&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="oh-my-zsh-al-rescate"&gt;
Oh My ZSH al rescate
&lt;a href="#oh-my-zsh-al-rescate" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.ivaylopavlov.com/wp-content/uploads/2017/04/Screenshot-2017-04-30-00.43.48.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Es un framework desarrollado por la comunidad para gestionar la configuración de ZSH. El cual viene a simplificar la tarea personalizar y añadir plugins y configurarlo a gusto, esto puede llegar a ser realmente muy útil y por supuesto simple de instalar, para iniciar debemos instalar sus dependencias:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# debian/ubuntu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install git-core curl&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# archlinux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S git curl&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;y a continuación instalamos directamente desde su git.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sh -c &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;De esta forma se instalará este “aditivo” que permitirá configurarlo a nuestro gusto!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="powerlevel-10k"&gt;
PowerLevel 10k
&lt;a href="#powerlevel-10k" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/prompt-styles-high-contrast.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esto ya es 100% decicion mia, es un theme que me gusto y que suma un valor agregado con datos que muchas veces pueden ser interesantes que pueden leer en su documentación dentro de los cuales puedo resaltar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tiempo de ejecución de script&lt;/li&gt;
&lt;li&gt;Status de git&lt;/li&gt;
&lt;li&gt;hora de comando&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para instalarlos voy a indicar el paso a paso, no es obligatorio seguirlo así dado que algunos pasos son opcionales pero la verdad recomiendo hacerlo así para obtener una buena integración y performance… Iniciamos instalando las siguientes fonts y poniendo en nuestra terminal la font por defecto &lt;em&gt;Meslo Nerd Font&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
MesloLGS NF Regular
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
MesloLGS NF Bold
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
MesloLGS NF Italic
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
MesloLGS NF Bold Italic
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Luego desde la terminal descargamos el theme de PowerLevel10k desde su repositorio oficial:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone --depth&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; https://github.com/romkatv/powerlevel10k.git &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ZSH_CUSTOM&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="p"&gt;/.oh-my-zsh/custom&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;/themes/powerlevel10k&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Por último queda modificar el archivo de configuracion para que inicie este theme, para hacerlo en este caso lo explicare con nano pero pueden usar el editor que quieran:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano ~/.zshrc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;ahi buscamos la linea que tenga lo siguiente&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;cfg&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cfg" data-lang="cfg"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;ZSH_THEME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Donde los puntos suspensivos &lt;em&gt;(&amp;hellip;)&lt;/em&gt; son cualquier texto. y lo remplazamos por la siguiente linea&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;cfg&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cfg" data-lang="cfg"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;ZSH_THEME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;powerlevel10k/powerlevel10k&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Ahora reiniciamos la terminal y nos abrira una configuracion paso a paso donde vamos a ir eligiendo entre ejemplos como se vera la terminal, las primeras preguntas son si vemos los iconos y luego nos mostrará opciones (casi siempre del 1 al 4) donde iremos estableciendo la visualización…&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/configuration-wizard.gif" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En el caso de que no nos guste como quedo o queramos cambiarlo siempre se puede ejecutar el comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;p10k configure&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Que permitirá reconfigurar el theme nuevamente para dejarlo a nuestro gusto&amp;hellip; No te olvides de comentarnos que te parece y dejarnos la foto de tu terminal recien configurada! Te esperamos en Telegram&lt;/p&gt;</description></item><item><title>Gather: Herramienta de Gestión de Proyectos para Equipos de Desarrollo</title><link>https://patojad.com.ar/post/2023/10/gather-herramienta-de-gesti%C3%B3n-de-proyectos-para-equipos-de-desarrollo/</link><pubDate>Mon, 02 Oct 2023 13:46:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/10/gather-herramienta-de-gesti%C3%B3n-de-proyectos-para-equipos-de-desarrollo/</guid><description>&lt;p&gt;En el vertiginoso mundo del desarrollo de software, la gestión de proyectos es esencial para mantener el rumbo, optimizar los recursos y cumplir con los plazos. En esta búsqueda constante de herramientas que impulsen la eficiencia en los equipos de desarrollo, surge &amp;ldquo;Gather&amp;rdquo;, una plataforma que ha ganado popularidad en el último tiempo por su capacidad para facilitar la colaboración, la organización y la comunicación en proyectos de desarrollo. En este artículo, exploraremos las razones detrás del éxito de Gather y por qué es una herramienta indispensable para los equipos de desarrollo de hoy en día.&lt;/p&gt;
&lt;center&gt;&lt;blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/p/Cx5pbY_IBXg/?utm_source=ig_embed&amp;amp;utm_campaign=loading" data-instgrm-version="14" style=" background:#FFF; border:0; border-radius:10px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"&gt;&lt;div style="padding:16px;"&gt; &lt;a href="https://www.instagram.com/p/Cx5pbY_IBXg/?utm_source=ig_embed&amp;amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"&gt; &lt;div style=" display: flex; flex-direction: row; align-items: center;"&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 10px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 10px; flex-grow: 0; height: 14px; width: 60px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 19% 0;"&gt;&lt;/div&gt; &lt;div style="display:block; height:50px; margin:0 auto 12px; width:50px;"&gt;&lt;svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"&gt;&lt;g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"&gt;&lt;g transform="translate(-511.000000, -20.000000)" fill="#000000"&gt;&lt;g&gt;&lt;path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style="padding-top: 8px;"&gt; &lt;div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;"&gt;Ver esta publicación en Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 12.5% 0;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"&gt;&lt;div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: 8px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: auto;"&gt; &lt;div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 10px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 10px; flex-grow: 0; height: 14px; width: 144px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"&gt;&lt;a href="https://www.instagram.com/p/Cx5pbY_IBXg/?utm_source=ig_embed&amp;amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank"&gt;Una publicación compartida por Vasak Group (@vasakgroup)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt; &lt;script async src="//www.instagram.com/embed.js"&gt;&lt;/script&gt;&lt;/center&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="gather-qué-es-y-cómo-funciona"&gt;
Gather: ¿Qué es y cómo funciona?
&lt;a href="#gather-qu%c3%a9-es-y-c%c3%b3mo-funciona" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Gather es una plataforma de gestión de proyectos diseñada específicamente para equipos de desarrollo de software. Su enfoque principal es proporcionar un espacio centralizado donde los equipos puedan planificar, realizar un seguimiento y colaborar en proyectos de manera eficiente. A continuación, destacaremos algunas de las características clave que hacen que Gather sea tan valioso para los equipos de desarrollo:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="gestión-de-tareas-simplificada"&gt;
Gestión de Tareas Simplificada
&lt;a href="#gesti%c3%b3n-de-tareas-simplificada" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Gather permite a los equipos crear y asignar tareas de manera intuitiva. Los miembros del equipo pueden establecer prioridades, fechas límite y responsables para cada tarea, lo que facilita la supervisión del progreso y la gestión de la carga de trabajo.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="comunicación-eficiente"&gt;
Comunicación Eficiente
&lt;a href="#comunicaci%c3%b3n-eficiente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La comunicación es fundamental en cualquier proyecto de desarrollo. Gather incluye herramientas de comunicación integradas, como comentarios en tareas y discusiones, que permiten a los miembros del equipo colaborar de manera efectiva sin tener que recurrir a múltiples aplicaciones de mensajería o correos electrónicos dispersos.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="integraciones-potentes"&gt;
Integraciones Potentes
&lt;a href="#integraciones-potentes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Gather se integra con una variedad de herramientas populares utilizadas en el desarrollo de software, como GitHub, GitLab, Jira y Slack. Esto facilita la sincronización de datos y la consolidación de información importante en un solo lugar.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="visualización-de-proyectos"&gt;
Visualización de Proyectos
&lt;a href="#visualizaci%c3%b3n-de-proyectos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La capacidad de visualizar el progreso del proyecto es esencial. Gather ofrece gráficos y tableros personalizables que permiten a los equipos ver de un vistazo el estado de un proyecto, lo que ayuda a identificar áreas que requieren atención inmediata.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="acceso-en-cualquier-momento-y-en-cualquier-lugar"&gt;
Acceso en Cualquier Momento y en Cualquier Lugar
&lt;a href="#acceso-en-cualquier-momento-y-en-cualquier-lugar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Gather es una plataforma basada en la nube, lo que significa que los equipos pueden acceder a sus proyectos desde cualquier dispositivo con conexión a Internet. Esto facilita la colaboración y la gestión de proyectos en equipos distribuidos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-los-equipos-de-desarrollo-adoptan-gather"&gt;
¿Por qué los Equipos de Desarrollo Adoptan Gather?
&lt;a href="#por-qu%c3%a9-los-equipos-de-desarrollo-adoptan-gather" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Entonces, ¿por qué Gather se ha convertido en una herramienta esencial para los equipos de desarrollo? Aquí hay algunas razones clave:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="mayor-productividad"&gt;
Mayor Productividad
&lt;a href="#mayor-productividad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Gather simplifica la gestión de proyectos, lo que permite a los equipos centrarse en la ejecución de tareas en lugar de lidiar con complicadas herramientas de gestión.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="colaboración-mejorada"&gt;
Colaboración Mejorada
&lt;a href="#colaboraci%c3%b3n-mejorada" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La comunicación eficiente y la capacidad de asignar tareas fácilmente fomentan la colaboración entre los miembros del equipo, incluso cuando trabajan de forma remota.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="mayor-visibilidad"&gt;
Mayor Visibilidad
&lt;a href="#mayor-visibilidad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La visualización clara del progreso del proyecto permite a los equipos identificar rápidamente posibles obstáculos y tomar medidas para abordarlos.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="integraciones-con-herramientas-familiares"&gt;
Integraciones con Herramientas Familiares
&lt;a href="#integraciones-con-herramientas-familiares" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La capacidad de integrarse con las herramientas que los equipos ya utilizan agiliza el flujo de trabajo y evita la duplicación de esfuerzos.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="escalabilidad"&gt;
Escalabilidad
&lt;a href="#escalabilidad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Gather es adecuado tanto para equipos pequeños como para grandes empresas, lo que lo convierte en una solución versátil que puede crecer con la empresa.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Gather ha demostrado ser una herramienta invaluable para los equipos de desarrollo de software al simplificar la gestión de proyectos, mejorar la colaboración y proporcionar una mayor visibilidad en el progreso del trabajo. Su capacidad para integrarse con otras herramientas populares y su enfoque en la eficiencia hacen que Gather sea una elección lógica para los equipos que buscan optimizar sus procesos de desarrollo. Si tu equipo aún no ha explorado Gather, podría ser el momento de considerar su implementación y aprovechar sus beneficios para impulsar la eficiencia en el desarrollo de software.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href="https://gather.town/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Fuente
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>¿Es HTML un Lenguaje de Programación? Desmitificando su Naturaleza</title><link>https://patojad.com.ar/post/2023/09/es-html-un-lenguaje-de-programaci%C3%B3n-desmitificando-su-naturaleza/</link><pubDate>Fri, 08 Sep 2023 11:26:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/09/es-html-un-lenguaje-de-programaci%C3%B3n-desmitificando-su-naturaleza/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt;, siglas de HyperText Markup Language (Lenguaje de Marcado de Hipertexto), es una de las tecnologías fundamentales en el mundo de la informática y la web. Sin embargo, a pesar de su papel crítico en la creación de páginas web y aplicaciones, no se clasifica como un lenguaje de programación. En este artículo, exploraremos qué tipo de lenguaje es &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt;, qué implica ser un lenguaje de programación y por qué &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; no se considera uno.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-tipo-de-lenguaje-de-programación-es-html"&gt;
¿Qué tipo de lenguaje de programación es HTML?
&lt;a href="#qu%c3%a9-tipo-de-lenguaje-de-programaci%c3%b3n-es-html" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para comprender por qué &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; no es un lenguaje de programación, primero debemos entender su naturaleza. &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; es un lenguaje de marcado, lo que significa que se utiliza para estructurar y presentar el contenido en una página web. Su función principal es describir la organización del contenido, como encabezados, párrafos, listas, enlaces y elementos multimedia, utilizando etiquetas o marcas que indican cómo se debe mostrar ese contenido en un navegador web.&lt;/p&gt;
&lt;p&gt;Las etiquetas &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt;, como &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt;, y muchas otras, se utilizan para definir elementos en la página y proporcionar información sobre cómo se deben renderizar en el navegador. Esto hace que &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; sea esencial para la creación de páginas web, ya que permite definir la estructura y la apariencia de una página.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-son-los-lenguajes-de-programación"&gt;
¿Qué son los lenguajes de programación?
&lt;a href="#qu%c3%a9-son-los-lenguajes-de-programaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Los lenguajes de programación son sistemas formales de instrucciones diseñados para comunicarse con una computadora. Estos lenguajes permiten a los desarrolladores escribir algoritmos, crear aplicaciones, y controlar el comportamiento de una máquina. Los lenguajes de programación se utilizan para realizar una variedad de tareas, desde cálculos matemáticos y manipulación de datos hasta el desarrollo de aplicaciones de software complejas.&lt;/p&gt;
&lt;p&gt;Un lenguaje de programación típico consta de elementos como variables, estructuras de control (como bucles y condicionales), funciones y métodos que permiten realizar operaciones específicas. Los lenguajes de programación también proporcionan un entorno en el que los programadores pueden definir la lógica y la funcionalidad de un programa.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-no-es-html-un-lenguaje-de-programación"&gt;
¿Por qué no es HTML un lenguaje de programación?
&lt;a href="#por-qu%c3%a9-no-es-html-un-lenguaje-de-programaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La razón principal por la que &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; no se considera un lenguaje de programación es que carece de las características fundamentales que definen a un lenguaje de programación. Estas características incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Abstracción:&lt;/strong&gt; Los lenguajes de programación permiten a los desarrolladores crear algoritmos abstractos y realizar operaciones complejas. &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt;, en cambio, se centra en la estructura y presentación del contenido, sin la capacidad de realizar cálculos o procesamientos lógicos complejos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Variables y Operaciones:&lt;/strong&gt; Los lenguajes de programación incluyen la capacidad de declarar variables y realizar operaciones matemáticas y lógicas. &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; no proporciona estas funcionalidades; su función es proporcionar información sobre la estructura de una página web.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lógica y Control de Flujo:&lt;/strong&gt; Los lenguajes de programación permiten controlar el flujo de un programa utilizando estructuras de control como bucles y condicionales. &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; no ofrece estas capacidades; no puede tomar decisiones lógicas ni realizar acciones repetitivas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interacción con la Máquina:&lt;/strong&gt; Los lenguajes de programación pueden interactuar con el sistema operativo, acceder a bases de datos, manipular archivos y realizar una amplia gama de tareas. &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; está diseñado exclusivamente para la presentación en el navegador y no tiene acceso a estas capacidades.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En resumen, &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; es un lenguaje de marcado que se utiliza para estructurar y presentar contenido en la web, pero no es un lenguaje de programación debido a su falta de características fundamentales que definen a estos últimos. Mientras que los lenguajes de programación se utilizan para crear aplicaciones y controlar el comportamiento de las computadoras, &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; se centra en la organización visual y estructural del contenido web.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En conclusión, comprender la diferencia entre un lenguaje de programación y un lenguaje de marcado como &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; es fundamental para los desarrolladores y entusiastas de la informática. Si bien &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; es esencial en el desarrollo web, no debe confundirse con un lenguaje de programación debido a sus diferencias fundamentales en cuanto a funcionalidad y propósito. &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; y los lenguajes de programación son herramientas complementarias que desempeñan roles distintos en el mundo de la tecnología y la informática.&lt;/p&gt;</description></item><item><title>Charlas Linuxeras - Linuxtubers ¿Se puede vivir de Linux? Controversias en las Comunidades Hispanohablantes</title><link>https://patojad.com.ar/post/2023/09/charlas-linuxeras-linuxtubers-se-puede-vivir-de-linux-controversias-en-las-comunidades-hispanohablantes/</link><pubDate>Thu, 07 Sep 2023 10:15:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/09/charlas-linuxeras-linuxtubers-se-puede-vivir-de-linux-controversias-en-las-comunidades-hispanohablantes/</guid><description>&lt;p&gt;Hoy salio el primer capitulo de Charlas Linuxeras, un podcast de Ainus, donde habla de diferentes tematicas aledañas a Linux, en este primer capitulo hablamos de Linuxtubers, ¿Se puede vivir de Linux? Es la comunidad un poco tóxica, debate y charla sobre el estado actual de la comunidad Linuxera.&lt;/p&gt;
&lt;p&gt;&lt;a class="spreaker-player" href="https://www.spreaker.com/user/12313971/charlas-linuxeras-01-linuxtubers" data-resource="episode_id=56718400" data-theme="dark" data-playlist="false" data-width="100%" data-height="200px" style="border-radius: var(--site-radius)"&gt;Escucha&amp;quot;Charlas Linuxeras - EP01 - Linuxtubers&amp;quot; en Spreaker.&lt;/a&gt;&lt;script async src="https://widget.spreaker.com/widgets.js"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;De mas esta decir que estoy super contento de haber participado en este podcast, y espero que les guste y lo disfruten tanto como yo. Y por supuesto, estoy super agradecido con Ainus por haberme invitado a participar en este capitulo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="youtube"&gt;
Youtube
&lt;a href="#youtube" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Y por supuesto no te olvides de seguir a Ainus en sus redes sociales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/ainus64" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-twitter" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Twitter
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://instagram.com/ainus_64/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-instagram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Instagram
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtube.com/@Ainus64" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-youtube" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Youtube
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitch.tv/ainus64" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-twitch" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Twitch
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@Ainumortis" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-mastodon" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Mastodon
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>5 Verdades Malinterpretadas sobre Node.js que Debes Conocer en el Futuro</title><link>https://patojad.com.ar/post/2023/09/5-verdades-malinterpretadas-sobre-node.js-que-debes-conocer-en-el-futuro/</link><pubDate>Fri, 01 Sep 2023 10:13:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/09/5-verdades-malinterpretadas-sobre-node.js-que-debes-conocer-en-el-futuro/</guid><description>&lt;p&gt;Ya hablamos con anterioridad sobre &lt;a href="https://patojad.com.ar/post/2023/08/por-qu%c3%a9-node.js-se-volvi%c3%b3-tan-popular-para-el-desarrollo-backend/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
¿Por qué Node.js se volvió tan popular para el desarrollo backend?
&lt;/a&gt; y seguimos revisando el mismo articulo de P. Rehan en el que nos explica, tambien, &lt;strong&gt;&amp;ldquo;5 Verdades Malinterpretadas sobre Node.js que Debes Conocer en el Futuro&amp;rdquo;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Cada &lt;em&gt;&amp;ldquo;niño prodigio&amp;rdquo;&lt;/em&gt; viene acompañado de una nube de conceptos erróneos, y Node.js no es una excepción. Aquí te presentamos cinco malentendidos frecuentes sobre &lt;strong&gt;Node.js&lt;/strong&gt; &lt;em&gt;(que debes conocer para evitar caer en la trampa de la desinformación)&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Node.js no es la mejor elección para aplicaciones empresariales grandes ya que carece de escalabilidad.&lt;/strong&gt; La última vez que revisamos, cada organización estaba tratando de llevar sus aplicaciones a nuevas alturas de rendimiento, algo que &lt;strong&gt;Node.js&lt;/strong&gt; puede ofrecer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;PayPal, Walmart, Trello y LinkedIn, además de Netflix, afirman que solo funciona para aplicaciones pequeñas.&lt;/strong&gt; Estas son algunas de las aplicaciones más complejas que utilizan Node.js para manejar solicitudes y funcionan con poco o ningún tiempo de inactividad.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;No se limita solo al desarrollo web. Node.js&lt;/strong&gt; es excelente para aplicaciones de escritorio, dispositivos de IoT y herramientas de línea de comandos. &lt;em&gt;Slack&lt;/em&gt; y &lt;em&gt;Visual Studio Code&lt;/em&gt; son productos del poderoso dúo &lt;strong&gt;Electron-Node.js&lt;/strong&gt;. &lt;strong&gt;Gatsby&lt;/strong&gt; y &lt;strong&gt;Yarn&lt;/strong&gt; son herramientas de línea de comandos para crear sitios web rápidos y seguros que operan en &lt;strong&gt;Node.js&lt;/strong&gt; en el backend.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Las tareas intensivas de CPU arruinan Node.js.&lt;/strong&gt; Es cierto que es un entorno de un solo hilo donde el rendimiento se ve afectado según el número de solicitudes. Sin embargo, puedes superar esta limitación creando colas de tareas o generando procesos secundarios asíncronos específicos para la tarea.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Node.js permite la validación y la sanitización de entradas mientras opera con bibliotecas de confianza, por lo que no es una buena alternativa en cuanto a seguridad. Node.js&lt;/strong&gt; cuenta con soporte para la comunicación &lt;strong&gt;TLS/SSL&lt;/strong&gt;. Esto es lo que encripta la comunicación y la protege de vulnerabilidades y ataques.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href="https://pinjarirehan.medium.com/why-node-js-is-the-ultimate-game-changer-for-backend-development-26415839bbe2" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Fuente
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Cómo Actualizar aaPanel y Mantener tu Servidor Web al Día</title><link>https://patojad.com.ar/post/2023/08/c%C3%B3mo-actualizar-aapanel-y-mantener-tu-servidor-web-al-d%C3%ADa/</link><pubDate>Wed, 30 Aug 2023 11:23:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/08/c%C3%B3mo-actualizar-aapanel-y-mantener-tu-servidor-web-al-d%C3%ADa/</guid><description>&lt;p&gt;Mantener tu servidor web actualizado es esencial para garantizar su rendimiento, seguridad y funcionalidad. En este artículo, aprenderás cómo actualizar &lt;strong&gt;aaPanel&lt;/strong&gt;, una herramienta de panel de control que simplifica la administración de servidores web, y te proporciona una guía paso a paso para llevar a cabo este proceso.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-aapanel"&gt;
¿Qué es aaPanel?
&lt;a href="#qu%c3%a9-es-aapanel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;aaPanel&lt;/strong&gt; es un panel de control de hosting web gratuito y de código abierto que facilita la administración de servidores. Proporciona una interfaz gráfica intuitiva y amigable que permite a los usuarios gestionar servicios como &lt;strong&gt;Apache&lt;/strong&gt;, &lt;strong&gt;Nginx&lt;/strong&gt;, &lt;strong&gt;PHP&lt;/strong&gt;, bases de datos y más, sin necesidad de conocimientos técnicos avanzados.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="importancia-de-actualizar-aapanel"&gt;
Importancia de Actualizar aaPanel
&lt;a href="#importancia-de-actualizar-aapanel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La actualización regular de aaPanel es crucial por varias razones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Seguridad:&lt;/strong&gt; Las actualizaciones suelen incluir parches de seguridad que protegen tu servidor contra amenazas potenciales. Mantener aaPanel actualizado reduce la superficie de ataque y mantiene tus datos y aplicaciones seguros.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento:&lt;/strong&gt; Las actualizaciones pueden mejorar el rendimiento de aaPanel al corregir errores, optimizar el código y agregar nuevas características que optimizan la eficiencia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funcionalidad:&lt;/strong&gt; Las versiones más recientes de aaPanel suelen ofrecer nuevas funciones y mejoras en la interfaz, lo que puede mejorar la experiencia de administración del servidor.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="pasos-para-actualizar-aapanel"&gt;
Pasos para Actualizar aaPanel
&lt;a href="#pasos-para-actualizar-aapanel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien en el video se muestra como actualizar &lt;strong&gt;aaPanel&lt;/strong&gt; desde la interfaz web, en este articulo se muestra como hacerlo desde la terminal.&lt;/p&gt;
&lt;p&gt;A continuación, se detallan los pasos para actualizar aaPanel a la última versión en caso de querer hacerlo desde la terminal conectadose al servidor por &lt;a href="https://patojad.com.ar/post/2023/10/claves-ssh-una-gu%c3%ada-completa-para-la-seguridad-en-conexiones-remotas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
SSH
&lt;/a&gt;:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="acceder-al-servidor"&gt;
Acceder al Servidor
&lt;a href="#acceder-al-servidor" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Inicia sesión en tu servidor a través de &lt;a href="https://patojad.com.ar/post/2023/10/claves-ssh-una-gu%c3%ada-completa-para-la-seguridad-en-conexiones-remotas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
SSH
&lt;/a&gt; utilizando un cliente como PuTTY (en el caso de estar en Windows) o la terminal en sistemas Unix o Unix-Like como Linux.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh username@server_ip&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="respaldo-de-datos-opcional-pero-recomendado"&gt;
Respaldo de Datos (Opcional pero Recomendado)
&lt;a href="#respaldo-de-datos-opcional-pero-recomendado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Antes de actualizar, realiza una copia de seguridad de tus datos importantes, como archivos del sitio web y bases de datos, para evitar pérdidas accidentales. Si bien este paso es opcional, se recomienda encarecidamente realizar una copia de seguridad de tus datos antes de actualizar. Puedes utilizar el siguiente comando para crear una copia de seguridad de tu sitio web:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar -czvf backup.tar.gz /home/wwwroot&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="actualización"&gt;
Actualización
&lt;a href="#actualizaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Ejecuta el siguiente comando para ejecutar el script de actualización:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;service bt &lt;span class="m"&gt;16&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Sigue las instrucciones en pantalla para completar el proceso de actualización.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="verificación"&gt;
Verificación
&lt;a href="#verificaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Después de la actualización, verifica que &lt;strong&gt;aaPanel&lt;/strong&gt; esté funcionando correctamente accediendo a la interfaz de administración a través de tu navegador web.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Mantener &lt;strong&gt;aaPanel&lt;/strong&gt; actualizado es esencial para garantizar la seguridad y el rendimiento de tu servidor web. Sigue estos pasos para realizar una actualización exitosa y asegúrate de respaldar tus datos antes de comenzar. Un &lt;strong&gt;aaPanel&lt;/strong&gt; actualizado no solo protege tu servidor de posibles amenazas, sino que también te permite acceder a nuevas características y mejoras en la administración de tu sitio web. ¡Mantén tu servidor al día y disfruta de un entorno en línea seguro y eficiente!&lt;/p&gt;</description></item><item><title>¿Por qué Node.js se volvió tan popular para el desarrollo backend?</title><link>https://patojad.com.ar/post/2023/08/por-qu%C3%A9-node.js-se-volvi%C3%B3-tan-popular-para-el-desarrollo-backend/</link><pubDate>Mon, 28 Aug 2023 12:26:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/08/por-qu%C3%A9-node.js-se-volvi%C3%B3-tan-popular-para-el-desarrollo-backend/</guid><description>&lt;p&gt;En este artículo, exploraremos la perspectiva de un influyente autor de Medium acerca de los motivos detrás de la creciente popularidad de Node.js en el ámbito del desarrollo backend. El propósito de este artículo es presentar una adaptación traducida del artículo original, enriquecida con ajustes y opiniones personales sobre el contenido del autor.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-perspectiva-de-p-rehan"&gt;
La perspectiva de P. Rehan
&lt;a href="#la-perspectiva-de-p-rehan" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En los antiguos tiempos del desarrollo backend, &lt;strong&gt;PHP&lt;/strong&gt; solía ser la herramienta dominante para la creación de proyectos web &lt;em&gt;(incluso con un enfoque más abarcador que en la actualidad)&lt;/em&gt;. Sin embargo, con el paso del tiempo, &lt;strong&gt;PHP&lt;/strong&gt; gradualmente se convirtió en el pariente excéntrico y adelantado en el ámbito del desarrollo web, y en la actualidad, pocos comprenden su razón de existir &lt;em&gt;(aunque sigue siendo valioso en áreas como la sencillez del alojamiento web)&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Después, como aquel pariente alternativo que prefiere tomar café con leche, &lt;strong&gt;Ruby&lt;/strong&gt; (junto con Rails) ingresó con todas sus tecnologías sofisticadas y disruptivas &lt;em&gt;(aunque en este caso se pasa por alto el nivel de pureza de objetos que aún no se alcanza en &lt;strong&gt;Node.js&lt;/strong&gt;)&lt;/em&gt;. Todos tenemos a esos parientes, pero preferimos mantener cierta distancia.&lt;/p&gt;
&lt;p&gt;Ni siquiera es necesario mencionar a &lt;strong&gt;Java&lt;/strong&gt;, un vestigio obsoleto en la programación backend que solo recuerdan los usuarios de antiguos teléfonos Nokia. &lt;em&gt;(Dejemos a un lado, por un momento, las ventajas de eficiencia que brinda JAVA más allá de su consumo de recursos)&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/gJtjsx80/nodepopular.webp" alt="Node: un lenguaje popular" title="Node: un lenguaje popular"
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Pero &lt;em&gt;¿qué hace que Node.js sea el factor determinante en el desarrollo backend?&lt;/em&gt; Recordemos&amp;hellip; Hace algunos años, surgió algo nuevo en el mundo del desarrollo backend. No era una novedad extravagante, pero sí increíblemente eficiente: Node.js.&lt;/p&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Node.js es un entorno de ejecución de JavaScript multiplataforma y de código abierto que revolucionó el panorama en 2017, año en que se volvió ampliamente utilizado.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;La historia de &lt;strong&gt;Node.js&lt;/strong&gt; comenzó antes de alcanzar las 40,000 estrellas en GitHub. Inicialmente, era uno de esos pequeños entornos de &lt;strong&gt;JavaScript&lt;/strong&gt; que ejecutaban código fuera del navegador web. Sin embargo, resultó que &lt;strong&gt;Node.js&lt;/strong&gt; era justo lo que el mundo del desarrollo backend había estado anhelando durante todos esos años: &lt;em&gt;&amp;ldquo;un entorno innovador y potente capaz de gestionar volúmenes masivos de tráfico&amp;rdquo;&lt;/em&gt;. Las siguientes características han contribuido a su renombre como paradigma en el desarrollo backend:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Su tamaño compacto lo convierte en una herramienta excepcional para el desarrollo de aplicaciones en la nube.&lt;/li&gt;
&lt;li&gt;Su velocidad es prácticamente equiparable a la velocidad de la luz, gracias a su motor &lt;strong&gt;JavaScript&lt;/strong&gt; V8.&lt;/li&gt;
&lt;li&gt;La escalabilidad y capacidad de respuesta en el desarrollo de aplicaciones son sobresalientes.&lt;/li&gt;
&lt;li&gt;Cuenta con una comunidad activa de casi 100000 desarrolladores.&lt;/li&gt;
&lt;li&gt;Dispone de un conjunto inagotable de API y un ecosistema ilimitado que facilita la creación desde simples aplicaciones hasta complejas estructuras de microservicios de nivel avanzado.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cuál-es-el-componente-secreto"&gt;
¿Cuál es el componente secreto?
&lt;a href="#cu%c3%a1l-es-el-componente-secreto" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;¿Cómo puede un entorno de desarrollo backend gestionar tantas consultas y al mismo tiempo ser sólido y receptivo? ¿Cuál es el ingrediente secreto que corre por sus venas?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Node.js&lt;/strong&gt;, además de utilizar el mismo motor que Google Chrome, opera con un enfoque de E/S &lt;em&gt;(Entrada/Salida)&lt;/em&gt; sin bloqueo y controlado por eventos. Es lo que impulsa aplicaciones en tiempo real como Netflix (servicios de transmisión), Discord bots (chatbots) y 8 Ball Pool (juegos en línea).&lt;/p&gt;
&lt;p&gt;Imagine el modelo de E/S sin bloqueo y controlado por eventos como un superhéroe al que llamó Node-Man. Su habilidad única es manejar múltiples tareas y salvar personas sin sudar.&lt;/p&gt;
&lt;p&gt;Su capacidad proviene del modelo de E/S, que maneja múltiples solicitudes sin esperar a que se complete una antes de pasar a la siguiente.Así es como Node Man supera a Flash y vence al Hombre de Acero.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href="https://pinjarirehan.medium.com/why-node-js-is-the-ultimate-game-changer-for-backend-development-26415839bbe2" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Fuente
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Cómo Configurar un Sitio PHP en aaPanel</title><link>https://patojad.com.ar/post/2023/08/c%C3%B3mo-configurar-un-sitio-php-en-aapanel/</link><pubDate>Fri, 18 Aug 2023 08:01:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/08/c%C3%B3mo-configurar-un-sitio-php-en-aapanel/</guid><description>&lt;p&gt;En el vertiginoso mundo de la informática, la elección de una plataforma de alojamiento web sólida y eficiente es fundamental para el éxito de cualquier proyecto en línea. &lt;strong&gt;aaPanel&lt;/strong&gt;, una herramienta de panel de control gratuita y de código abierto, ha ganado popularidad por su capacidad para simplificar la administración de servidores y sitios web. En este artículo, te guiaré a través de los pasos para configurar un sitio &lt;strong&gt;PHP&lt;/strong&gt; en &lt;strong&gt;aaPanel&lt;/strong&gt;, maximizando así el rendimiento y la accesibilidad de tu proyecto web.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-aapanel"&gt;
¿Qué es aaPanel?
&lt;a href="#qu%c3%a9-es-aapanel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;aaPanel&lt;/strong&gt; es un panel de control de hosting web gratuito y de código abierto que facilita la administración de servidores. Proporciona una interfaz gráfica intuitiva y amigable que permite a los usuarios gestionar servicios como &lt;strong&gt;Apache&lt;/strong&gt;, &lt;strong&gt;Nginx&lt;/strong&gt;, &lt;strong&gt;PHP&lt;/strong&gt;, bases de datos y más, sin necesidad de conocimientos técnicos avanzados.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación-de-aapanel"&gt;
Instalación de aaPanel
&lt;a href="#instalaci%c3%b3n-de-aapanel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El primer paso es instalar aaPanel en tu servidor. Asegúrate de tener acceso a un servidor compatible con los requisitos de aaPanel, como &lt;strong&gt;Debian&lt;/strong&gt;, &lt;strong&gt;Ubuntu&lt;/strong&gt; o &lt;strong&gt;CentOS&lt;/strong&gt;. Una vez que hayas instalado el sistema operativo, puedes instalar aaPanel siguiendo los pasos detallados en el siguiente artículo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2023/06/instalar-aapanel/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Instalar aaPanel
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2023/07/abrir-puertos-aapanel/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Abrir puertos aaPanel
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2023/07/primer-ingreso-a-aapanel/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Primer ingreso a aaPanel
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="agregar-un-sitio-dinamico"&gt;
Agregar un Sitio Dinamico
&lt;a href="#agregar-un-sitio-dinamico" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que aaPanel esté instalado, es hora de agregar tu dominio y configurar un sitio web PHP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Inicia sesión en aaPanel usando la URL y credenciales proporcionadas durante la instalación.&lt;/li&gt;
&lt;li&gt;Navega a &lt;code&gt;Website&lt;/code&gt; y haz clic en &lt;code&gt;Add Website&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Ingresa los detalles de tu dominio, como el nombre del dominio y la ruta de la carpeta raíz del sitio (como se muestra en el video).&lt;/li&gt;
&lt;li&gt;Selecciona &lt;code&gt;PHP&lt;/code&gt; como tipo de sitio web y elige la versión de &lt;strong&gt;PHP&lt;/strong&gt; deseada.&lt;/li&gt;
&lt;li&gt;Selecciona si deseas habilitar &lt;strong&gt;SSL&lt;/strong&gt; para tu sitio web.&lt;/li&gt;
&lt;li&gt;Selecciona si deseas habilitar &lt;strong&gt;FTP&lt;/strong&gt; para tu sitio web.&lt;/li&gt;
&lt;li&gt;Selecciona si deseas crear una Base de Datos para tu sitio web.&lt;/li&gt;
&lt;li&gt;Haz clic en &lt;code&gt;Add Website&lt;/code&gt; para completar el proceso.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ajustes-avanzados-y-seguridad"&gt;
Ajustes Avanzados y Seguridad
&lt;a href="#ajustes-avanzados-y-seguridad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para optimizar aún más tu sitio PHP y garantizar su seguridad, considera implementar las siguientes medidas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SSL Certificate:&lt;/strong&gt; Habilita un certificado SSL gratuito para cifrar las comunicaciones entre el navegador del usuario y el servidor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firewall:&lt;/strong&gt; Configura un firewall para proteger tu servidor contra amenazas cibernéticas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backups:&lt;/strong&gt; Establece una política de respaldo regular para asegurar que los datos estén protegidos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Configurar un sitio &lt;strong&gt;PHP&lt;/strong&gt; en &lt;strong&gt;aaPanel&lt;/strong&gt; puede parecer una tarea desafiante al principio, pero con la guía adecuada, es un proceso simplificado que mejora significativamente la administración y el rendimiento de tu proyecto web. Siguiendo los pasos mencionados en esta guía, estarás en camino de tener un sitio web en funcionamiento con todas las ventajas que ofrece &lt;strong&gt;aaPanel&lt;/strong&gt;. Mantén tu proyecto seguro, optimizado y accesible, y observa cómo crece y prospera en el competitivo mundo en línea.&lt;/p&gt;</description></item><item><title>Cómo Crear un Sitio Estático con aaPanel</title><link>https://patojad.com.ar/post/2023/08/c%C3%B3mo-crear-un-sitio-est%C3%A1tico-con-aapanel/</link><pubDate>Wed, 09 Aug 2023 11:54:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/08/c%C3%B3mo-crear-un-sitio-est%C3%A1tico-con-aapanel/</guid><description>&lt;p&gt;En el mundo en constante evolución de la tecnología web, la creación de sitios estáticos se ha convertido en una opción popular para aquellos que buscan un enfoque simplificado y de alto rendimiento para su presencia en línea. A través del uso de herramientas como &lt;strong&gt;aaPanel&lt;/strong&gt;, puedes crear y administrar sitios estáticos de manera eficiente y efectiva. En esta guía paso a paso, te mostraremos cómo crear un sitio estático utilizando &lt;strong&gt;aaPanel&lt;/strong&gt;, aprovechando su potencial para alcanzar un sitio web rápido y seguro.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-aapanel"&gt;
¿Qué es aaPanel?
&lt;a href="#qu%c3%a9-es-aapanel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;aaPanel&lt;/strong&gt; es un panel de control de hosting web gratuito y de código abierto que facilita la administración de servidores. Proporciona una interfaz gráfica intuitiva y amigable que permite a los usuarios gestionar servicios como &lt;strong&gt;Apache&lt;/strong&gt;, &lt;strong&gt;Nginx&lt;/strong&gt;, &lt;strong&gt;PHP&lt;/strong&gt;, bases de datos y más, sin necesidad de conocimientos técnicos avanzados.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="introducción-a-aapanel-y-preparación-del-entorno"&gt;
Introducción a &lt;strong&gt;aaPanel&lt;/strong&gt; y Preparación del Entorno
&lt;a href="#introducci%c3%b3n-a-aapanel-y-preparaci%c3%b3n-del-entorno" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para comenzar, asegúrate de haber instalado &lt;strong&gt;aaPanel&lt;/strong&gt; en tu servidor, siguiendo los pasos detallados en los siguientes articulos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2023/06/instalar-aapanel/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Instalar aaPanel
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2023/07/abrir-puertos-aapanel/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Abrir puertos aaPanel
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2023/07/primer-ingreso-a-aapanel/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Primer ingreso a aaPanel
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Una vez que hayas configurado &lt;strong&gt;aaPanel&lt;/strong&gt;, estarás listo para crear tu sitio estático.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="creación-del-sitio-estático"&gt;
Creación del Sitio Estático
&lt;a href="#creaci%c3%b3n-del-sitio-est%c3%a1tico" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Inicia sesión en tu panel de control &lt;strong&gt;aaPanel&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;En la sección &lt;em&gt;Web&lt;/em&gt;, selecciona &lt;em&gt;Sitios web&lt;/em&gt; y haz clic en &lt;em&gt;Agregar sitio web&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Completa la información requerida, como el nombre del dominio y la ubicación de los archivos.&lt;/li&gt;
&lt;li&gt;Asegúrate de seleccionar &lt;em&gt;Estático&lt;/em&gt; como el tipo de sitio web.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="configuración-y-personalización"&gt;
Configuración y Personalización
&lt;a href="#configuraci%c3%b3n-y-personalizaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Tw7sKwbR/siteconfig.webp" alt="siteconfig.webp" title="siteconfig.webp"
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Una vez que hayas creado el sitio estático, podrás acceder a la configuración detallada.&lt;/li&gt;
&lt;li&gt;Utiliza las opciones disponibles para personalizar aspectos como las reglas de reescritura, la protección de directorios y la gestión de acceso.&lt;/li&gt;
&lt;li&gt;Añade cualquier archivo necesario para tu sitio estático, como &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/descubriendo-el-mundo-de-css/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
CSS
&lt;/a&gt;&lt;/strong&gt;, y archivos de imágenes en la ubicación designada.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="implementación-de-seguridad"&gt;
Implementación de Seguridad
&lt;a href="#implementaci%c3%b3n-de-seguridad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/ZRKgY3C7/securityaapanel.webp" alt="securityaapanel.webp" title="securityaapanel.webp"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En la sección &lt;em&gt;Seguridad&lt;/em&gt;, asegúrate de habilitar medidas de seguridad sólidas, como el firewall y la protección contra ataques DDoS.
Considera la posibilidad de implementar un certificado SSL para garantizar la seguridad de la comunicación en tu sitio. Si bien el que mostramos en el video es suficiente para algunos sitios se recomienda utilizar uno privado.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="publicación-y-monitoreo"&gt;
Publicación y Monitoreo
&lt;a href="#publicaci%c3%b3n-y-monitoreo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/wBkZdFTR/metricsaapanel.webp" alt="metricsaapanel.webp" title="metricsaapanel.webp"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Una vez que hayas completado la configuración, haz clic en &lt;em&gt;Guardar&lt;/em&gt; para aplicar los cambios.&lt;/li&gt;
&lt;li&gt;Sube tus archivos estáticos al directorio designado utilizando herramientas FTP o el administrador de archivos en &lt;strong&gt;aaPanel&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Monitorea el rendimiento de tu sitio estático a través de las herramientas de monitoreo proporcionadas por &lt;strong&gt;aaPanel&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Crear un sitio estático con &lt;strong&gt;aaPanel&lt;/strong&gt; es un proceso simplificado que te brinda un sitio web rápido y seguro. Al seguir esta guía paso a paso y aprovechar el video tutorial, estarás en camino de lanzar tu propio sitio estático con éxito. Aprovecha la potencia de &lt;strong&gt;aaPanel&lt;/strong&gt; para simplificar la administración y lograr un rendimiento excepcional en tu presencia en línea. ¡Comienza hoy mismo y disfruta de los beneficios de un sitio web estático de alto rendimiento!&lt;/p&gt;</description></item><item><title>Descubriendo el Mundo de CSS</title><link>https://patojad.com.ar/post/2023/08/descubriendo-el-mundo-de-css/</link><pubDate>Tue, 08 Aug 2023 10:15:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/08/descubriendo-el-mundo-de-css/</guid><description>&lt;p&gt;En el vasto universo del desarrollo web, &lt;strong&gt;CSS&lt;/strong&gt; (&lt;em&gt;Cascading Style Sheets&lt;/em&gt;) juega un papel fundamental al dar vida y estilo a las páginas que visitamos a diario. En este artículo, exploraremos desde los fundamentos hasta las diferencias clave entre &lt;strong&gt;CSS&lt;/strong&gt; y &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt;, revelando cómo este lenguaje de diseño potencia la apariencia y la experiencia visual de los sitios web modernos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-y-para-qué-sirve-css"&gt;
¿Qué es y para qué sirve &lt;strong&gt;CSS&lt;/strong&gt;?
&lt;a href="#qu%c3%a9-es-y-para-qu%c3%a9-sirve-css" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt; es el lenguaje que permite a los desarrolladores web controlar el diseño y la presentación visual de una página. Mientras que &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; se encarga de la estructura y el contenido, &lt;strong&gt;CSS&lt;/strong&gt; se enfoca en aspectos como colores, tipografías, márgenes y disposición. Imagina &lt;strong&gt;CSS&lt;/strong&gt; como el estilista de una página web, que elige la ropa, el peinado y los accesorios para que todo luzca armonioso y atractivo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-css-básico"&gt;
¿Qué es &lt;strong&gt;CSS&lt;/strong&gt; básico?
&lt;a href="#qu%c3%a9-es-css-b%c3%a1sico" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/pLS883xv/codigo-css.webp" alt="CSS básico" title="CSS básico"
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;CSS&lt;/strong&gt; básico se centra en la aplicación de estilos simples a elementos &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt;. Utiliza reglas que comprenden un selector (el elemento a estilizar) y propiedades (atributos visuales que se aplicarán). Por ejemplo, el siguiente código &lt;strong&gt;CSS&lt;/strong&gt; cambiaría el color de un título:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;css&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-usa-css"&gt;
¿Qué usa &lt;strong&gt;CSS&lt;/strong&gt;?
&lt;a href="#qu%c3%a9-usa-css" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt; puede ser aplicado de tres formas principales: en línea, en la cabeza del documento &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; o en un archivo externo. La opción en línea agrega estilos directamente a una etiqueta &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt;, pero puede volverse complicada en páginas grandes. Colocar &lt;strong&gt;CSS&lt;/strong&gt; en la cabeza del documento agrupa estilos en una sección &lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt;, pero si quieres reutilizar estilos en varias páginas, la mejor práctica es enlazar un archivo &lt;strong&gt;CSS&lt;/strong&gt; externo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="diferencia-entre-el-código-html-y-css"&gt;
Diferencia entre el código &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; y &lt;strong&gt;CSS&lt;/strong&gt;
&lt;a href="#diferencia-entre-el-c%c3%b3digo-html-y-css" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/5NxwMwph/htmlvscss.webp" alt="Diferencia entre el código HTML y CSS" title="Diferencia entre el código HTML y CSS"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La principal diferencia entre &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; y &lt;strong&gt;CSS&lt;/strong&gt; radica en su propósito y función. &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt;, o Hypertext Markup Language, se enfoca en la estructura y contenido de una página. Define encabezados, párrafos, enlaces y otros elementos. Por otro lado, &lt;strong&gt;CSS&lt;/strong&gt; se concentra en la presentación visual y el diseño. Mientras &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; construye la estructura, &lt;strong&gt;CSS&lt;/strong&gt; pinta la imagen final.&lt;/p&gt;
&lt;p&gt;En resumen, podríamos decir que &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; es el esqueleto de una página, mientras que &lt;strong&gt;CSS&lt;/strong&gt; es la piel que le da su apariencia única. La combinación de ambos permite a los desarrolladores web crear experiencias visuales atractivas y funcionales para los usuarios.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En el intrincado mundo del desarrollo web, &lt;strong&gt;CSS&lt;/strong&gt; es un elemento esencial para la creación de interfaces atractivas y amigables. Desde su función básica de estilización hasta su papel en la diferenciación con &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;CSS&lt;/strong&gt; se erige como el lienzo en el que se pintan los diseños digitales de hoy. Al entender cómo &lt;strong&gt;CSS&lt;/strong&gt; trabaja en conjunto con &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt;, los desarrolladores tienen el poder de llevar la creatividad y la funcionalidad a nuevas alturas en la web moderna.&lt;/p&gt;
&lt;p&gt;A medida que te sumerjas en el emocionante viaje del desarrollo web, recuerda que el dominio de &lt;strong&gt;CSS&lt;/strong&gt; no solo añadirá una valiosa habilidad a tu caja de herramientas, sino que también te permitirá transformar ideas en interfaces visuales que cautiven y deleiten a los usuarios.&lt;/p&gt;</description></item><item><title>HTML: El lenguaje fundamental de la web</title><link>https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/</link><pubDate>Thu, 03 Aug 2023 10:36:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/</guid><description>&lt;p&gt;En el mundo actual, donde la tecnología y la información son protagonistas, es esencial comprender cómo funciona la estructura básica de los sitios web. Aquí es donde entra en juego el lenguaje de marcas más importante y fundamental: &lt;strong&gt;HTML&lt;/strong&gt; &lt;em&gt;(HyperText Markup Language)&lt;/em&gt;. En este artículo, exploraremos qué es HTML, para qué se utiliza, cómo se aplica y los tipos de lenguaje que lo componen.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-html-y-para-qué-se-utiliza"&gt;
¿Qué es &lt;strong&gt;HTML&lt;/strong&gt; y para qué se utiliza?
&lt;a href="#qu%c3%a9-es-html-y-para-qu%c3%a9-se-utiliza" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;HTML&lt;/strong&gt;, es un lenguaje de marcas utilizado para crear y estructurar el contenido de páginas web. Con &lt;strong&gt;HTML&lt;/strong&gt;, los desarrolladores web pueden definir el contenido, los elementos multimedia y los enlaces dentro de una página. A través de etiquetas (también conocidas como &amp;ldquo;marcado&amp;rdquo;), &lt;strong&gt;HTML&lt;/strong&gt; define cómo se muestra el contenido en un navegador web.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTML&lt;/strong&gt; es la piedra angular de cualquier sitio web, ya que proporciona la estructura básica que permite a los navegadores interpretar y presentar información a los usuarios de manera coherente. Cada página web está escrita en &lt;strong&gt;HTML&lt;/strong&gt;, lo que significa que es una herramienta fundamental para los desarrolladores y creadores de contenido en línea.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-html-en-pocas-palabras"&gt;
¿Qué es &lt;strong&gt;HTML&lt;/strong&gt; en pocas palabras?
&lt;a href="#qu%c3%a9-es-html-en-pocas-palabras" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En resumen, &lt;strong&gt;HTML&lt;/strong&gt; es un lenguaje de marcas utilizado para crear páginas web y definir su estructura. Permite a los desarrolladores describir el contenido y la disposición del texto, imágenes, videos y otros elementos que se encuentran en un sitio web.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="dónde-se-utiliza-el-html"&gt;
¿Dónde se utiliza el &lt;strong&gt;HTML&lt;/strong&gt;?
&lt;a href="#d%c3%b3nde-se-utiliza-el-html" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El &lt;strong&gt;HTML&lt;/strong&gt; se utiliza prácticamente en todas partes en la web. Cada vez que navegas por Internet, interactúas con páginas escritas en &lt;strong&gt;HTML&lt;/strong&gt;. Cuando visitas tu página favorita, revisas tu correo electrónico o realizas una búsqueda en un motor de búsqueda, estás viendo contenido generado mediante &lt;strong&gt;HTML&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Además de los sitios web, &lt;strong&gt;HTML&lt;/strong&gt; también se utiliza en aplicaciones web y plataformas de comercio electrónico. Por ejemplo, cuando realizas una compra en línea, estás interactuando con formularios y botones de compra que están diseñados y creados utilizando &lt;strong&gt;HTML&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-tipos-de-lenguaje-es-html"&gt;
¿Qué tipos de lenguaje es &lt;strong&gt;HTML&lt;/strong&gt;?
&lt;a href="#qu%c3%a9-tipos-de-lenguaje-es-html" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;HTML&lt;/strong&gt; es un lenguaje de marcas, lo que significa que utiliza una serie de etiquetas para definir la estructura del contenido. Estas etiquetas son comandos especiales encerrados entre corchetes angulares &lt;code&gt;&amp;lt; &amp;gt;&lt;/code&gt; que indican al navegador cómo debe mostrar el contenido.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/zfwyHn45/etiquetas.webp" alt="Ejemplo de etiquetas HTML" title="Ejemplo de etiquetas HTML"
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Existen varios tipos de etiquetas &lt;strong&gt;HTML&lt;/strong&gt;, pero algunas de las más comunes incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Etiquetas de encabezado: Estas etiquetas definen los niveles de encabezado del contenido, como títulos y subtítulos, lo que ayuda a organizar jerárquicamente la información en una página.
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;HTML&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-HTML" data-lang="HTML"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Encabezado 1&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Encabezado 2&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Encabezado 3&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h4&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Encabezado 4&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h4&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h5&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Encabezado 5&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h5&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h6&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Encabezado 6&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h6&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Etiquetas de párrafo: Permiten definir bloques de texto y párrafos en una página web.
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;HTML&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-HTML" data-lang="HTML"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Este es un párrafo.&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Etiquetas de imagen: Se utilizan para insertar imágenes en una página y permiten que el contenido sea más atractivo y visualmente agradable.
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;HTML&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-HTML" data-lang="HTML"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;imagen.jpg&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Texto alternativo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Etiquetas de enlace: Permiten crear hipervínculos que conectan diferentes páginas web entre sí, permitiendo la navegación a través de la web.
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;HTML&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-HTML" data-lang="HTML"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://patojad.com.ar&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;PatoJAD&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Etiquetas de lista: Permiten crear listas ordenadas o no ordenadas, lo que facilita la presentación de información de manera organizada.
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;HTML&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-HTML" data-lang="HTML"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Elemento 1 Desordenado&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Elemento 2 Desordenado&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Elemento 3 Desordenado&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ol&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Elemento 1 Ordenado&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Elemento 2 Ordenado&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Elemento 3 Ordenado&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ol&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En conclusión, &lt;strong&gt;HTML&lt;/strong&gt; es el lenguaje de marcas fundamental para la construcción de páginas web. Permite a los desarrolladores estructurar el contenido y los elementos multimedia, creando una experiencia coherente y atractiva para los usuarios. Si bien &lt;strong&gt;HTML&lt;/strong&gt; es solo uno de los muchos lenguajes utilizados en el desarrollo web, es esencial para cualquier persona interesada en comprender cómo funciona la base de la web.&lt;/p&gt;
&lt;p&gt;Esperamos que esta introducción a &lt;strong&gt;HTML&lt;/strong&gt; haya sido útil para comprender su importancia y funcionalidad en el vasto mundo de Internet. Con el tiempo, aprender más sobre &lt;strong&gt;HTML&lt;/strong&gt; y otros lenguajes web te permitirá crear tus propias páginas web y sumergirte en el emocionante mundo del desarrollo web. ¡A seguir aprendiendo y construyendo!&lt;/p&gt;</description></item><item><title>Cómo Iniciar en el Mundo de la Programación</title><link>https://patojad.com.ar/post/2023/08/c%C3%B3mo-iniciar-en-el-mundo-de-la-programaci%C3%B3n/</link><pubDate>Wed, 02 Aug 2023 17:06:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/08/c%C3%B3mo-iniciar-en-el-mundo-de-la-programaci%C3%B3n/</guid><description>&lt;p&gt;El mundo de la programación es emocionante y lleno de oportunidades para aquellos que deseen sumergirse en él. Sin embargo, para los principiantes, puede parecer abrumador y confuso. En este artículo, exploraremos cómo iniciar en el mundo de la programación y responderemos a dos preguntas fundamentales: ¿Qué estudiar primero para aprender a programar? y ¿Qué se necesita para programar?&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-estudiar-primero-para-aprender-a-programar"&gt;
¿Qué estudiar primero para aprender a programar?
&lt;a href="#qu%c3%a9-estudiar-primero-para-aprender-a-programar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Cuando decides aventurarte en el campo de la programación, puede ser difícil determinar por dónde empezar. Aquí hay algunas opciones populares y recomendadas para dar tus primeros pasos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fundamentos de Programación:&lt;/strong&gt; Comienza con los conceptos básicos, independientemente del lenguaje que elijas. Aprende sobre variables, tipos de datos, estructuras de control (como bucles y condicionales) y funciones. Este conocimiento es esencial para cualquier lenguaje de programación.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2023/08/descubriendo-el-mundo-de-css/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
CSS
&lt;/a&gt;:&lt;/strong&gt; Si te interesa el desarrollo web, aprender &lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt; y &lt;a href="https://patojad.com.ar/post/2023/08/descubriendo-el-mundo-de-css/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
CSS
&lt;/a&gt; te permitirá crear sitios web estáticos. &lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt; proporciona la estructura y el contenido, mientras que &lt;a href="https://patojad.com.ar/post/2023/08/descubriendo-el-mundo-de-css/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
CSS
&lt;/a&gt; se encarga del diseño y la apariencia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JavaScript:&lt;/strong&gt; Como uno de los lenguajes de programación más populares, JavaScript te permite agregar interactividad y funcionalidad dinámica a tus sitios web. Conocer JavaScript te abrirá muchas puertas en el desarrollo web. Y es pie para utilizar &lt;a href="https://patojad.com.ar/post/2023/03/que-es-typescript-en-que-se-parece-a-javascript/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
TypeScript
&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python:&lt;/strong&gt; Conocido por su legibilidad y simplicidad, Python es un lenguaje versátil utilizado en desarrollo web, análisis de datos, inteligencia artificial y más. Es una excelente opción para principiantes debido a su sintaxis clara y amigable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Java o C#:&lt;/strong&gt; Si te interesa la programación orientada a objetos y aplicaciones de escritorio, Java y C# son opciones sólidas. Son lenguajes ampliamente utilizados en la industria y te proporcionarán una base sólida para desarrollar aplicaciones complejas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-lo-que-necesitas-para-programar"&gt;
¿Qué es lo que necesitas para programar?
&lt;a href="#qu%c3%a9-es-lo-que-necesitas-para-programar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Afortunadamente, para comenzar en el mundo de la programación, no necesitas equipos costosos ni recursos complicados. Lo esencial incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Computadora Personal:&lt;/strong&gt; Casi cualquier computadora personal moderna será suficiente para comenzar a programar. Ya sea una PC o una Mac, siempre y cuando puedas instalar y ejecutar el software necesario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editor de Código:&lt;/strong&gt; Necesitarás un editor de código para escribir y editar tu código fuente. Hay muchas opciones disponibles, desde editores simples como &lt;strong&gt;Visual Studio Code&lt;/strong&gt; hasta IDEs más completos como &lt;strong&gt;PyCharm&lt;/strong&gt; o &lt;strong&gt;Eclipse&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conexión a Internet:&lt;/strong&gt; Una conexión a Internet te permitirá acceder a recursos en línea, tutoriales, documentación y comunidades de programación.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Determinación y Paciencia:&lt;/strong&gt; Aprender a programar puede ser desafiante, pero con determinación y paciencia, podrás superar los obstáculos y alcanzar tus metas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recursos de Aprendizaje:&lt;/strong&gt; Existen una amplia variedad de recursos en línea, como tutoriales, cursos, foros y comunidades, que te ayudarán a aprender y resolver problemas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Iniciar en el mundo de la programación puede parecer intimidante al principio, pero con la elección adecuada de lo que estudiar primero y los recursos necesarios a tu disposición, estarás en el camino correcto para convertirte en un desarrollador exitoso. Recuerda que la práctica constante y el aprendizaje continuo son clave para mejorar tus habilidades de programación. ¡No tengas miedo de experimentar y construir proyectos propios! Con tiempo y dedicación, estarás listo para enfrentar desafíos más complejos y emocionantes en el mundo de la programación. ¡Buena suerte en tu viaje hacia convertirte en un programador!&lt;/p&gt;</description></item><item><title>La Historia de GNU/Linux</title><link>https://patojad.com.ar/post/2023/07/la-historia-de-gnu-linux/</link><pubDate>Mon, 31 Jul 2023 14:06:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/07/la-historia-de-gnu-linux/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="introducción"&gt;
Introducción
&lt;a href="#introducci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;GNU/Linux, un sistema operativo de código abierto ampliamente utilizado en la actualidad, tiene una historia fascinante detrás de su creación. En este artículo, exploraremos cómo surgió este revolucionario sistema, los protagonistas detrás de su desarrollo y qué lo hace único en el mundo de la tecnología. Desde sus modestos comienzos hasta convertirse en una poderosa fuerza en el mundo informático, la historia de GNU/Linux destaca el poder de la colaboración y el software libre.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-linux-y-su-historia"&gt;
¿Qué es Linux y su historia?
&lt;a href="#qu%c3%a9-es-linux-y-su-historia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/T1pFkGj2/historialinux1.webp" alt="Historia de GNU/Linux" title="Historia de GNU/Linux"
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Linux es un sistema operativo de código abierto basado en el núcleo desarrollado por &lt;strong&gt;Linus Torvalds&lt;/strong&gt; en 1991. Sin embargo, para entender completamente su historia, es esencial retroceder unos años antes. En la década de 1980, &lt;strong&gt;Richard Stallman&lt;/strong&gt; inició el Proyecto &lt;strong&gt;GNU&lt;/strong&gt; con el objetivo de crear un sistema operativo completo y libre, donde los usuarios pudieran acceder y modificar el software a voluntad.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cuándo-se-creó-el-sistema-operativo-gnulinux"&gt;
¿Cuándo se creó el sistema operativo GNU/Linux?
&lt;a href="#cu%c3%a1ndo-se-cre%c3%b3-el-sistema-operativo-gnulinux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El hito clave en la historia de GNU/Linux ocurrió en 1991, cuando &lt;strong&gt;Linus Torvalds&lt;/strong&gt;, un estudiante finlandés, desarrolló un núcleo (kernel) compatible con el sistema operativo GNU. Este núcleo fue denominado &amp;ldquo;Linux&amp;rdquo;, una fusión de su nombre y &lt;em&gt;&amp;ldquo;Unix&amp;rdquo;&lt;/em&gt;. La combinación del núcleo Linux con los componentes del Proyecto GNU resultó en un sistema operativo completo, conocido como GNU/Linux.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="quién-desarrolló-gnulinux"&gt;
¿Quién desarrolló GNU/Linux?
&lt;a href="#qui%c3%a9n-desarroll%c3%b3-gnulinux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/1X2T2TMG/historialinux2.webp" alt="Linus Torvalds" title="Linus Torvalds"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El sistema operativo GNU/Linux fue el resultado de la colaboración de muchos desarrolladores apasionados y dedicados. &lt;strong&gt;Linus Torvalds&lt;/strong&gt; lideró el desarrollo del núcleo Linux, mientras que &lt;strong&gt;Richard Stallman&lt;/strong&gt; y la &lt;strong&gt;Free Software Foundation (FSF)&lt;/strong&gt; jugaron un papel fundamental proporcionando las herramientas y componentes del Proyecto GNU.&lt;/p&gt;
&lt;p&gt;El enfoque en el software libre y la filosofía de compartir conocimiento sentó las bases para una comunidad activa de desarrolladores en todo el mundo. Contribuyeron con código, solucionaron problemas y compartieron sus conocimientos para mejorar el sistema continuamente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-un-sistema-gnulinux"&gt;
¿Qué es un sistema GNU/Linux?
&lt;a href="#qu%c3%a9-es-un-sistema-gnulinux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Un sistema GNU/Linux es un conjunto completo de software que incluye el núcleo Linux junto con las aplicaciones y herramientas del Proyecto GNU. A diferencia de los sistemas operativos propietarios, GNU/Linux ofrece libertad a los usuarios para usar, estudiar, modificar y compartir el software de acuerdo con las licencias de software libre. Esta flexibilidad ha dado lugar a una amplia gama de distribuciones de GNU/Linux, cada una adaptada para diversas necesidades y preferencias de los usuarios.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La historia de GNU/Linux es una prueba viviente de la importancia del software libre y la colaboración en la industria tecnológica. La visión de Richard Stallman y el ingenio de Linus Torvalds dieron lugar a un sistema operativo que ha transformado la forma en que interactuamos con la tecnología. Desde sus humildes inicios hasta la poderosa comunidad de desarrolladores de hoy en día, GNU/Linux sigue siendo un ejemplo inspirador de cómo el trabajo en equipo y la pasión por el conocimiento pueden cambiar el mundo de la tecnología para mejor.&lt;/p&gt;</description></item><item><title>App Store de aaPanel</title><link>https://patojad.com.ar/post/2023/07/app-store-de-aapanel/</link><pubDate>Thu, 27 Jul 2023 11:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/07/app-store-de-aapanel/</guid><description>&lt;p&gt;Ya vimos como realizar la instalacion de aaPanel y como abrir los puertos necesarios. Tambien realizamos el primer ingreso y la instalacion de LAMP o LNMP segun deseemos. Ahora veremos el appstore de aaPanel. Y realiamos instalaciones desde diferentes areas de modulos o complemento.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-aapanel"&gt;
¿Qué es aaPanel?
&lt;a href="#qu%c3%a9-es-aapanel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;aaPanel&lt;/strong&gt; es un panel de control de hosting web gratuito y de código abierto que facilita la administración de servidores. Proporciona una interfaz gráfica intuitiva y amigable que permite a los usuarios gestionar servicios como &lt;strong&gt;Apache&lt;/strong&gt;, &lt;strong&gt;Nginx&lt;/strong&gt;, &lt;strong&gt;PHP&lt;/strong&gt;, bases de datos y más, sin necesidad de conocimientos técnicos avanzados.&lt;/p&gt;
&lt;p&gt;En el video podemos apreciar y recorrer un poco mas la seccion de appstore de aapanel. En esta seccion podemos encontrar complementos para nuestro panel, como tambien para nuestros sitios web.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="imagenes"&gt;
Imagenes
&lt;a href="#imagenes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/nrhLsCmh/aapanelstore1.webp" alt="aapanel" title="aapanel"
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/5yK28b5q/aapanelstore2.webp" alt="aapanel" title="aapanel"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/76V6YgfR/aapanelstore3.webp" alt="aapanel" title="aapanel"
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href="https://www.aapanel.com/new/feature.html#shop" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Fuente
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Primer ingreso a aaPanel</title><link>https://patojad.com.ar/post/2023/07/primer-ingreso-a-aapanel/</link><pubDate>Thu, 13 Jul 2023 10:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/07/primer-ingreso-a-aapanel/</guid><description>&lt;p&gt;Ya vimos como realizar la instalacion de aaPanel y como abrir los puertos necesarios, ahora veremos como ingresar por primera vez y realizar la instalacion de LAMP o LNMP segun deseemos. Con esto nuestro panel estara listo para ser usado.&lt;/p&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Recuerda que tanto la url del panel como los datos de ingreso son los que arroja la terminal durante la instalacion, estos podras modificarlos despues del primer ingreso para mejorar la seguridad de tu panel&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href="https://www.aapanel.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Fuente
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Abrir puertos aaPanel</title><link>https://patojad.com.ar/post/2023/07/abrir-puertos-aapanel/</link><pubDate>Fri, 07 Jul 2023 11:54:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/07/abrir-puertos-aapanel/</guid><description>&lt;p&gt;Vamos a ver que puertos tenemos que tener habilitados para que aapanel funcione correctamente. Y como abrirlos en nuestro servidor utilizando &lt;code&gt;ufw&lt;/code&gt;. Recuerda que si instalaste tal como lo vimos en el video anterior de &lt;a href="https://patojad.com.ar/post/2023/06/instalar-aapanel/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
instalar aapanel
&lt;/a&gt; y no estas pudiendo ingresar a la url que dio el panel entonces es porque alguno de estos puertos no se encuentra abierto.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-aapanel"&gt;
¿Qué es aaPanel?
&lt;a href="#qu%c3%a9-es-aapanel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;aaPanel&lt;/strong&gt; es un panel de control de hosting web gratuito y de código abierto que facilita la administración de servidores. Proporciona una interfaz gráfica intuitiva y amigable que permite a los usuarios gestionar servicios como &lt;strong&gt;Apache&lt;/strong&gt;, &lt;strong&gt;Nginx&lt;/strong&gt;, &lt;strong&gt;PHP&lt;/strong&gt;, bases de datos y más, sin necesidad de conocimientos técnicos avanzados.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="puertos"&gt;
Puertos
&lt;a href="#puertos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Los puertos que tenemos que abrir son los siguientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;20&lt;/strong&gt; - FTP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;21&lt;/strong&gt; - FTP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;80&lt;/strong&gt; - HTTP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;443&lt;/strong&gt; - HTTPS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;888&lt;/strong&gt; - aaPanel&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3306&lt;/strong&gt; - MySQL // Si necesitas acceder desde fuera del servidor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;8888&lt;/strong&gt; - phpMyAdmin&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;7800&lt;/strong&gt; - aaPanel&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comandos"&gt;
Comandos
&lt;a href="#comandos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A continuacion dejo los comandos utilizados en el video.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ufw allow &lt;span class="m"&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ufw allow &lt;span class="m"&gt;21&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ufw allow &lt;span class="m"&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ufw allow &lt;span class="m"&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ufw allow &lt;span class="m"&gt;888&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ufw allow &lt;span class="m"&gt;3306&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#ufw allow 8888 // En mi caso no&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ufw allow &lt;span class="m"&gt;7800&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Fuente: &lt;a href="https://www.aapanel.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.aapanel.com/
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Ejecutar apps NW.js en Wayland</title><link>https://patojad.com.ar/post/2023/06/ejecutar-apps-nw.js-en-wayland/</link><pubDate>Thu, 29 Jun 2023 16:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/06/ejecutar-apps-nw.js-en-wayland/</guid><description>&lt;p&gt;NW.js es un framework que nos permite crear aplicaciones de escritorio con tecnologías web, es decir, podemos crear aplicaciones con &lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;, &lt;a href="https://patojad.com.ar/post/2023/08/descubriendo-el-mundo-de-css/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
CSS
&lt;/a&gt; y JavaScript, y ejecutarlas en el escritorio de cualquier sistema operativo. Y si bien es un framework muy interesante, tiene un problema, no funciona en Wayland. O al menos no antes de la version 0.50.0. Sin embargo hay una forma de hacerlo funcionar en Wayland, y es modificando el package.json de la app siempre y cuando use la version 0.50.0 o superior.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="modificando-el-packagejson-como-dev"&gt;
Modificando el package.json como dev
&lt;a href="#modificando-el-packagejson-como-dev" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Dentro de nuestro package.json debemos agregar la siguiente linea:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;json&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;chromium-flags&amp;#34;&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;--enable-features=UseOzonePlatform --ozone-platform=wayland&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;De esta forma, cuando ejecutemos nuestra app, lo haremos con Wayland.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="modificando-el-packagejson-como-usuario"&gt;
Modificando el package.json como usuario
&lt;a href="#modificando-el-packagejson-como-usuario" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Supongamos que no somos los desarrolladores de la aplicacion y no podemos modificar el package.json, pero queremos ejecutar la app en Wayland. Para esto podemos modificar el &lt;code&gt;package.json&lt;/code&gt; de la siguiente forma agregando la linea mencionada anteriormente, y en el caso de existir agregarle ambos valores a la linea &lt;code&gt;chromium-flags&lt;/code&gt;&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="caso-practico-kera-desktop"&gt;
Caso practico Kera Desktop
&lt;a href="#caso-practico-kera-desktop" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Hace no mucho se dio a conocer este escritorio que si bien no es funcional aun porque no permite ejecutar aplicaciones, es un proyecto muy interesante. Y si bien no es funcional, ya podemos comenzar a probarlo en conjunto con nuestro escritorio, claro siempre y cuando estemos en x11 (o en wayland con el soporte para apps x11)&lt;/p&gt;
&lt;p&gt;Sin embargo si estamos en wayland y queremos tener una mejor experiencia con Kera Desktop, podemos modificar el package.json de la siguiente forma:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Abrimos la carpeta de la app, en mi caso &lt;code&gt;~/Kera-Desktop-Linux-X64&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abrimos la carpeta &lt;code&gt;package.nw&lt;/code&gt; y dentro de ella el archivo &lt;code&gt;package.json&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Veremos un archivo como este:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;json&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;kera-desktop&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;main&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;main.js&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;chromium-args&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;--enable-experimental-web-platform-features --enable-features=OverlayScrollbar&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;cldr-data-urls-filter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;(cldr-core|cldr-numbers-modern|cldr-dates-modern|cldr-localenames-modern|cldr-misc-modern|cldr-units-modern)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;window&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Kera Desktop&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;KeraDesktop&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;icon&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;logobig.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;webview&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;partitions&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;trusted&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;accessible_resources&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;normal&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;accessible_resources&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;api/*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;incognito&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;accessible_resources&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;api/*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;devDependencies&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;eslint&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;^8.41.0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;eslint-config-google&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;^0.14.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Agregamos los valores mencionados anteriormente a la linea &lt;code&gt;chromium-flags&lt;/code&gt; y quedara de la siguiente forma:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;json&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;kera-desktop&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;main&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;main.js&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;chromium-args&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;--enable-experimental-web-platform-features --enable-features=OverlayScrollbar --enable-features=UseOzonePlatform --ozone-platform=wayland&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;cldr-data-urls-filter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;(cldr-core|cldr-numbers-modern|cldr-dates-modern|cldr-localenames-modern|cldr-misc-modern|cldr-units-modern)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;window&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Kera Desktop&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;KeraDesktop&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;icon&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;logobig.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;webview&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;partitions&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;trusted&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;accessible_resources&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;normal&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;accessible_resources&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;api/*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;incognito&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;accessible_resources&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;api/*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;devDependencies&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;eslint&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;^8.41.0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;eslint-config-google&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;^0.14.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;De esta forma a la hora de volver a abrir la app en nuestro entorno de wayland podemos hacerlo con una ventana nativa y sin ningun problema.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Fuente: &lt;a href="https://nwjs.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://nwjs.readthedocs.io/en/latest/
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Como cambiar DNS de Windows 10</title><link>https://patojad.com.ar/post/2023/06/como-cambiar-dns-de-windows-10/</link><pubDate>Tue, 27 Jun 2023 10:06:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/06/como-cambiar-dns-de-windows-10/</guid><description>&lt;p&gt;Cambiar los DNS de nuestro equipo es algo que deberiamos hacer siempre, ya que los DNS que nos provee nuestro ISP no son los mas rapidos y seguros. Por eso hoy vamos a ver como cambiar los DNS en Windows 10 y vamos a setear los de Cloudflare.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-dns"&gt;
¿Qué es DNS?
&lt;a href="#qu%c3%a9-es-dns" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El Sistema de nombres de dominio (DNS) es la guía telefónica de Internet. Mientras que las personas acceden a la información en línea a través de nombres de dominio como example.com, los ordenadores lo hacen utilizando direcciones del Protocolo de Internet (IP), cadenas únicas de caracteres alfanuméricos que se asignan a cada propiedad de Internet. El DNS traduce los nombres de dominio a direcciones IP para que los usuarios puedan acceder fácilmente a un sitio web sin tener que conocer su dirección IP.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.cloudflare.com/img/learning/dns/what-is-1.1.1.1/dns-lookup.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="qué-es-un-solucionador-de-dns"&gt;
¿Qué es un solucionador de DNS?
&lt;a href="#qu%c3%a9-es-un-solucionador-de-dns" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Un solucionador de DNS es un tipo de servidor que gestiona la traducción &amp;ldquo;nombre a dirección&amp;rdquo;, en la que una dirección IP se corresponde con un nombre de dominio y se envía de vuelta al ordenador que la solicitó. Los solucionadores de DNS también se conocen como solucionadores recursivos.&lt;/p&gt;
&lt;p&gt;Los equipos están configurados para hablar con solucionadores de DNS específicos, que se identifican por dirección IP. Generalmente, la configuración la gestiona el Proveedor de acceso a Internet (ISP) del usuario en conexiones desde el hogar o inalámbricas, y un administrador de red en las conexiones desde la oficina. Los usuarios también pueden cambiar manualmente el solucionador de DNS con el que pueden comunicarse sus ordenadores.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="dns-de-cloudflare"&gt;
DNS de cloudflare
&lt;a href="#dns-de-cloudflare" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Cloudflare tiene dos DNS publicos que son los mas rapidos y seguros del mundo hasta el momento&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="qué-hace-que-1111-sea-más-seguro-que-otros-servicios-de-dns-públicos"&gt;
¿Qué hace que 1.1.1.1 sea más seguro que otros servicios de DNS públicos?
&lt;a href="#qu%c3%a9-hace-que-1111-sea-m%c3%a1s-seguro-que-otros-servicios-de-dns-p%c3%bablicos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Algunos servicios de DNS son compatibles con DNSSEC. Aunque se trata de una buena práctica de seguridad, no protege las consultas de los usuarios de las propias empresas de DNS. Muchas de estas empresas recopilan datos de sus clientes de DNS para utilizarlos con fines comerciales, como la venta a anunciantes.&lt;/p&gt;
&lt;p&gt;En cambio, &lt;code&gt;1.1.1.1&lt;/code&gt; no hace minería de datos de los usuarios. Los registros se guardan durante 24 horas con el fin de eliminar errores y a continuación se purgan.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;1.1.1.1&lt;/code&gt; también ofrece funciones de seguridad que no están disponibles en muchos otros servicios públicos de DNS, como la minimización del nombre de consulta. La minimización del nombre de consulta mejora la privacidad al incluir en cada consulta solo el mínimo de información necesaria para ese paso del proceso de resolución.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="qué-convierte-a-1111-en-el-servicio-de-dns-recursivo-más-rápido"&gt;
¿Qué convierte a 1.1.1.1 en el servicio de DNS recursivo más rápido?
&lt;a href="#qu%c3%a9-convierte-a-1111-en-el-servicio-de-dns-recursivo-m%c3%a1s-r%c3%a1pido" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La potencia de la red de Cloudflare da a &lt;code&gt;1.1.1.1&lt;/code&gt; una ventaja natural en lo referente a entregar consultas de DNS rápidas. Ya que está integrado en la red de Cloudflare, que abarca 300 ciudades del mundo, los usuarios de cualquier parte del mundo obtienen una respuesta rápida de &lt;code&gt;1.1.1.1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Además, los centros de datos de la red tienen acceso a los millones de propiedades de Internet de la plataforma de Cloudflare, lo que hace que las consultas de esos dominios sean extremadamente rápidas. En general, el supervisor independiente de DNS DNSPerf clasifica &lt;code&gt;1.1.1.1&lt;/code&gt; como el servicio de DNS más rápido del mundo:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.cloudflare.com/img/learning/dns/what-is-1.1.1.1/query-speed.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="pasos-a-seguir"&gt;
Pasos a seguir
&lt;a href="#pasos-a-seguir" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Abrimos el menu de inicio y vamos a &lt;code&gt;Configuracion&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Luego vamos a &lt;code&gt;Red e Internet&lt;/code&gt; y seleccionamos &lt;code&gt;Cambiar opciones del adaptador&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Seleccionamos la red que estamos usando y hacemos click derecho y seleccionamos &lt;code&gt;Propiedades&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Seleccionamos &lt;code&gt;Protocolo de Internet version 4 (TCP/IPv4)&lt;/code&gt; y hacemos click en &lt;code&gt;Propiedades&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Seleccionamos &lt;code&gt;Usar las siguientes direcciones de servidor DNS&lt;/code&gt; y en &lt;code&gt;Servidor DNS preferido&lt;/code&gt; ponemos:
&lt;ul&gt;
&lt;li&gt;Para usar el generico de Cloudflare:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;batch&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-batch" data-lang="batch"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1.1.1.1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1.0.0.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Para usar el Bloqueo de Maleware de Cloudflare (Para Familias):
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;batch&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-batch" data-lang="batch"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1.1.1.2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1.0.0.2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Para usar el Bloqueo de Maleware y contenidos de Adultos de Cloudflare (Para Familias):
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;batch&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-batch" data-lang="batch"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1.1.1.3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1.0.0.3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hacemos click en &lt;code&gt;Aceptar&lt;/code&gt; y listo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="sumando-ipv6"&gt;
Sumando IPv6
&lt;a href="#sumando-ipv6" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Seleccionamos &lt;code&gt;Protocolo de Internet version 6 (TCP/IPv6)&lt;/code&gt; y hacemos click en &lt;code&gt;Propiedades&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Seleccionamos &lt;code&gt;Usar las siguientes direcciones de servidor DNS&lt;/code&gt; y en &lt;code&gt;Servidor DNS preferido&lt;/code&gt; ponemos:
&lt;ul&gt;
&lt;li&gt;Para usar el generico de Cloudflare:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;batch&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-batch" data-lang="batch"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2606:4700:4700::1111
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2606:4700:4700::1001&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Para usar el Bloqueo de Maleware de Cloudflare (Para Familias):
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;batch&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-batch" data-lang="batch"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2606:4700:4700::1112
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2606:4700:4700::1002&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Para usar el Bloqueo de Maleware y contenidos de Adultos de Cloudflare (Para Familias):
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;batch&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-batch" data-lang="batch"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2606:4700:4700::1113
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2606:4700:4700::1003&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hacemos click en &lt;code&gt;Aceptar&lt;/code&gt; y listo&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Fuente: &lt;a href="https://developers.cloudflare.com/1.1.1.1/setup/windows/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://developers.cloudflare.com/1.1.1.1/setup/windows/
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Instalar aaPanel</title><link>https://patojad.com.ar/post/2023/06/instalar-aapanel/</link><pubDate>Wed, 21 Jun 2023 11:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/06/instalar-aapanel/</guid><description>&lt;p&gt;aaPanel es un software que mejora la eficiencia de la gestión de servidores admite más de 100 funciones, como LEMP/LNMP/monitor/FTP/base de datos con un solo clic Después de más de 80 iteraciones, es completamente funcional y seguro, y ha sido aprobado e instalado por millones de usuarios en todo el mundo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="caracteristicas"&gt;
Caracteristicas
&lt;a href="#caracteristicas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Website Manager:&lt;/strong&gt; Cree un sitio web de administración a través del panel y complete varias configuraciones de manera fácil y sencilla.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Database Manager:&lt;/strong&gt; Un clic para crear, configurar, respaldar, restaurar la base de datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;File Manager:&lt;/strong&gt; Un administrador de archivos conveniente y eficiente que admite carga, descarga, empaquetado, descompresión y edición y visualización de archivos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Store:&lt;/strong&gt; El software del servidor utilizado para la instalación se puede administrar fácilmente a través de la interfaz web.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://demo.aapanel.com/fdgi87jbn" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Demo
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="planes"&gt;
Planes
&lt;a href="#planes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="basico"&gt;
Basico
&lt;a href="#basico" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Precio:&lt;/strong&gt; Gratis&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitios:&lt;/strong&gt; Ilimitados&lt;/li&gt;
&lt;li&gt;Número &lt;strong&gt;ilimitado&lt;/strong&gt; de dominios&lt;/li&gt;
&lt;li&gt;Certificado SSL ilimitado (Let&amp;rsquo;s Encrypt)&lt;/li&gt;
&lt;li&gt;Protección de seguridad básica&lt;/li&gt;
&lt;li&gt;Administrador de archivos con todas las funciones&lt;/li&gt;
&lt;li&gt;Editor de archivos en línea&lt;/li&gt;
&lt;li&gt;Use todos los complementos gratuitos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="profesional"&gt;
Profesional
&lt;a href="#profesional" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Precio:&lt;/strong&gt; 14.5 USD/mes - 118.32 USD/año&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitios:&lt;/strong&gt; Ilimitados&lt;/li&gt;
&lt;li&gt;Número &lt;strong&gt;ilimitado&lt;/strong&gt; de dominios&lt;/li&gt;
&lt;li&gt;Certificado SSL ilimitado (Let&amp;rsquo;s Encrypt)&lt;/li&gt;
&lt;li&gt;Protección de seguridad básica&lt;/li&gt;
&lt;li&gt;Administrador de archivos con todas las funciones&lt;/li&gt;
&lt;li&gt;Editor de archivos en línea&lt;/li&gt;
&lt;li&gt;Use todos los complementos gratuitos&lt;/li&gt;
&lt;li&gt;Use todos los complementos profesionales
&lt;ul&gt;
&lt;li&gt;Nginx/Apache WAF&lt;/li&gt;
&lt;li&gt;Aplicación de teléfono móvil&lt;/li&gt;
&lt;li&gt;Sistema de endurecimiento&lt;/li&gt;
&lt;li&gt;Estadísticas del sitio web&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href="https://www.aapanel.com/new/pricing.html" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Mas información
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalacion"&gt;
Instalacion
&lt;a href="#instalacion" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="comandos-utilizados"&gt;
Comandos Utilizados
&lt;a href="#comandos-utilizados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Para centos:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum install -y wget &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; bash install.sh aapanel&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Para deepin/ubuntu:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo bash install.sh aapanel&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Para debian:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; bash install.sh aapanel&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-yellow-600/75 text-yellow-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-warning fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Asegúrese de que es un sistema operativo limpio, no hay otro entorno con Apache/Nginx/php/MySQL instalado (el entorno existente no se puede instalar)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Se recomienda utilizar los navegadores Chrome, Firefox y edge para acceder a la dirección de inicio de sesión del panel&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href="https://www.aapanel.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Fuente
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Llego Huayra 6</title><link>https://patojad.com.ar/post/2023/06/llego-huayra-6/</link><pubDate>Tue, 13 Jun 2023 11:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/06/llego-huayra-6/</guid><description>&lt;p&gt;Llego &lt;strong&gt;Huayra 6&lt;/strong&gt; con la grandeza de una escaloneta que trajo la copa del mundo y novedades que demuestran que esta distribución sigue siendo una de las mejores para el uso en escuelas.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Huayra GNU/Linux&lt;/strong&gt; es el primer sistema operativo libre desarrollado por el Estado Nacional (Argentino) que incluye una selección de software ideal para el trabajo en clase y mucho más. Con un escritorio liviano y ágil, realiza un uso óptimo de recursos y es seguro, sin necesidad de antivirus.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://huayra.educar.gob.ar/wp-content/uploads/2023/03/fondo_Sacaloneta.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="novedades"&gt;
Novedades
&lt;a href="#novedades" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;iframe src='https://www.youtube.com/embed/mGwgo61_Ai0?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;Huayra&lt;/strong&gt; llega con muchas actualizaciones y vamos a resaltar algunas de las más importantes que son sus apps que proponen un mejor dinamismo para las clases y nos permiten realizar actividades más lúdicas.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="huayra-motion"&gt;
Huayra Motion
&lt;a href="#huayra-motion" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Esta increíble app que nos permite realizar animaciones en stop motion llega con varias actualizaciones donde se destaca como gran novedad que ahora permite &lt;strong&gt;agregar cámaras nuevas desde USB&lt;/strong&gt; para todos los que quieran usar una cámara externa con esta app, o aquellos que tengan instalado &lt;strong&gt;Huayra&lt;/strong&gt; en una desktop&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="huayra-duino-lr"&gt;
Huayra duino LR
&lt;a href="#huayra-duino-lr" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Qdb69B6R/Screenshot-20230613-105914.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Agrega una nueva aplicación que permite programar en arduino directamente desde bloques. De esta forma podemos tener un primer acercamiento a arduino (pensado para los niños más pequeños pero no excluye a quienes queremos empezar sin conocimientos previos) que nos permita iniciar sin tener que aprender a programar de golpe.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="tienda-de-software-huayra"&gt;
Tienda de Software Huayra
&lt;a href="#tienda-de-software-huayra" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;También agrega una nueva tienda que permite realizar instalaciones de software mucho más fácil. y con una interfaz mucho más amigable&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="libro-vivo-de-hechizos"&gt;
Libro vivo de Hechizos
&lt;a href="#libro-vivo-de-hechizos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/fbvhbTXL/Screenshot-20230613-110153.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Un manual o libro de &lt;strong&gt;Huayra&lt;/strong&gt; que va desde el contexto filosófico y el marco teórico en el cual se construye &lt;strong&gt;Huayra&lt;/strong&gt;, hasta sus fines prácticos como instalación de la distribución, instalación de aplicaciones, actualización, etc…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="descarga"&gt;
Descarga
&lt;a href="#descarga" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Podemos descargar &lt;strong&gt;Huayra 6&lt;/strong&gt; desde su &lt;a href="https://huayra.educar.gob.ar/descargas/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
página oficial
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Debian 12, ¿Que cambios tiene?</title><link>https://patojad.com.ar/post/2023/06/debian-12-que-cambios-tiene/</link><pubDate>Sun, 11 Jun 2023 11:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/06/debian-12-que-cambios-tiene/</guid><description>&lt;p&gt;Si bien en internet está lleno de videos, mostrando instalaciones, o “recorriendo” &lt;strong&gt;Debian 12&lt;/strong&gt; la verdad es que no encontré ninguno que hablara de los cambios que esto tiene.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debian&lt;/strong&gt; es una distribución muy importante para todo el mundo Linux o GNU/Linux, incluso su manual, si bien está orientado a &lt;strong&gt;Debian&lt;/strong&gt; nos ayuda entender cosas muy importantes sobre linux de una forma muy didáctica y aplicable a cualquier distribución…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-anuncio"&gt;
El anuncio
&lt;a href="#el-anuncio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;No es difícil suscribirse a las listas de correo de &lt;strong&gt;Debian&lt;/strong&gt; y recibir todas las novedades, pero muchos de los &lt;em&gt;Linuxtubers&lt;/em&gt; de turno ni se toman el tiempo de leer antes de hacer una “Review”&lt;/p&gt;
&lt;p&gt;Por lo cual me gustaría brindar esta información para llenar esas reviews que claramente yo no voy a hacer…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;After 1 year, 9 months, and 28 days of development, the &lt;strong&gt;Debian&lt;/strong&gt; project
is proud to present its new stable version 12 (code name &amp;ldquo;bookworm&amp;rdquo;).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;o en español&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Después de 1 año, 9 meses y 28 días de desarrollo, el proyecto &lt;strong&gt;Debian&lt;/strong&gt; se enorgullece en presentar su nueva versión estable 12 (nombre en clave &amp;ldquo;bookworm&amp;rdquo;).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;ldquo;bookworm&amp;rdquo; será “soportado” durante los próximos 5 años gracias a la combinación trabajo del &lt;a href="https://security-team.debian.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
equipo de seguridad de Debian
&lt;/a&gt; y al &lt;a href="https://wiki.debian.org/LTS" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
equipo de Debian LTS
&lt;/a&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="resolución-non-free"&gt;
Resolución non-free
&lt;a href="#resoluci%c3%b3n-non-free" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;De acuerdo con la resolución de paquetes no libres (del 2022 que generó polémica para aquellos que siguen un ideal no financiado más que la usabilidad) se decidió separar el &lt;a href="https://www.debian.org/vote/2022/vote_003" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
firmware no libre
&lt;/a&gt; del resto de paquetes no libres, con el fin de poder elegir el uso del firmware y no de librerías o software non free (Lo que parece un punto medio entre la lógica de tener una distro usable en cualquier equipo y el intento de usar software libre todo lo que sea posible)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="escritorios"&gt;
Escritorios
&lt;a href="#escritorios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Llega con algunas actualizaciones en los escritorios más populares, podemos resaltar los siguientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gnome 43,&lt;/li&gt;
&lt;li&gt;KDE Plasma 5.27,&lt;/li&gt;
&lt;li&gt;LXDE 11,&lt;/li&gt;
&lt;li&gt;LXQt 1.2.0,&lt;/li&gt;
&lt;li&gt;MATE 1.26,&lt;/li&gt;
&lt;li&gt;Xfce 4.18&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cambios-en-los-respositorios"&gt;
Cambios en los respositorios
&lt;a href="#cambios-en-los-respositorios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Esta versión contiene más de 11.089 paquetes nuevos para un recuento total de 64.419 paquetes, mientras que más de 6.296 paquetes han sido retirados como &amp;ldquo;obsoleto&amp;rdquo;. En esta versión se actualizaron 43.254 paquetes. El general el uso del disco para &amp;ldquo;bookworm&amp;rdquo; es de 365.016.420 kB (365 GB) y está compuesto por 1.341.564.204 líneas de código.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="relevante-para-servidores"&gt;
Relevante para servidores
&lt;a href="#relevante-para-servidores" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Debian 12 &amp;ldquo;bookworm&amp;rdquo; incluye numerosos paquetes de software actualizados (más de 67% de todos los paquetes de la versión anterior), tales como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apache 2.4.57&lt;/li&gt;
&lt;li&gt;BIND DNS Server 9.18&lt;/li&gt;
&lt;li&gt;Cryptsetup 2.6&lt;/li&gt;
&lt;li&gt;Dovecot MTA 2.3.19&lt;/li&gt;
&lt;li&gt;Emacs 28.2&lt;/li&gt;
&lt;li&gt;Exim (default email server) 4.96&lt;/li&gt;
&lt;li&gt;GNU Compiler Collection 12.2&lt;/li&gt;
&lt;li&gt;GnuPG 2.2.40&lt;/li&gt;
&lt;li&gt;The GNU C Library 2.36&lt;/li&gt;
&lt;li&gt;lighthttpd 1.4.69&lt;/li&gt;
&lt;li&gt;Linux kernel 6.1 series&lt;/li&gt;
&lt;li&gt;LLVM/Clang toolchain 13.0.1, 14.0 (default), and 15.0.6&lt;/li&gt;
&lt;li&gt;MariaDB 10.11&lt;/li&gt;
&lt;li&gt;Nginx 1.22&lt;/li&gt;
&lt;li&gt;OpenJDK 17&lt;/li&gt;
&lt;li&gt;OpenLDAP 2.5.13&lt;/li&gt;
&lt;li&gt;OpenSSH 9.2p1&lt;/li&gt;
&lt;li&gt;Perl 5.36&lt;/li&gt;
&lt;li&gt;PHP 8.2&lt;/li&gt;
&lt;li&gt;Postfix MTA 3.7&lt;/li&gt;
&lt;li&gt;PostgreSQL 15&lt;/li&gt;
&lt;li&gt;Python 3, 3.11.2&lt;/li&gt;
&lt;li&gt;Rustc 1.63&lt;/li&gt;
&lt;li&gt;Samba 4.17&lt;/li&gt;
&lt;li&gt;systemd 252&lt;/li&gt;
&lt;li&gt;Vim 9.0&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Fuente: &lt;a href="mailto:debian-announce@lists.debian.org" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-envelope"&gt;&lt;/i&gt;&amp;nbsp;
debian-announce@lists.debian.org
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Como instalar MongoDB en Windows</title><link>https://patojad.com.ar/post/2023/06/como-instalar-mongodb-en-windows/</link><pubDate>Mon, 05 Jun 2023 10:45:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/06/como-instalar-mongodb-en-windows/</guid><description>&lt;p&gt;Vamos a ver como realizar la instalacion de &lt;strong&gt;MongoDB&lt;/strong&gt; en Windows (ya sea 10 o 11) con winget desde nuestra terminal.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comandos-utilizados"&gt;
Comandos Utilizados
&lt;a href="#comandos-utilizados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Este es el comendo que utilizamos para realizar la instalacion de MongoDB en Windows 10 o 11 utilizando winget:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winget install -e --id MongoDB.Server&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ejecute-mongodb-community-edition-desde-la-terminal"&gt;
Ejecute MongoDB Community Edition desde la terminal
&lt;a href="#ejecute-mongodb-community-edition-desde-la-terminal" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para ejecutar MongoDB (o mongo) desde la terminal de Windows, debemos ejecutar el siguiente comando para crear la carpeta donde se guardaran los datos de la base de datos:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; C:&lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;md &lt;span class="s2"&gt;&amp;#34;\data\db&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Luego ejecutamos el siguiente comando para ejecutar mongo:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;C:\Program Files\MongoDB\Server\6.0\bin\mongod.exe&amp;#34;&lt;/span&gt; --dbpath&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;c:\data\db&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;En este caso usamos c:\data\db pero pueden elegir el directorio que quieran&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="agregar-binarios-de-mongodb-a-la-path-del-sistema"&gt;
Agregar binarios de MongoDB a la PATH del sistema
&lt;a href="#agregar-binarios-de-mongodb-a-la-path-del-sistema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si agrega &lt;code&gt;C:\Archivos de programa\MongoDB\Server\6.0\bin&lt;/code&gt; a su PATH del sistema, puede omitir la ruta completa a los archivos binarios del servidor MongoDB. También debe agregar la ruta a &lt;code&gt;mongosh&lt;/code&gt; si aún no lo ha hecho.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Fuente: &lt;a href="https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-windows/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-windows/
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Instalar The Legend of Zelda en Yuzu</title><link>https://patojad.com.ar/post/2023/05/instalar-the-legend-of-zelda-en-yuzu/</link><pubDate>Wed, 24 May 2023 10:20:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/05/instalar-the-legend-of-zelda-en-yuzu/</guid><description>&lt;p&gt;Antes que nada quiero aclarar que no podran encontrar los links de descarga en este articulo. Si bien la persona que me facilito la guia, genero un comprimido con todo lo que necesitamos no es parte de este sitio web formentar la pirateria. Por lo que si quieren jugarlo deberan buscarlo por su cuenta.&lt;/p&gt;
&lt;p&gt;Ya sabiendo esto lo siguiente es instalar &lt;strong&gt;Yuzu&lt;/strong&gt; en nuestro sistema operativo. Para esto bastaria la documentacion de su sitio oficial:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://yuzu-emu.org/help/quickstart/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Instalación de Yuzu
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sin embargo, en caso de ser necesario armare la guia para instalarlo en Windows, Linux y MacOS. Pero por ahora vamos a suponer que ya lo tenemos instalado.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="configuracion-de-yuzu"&gt;
Configuracion de &lt;strong&gt;Yuzu&lt;/strong&gt;
&lt;a href="#configuracion-de-yuzu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez descargado el emulador y los datos del juego, lo que debemos hacer es descomprimir el comprimido que nos facilitaron. Abrimos el emulador y vamos a ver un mensaje de error que nos pide que lo activemos. Para esto iremos al menu, en la parte de archivo y seleccionamos la opcion de &lt;code&gt;Abrir carpeta de instalación de Yuzu&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/MT028k2X/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Dentro de la carpeta que se nos abrio, vamos a buscar la carpeta de &lt;code&gt;keys&lt;/code&gt; y dentro de esta vamos a pegar los archivos que se encuentra dentro del comprimido que nos facilitaron (las claves).&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/fTqr0WMY/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Y una vez agregadas las claves, nos toca extraer y copiar la carpeta firmware que esta dentro del comprimido que nos facilitaron. Esta carpeta la vamos a pegar dentro de la carpeta &lt;code&gt;nand -&amp;gt; system -&amp;gt; Contents -&amp;gt; registered&lt;/code&gt; que se encuentra dentro de la carpeta de instalacion de &lt;strong&gt;Yuzu&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/W1wcKFrg/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalando-el-juego"&gt;
Instalando el juego
&lt;a href="#instalando-el-juego" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que ya agregamos la clave y la carpeta de firmware, lo que nos queda es instalar el juego. Para esto vamos a abrir el emulador y vamos a añadir nuevo directorio de juegos, navegamos hasta la carpeta donde se encuentra el juego y la seleccionamos.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/rmRJZpwx/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Una vez que seleccionamos la carpeta, ya podremos ver el juego en la lista de juegos disponibles. Lo seleccionamos y le damos click derecho para abrir las opciones.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/R07n6Tjy/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Dentro de las opciones vamos a seleccionar la opcion de &lt;code&gt;Abrir ubicacion de los Mods&lt;/code&gt;. Esto nos va a abrir una carpeta donde vamos a pegar los mods que nos provee el comprimido que nos facilitaron.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/hjxcMSL5/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;div class="w-full rounded-xl bg-yellow-600/75 text-yellow-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-warning fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;ATENCION: Los mods proporcionados son para la version 1.1.1, por lo cual es necesario realizar la actualiazcion del juego antes de lanzarlo&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;No es requerido agregar los mods, pero si es recomendado ya que mejoran la experiencia de juego.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="actualizando-el-juego"&gt;
Actualizando el juego
&lt;a href="#actualizando-el-juego" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Dentro del comprimido que nos facilitaron, vamos a encontrar dos archivos de extensión &lt;code&gt;.nsp&lt;/code&gt;. Estos archivos son los que vamos a utilizar para actualizar el juego. Para esto vamos a abrir el emulador y vamos al menu de &lt;code&gt;Archivo -&amp;gt; Instalar archivo NAND&lt;/code&gt;. Y vamos a seleccionar las actualizaciones del juego.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/FHXvsfLC/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Es &lt;strong&gt;sumamente importante&lt;/strong&gt; que las actualizaciones se instalen en orden, es decir, primero la actualizacion 1.1 y luego la 1.1.1. Una vez que se instalaron las actualizaciones, ya podremos lanzar el juego.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/yNSrJnCF/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;El v131072Update corresponde a la version 1.1, mientras que el [v196608] a la version 1.1.1&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lanzando-el-juego"&gt;
Lanzando el juego
&lt;a href="#lanzando-el-juego" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ya teniendo el juego instalado, con los mods que deseamos y las actualizaciones aplicadas basta con lanzarlo y disfutarlo haciendole un click a la imagen&amp;hellip;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Fuente: Borrego Villegas&lt;/p&gt;</description></item><item><title>¿Por qué estudiamos informática?</title><link>https://patojad.com.ar/post/2023/05/por-qu%C3%A9-estudiamos-inform%C3%A1tica/</link><pubDate>Wed, 10 May 2023 09:56:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/05/por-qu%C3%A9-estudiamos-inform%C3%A1tica/</guid><description>&lt;p&gt;Como algunos sabrán yo estudio en una universidad pública desde hace tiempo, al menos en Argentina las carreras no suelen durar lo que dicen los papeles, más que nada cuando uno trabaja, tiene familia y para colmo se mete en diversos proyectos…&lt;/p&gt;
&lt;p&gt;El año pasado participé de una encuesta realizada por la fundación sadosky (y compañía) donde se buscaba conocer la evolución de la informática a nivel académico.&lt;/p&gt;
&lt;p&gt;Si bien los resultados están segmentados en mi país de origen es interesante ver la evolución del campo académico que es el que se encarga, al menos desde mi perspectiva, de generar profesionales de alto nivel, es decir desarrolladores y no sólo programadores.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="resumen"&gt;
Resumen
&lt;a href="#resumen" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente el estudio es muy largo, y su resumen también, por lo cual te dejo el resumen del resumen en el cual destacó lo que me pareció más interesante.&lt;/p&gt;
&lt;p&gt;Entre los hallazgos se encuentra que la oferta de carreras informáticas ha crecido de manera sostenida en el ámbito público y que además se ha diversificado, contando hoy con muchas más opciones cortas, además de las carreras tradicionales y más largas. Desde 2016, el número de inscriptos ha aumentado continuamente y es particularmente significativo el crecimiento de nuevas inscriptas mujeres. Más de la mitad trabajan y la mayoría lo hace en el área de sistemas, y afirma estar conforme con su espacio de trabajo y haber adquirido los conocimientos necesarios (en sus primeros años de carrera) para desempeñarse con autonomía. Las y los estudiantes reconocen también los esfuerzos de las instituciones académicas para favorecer la permanencia y la terminalidad: becas, tutorías y pasantías son algunas de las más mencionadas.&lt;/p&gt;
&lt;p&gt;Aunque también hay que recalcar que las mujeres siguen siendo, en porcentaje, mucho menor que los hombres en estas carreras, y (opinión personal) puede tener que ver más con un tema social que con un tema de interés.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://program.ar/wp-content/uploads/2023/05/Por-que-estudiamos-informatica-Version-Completa.pdf" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Informe completo
&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;fuente: &lt;a href="https://program.ar/por-que-estudiamos-informatica/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
program.ar
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Como instalar MongoDB en MacOS</title><link>https://patojad.com.ar/post/2023/05/como-instalar-mongodb-en-macos/</link><pubDate>Fri, 05 May 2023 13:45:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/05/como-instalar-mongodb-en-macos/</guid><description>&lt;p&gt;Vamos a ver como realizar la instalacion de &lt;strong&gt;MongoDB&lt;/strong&gt; en MacOS. Recuerda que para esto debes tener instalado primero &lt;a href="https://patojad.com.ar/post/2023/02/como-instalar-brew-en-macos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Homebrew
&lt;/a&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comandos"&gt;
Comandos
&lt;a href="#comandos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Los siguientes comandos podes usarlos en tu terminal (Recorda tener instalado &lt;a href="https://patojad.com.ar/post/2023/02/como-instalar-brew-en-macos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Homebrew
&lt;/a&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew tap mongodb/brew&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Una ves agregado el TAP de MongoDB podemos instalarlo de manera oficial, pero antes debemos actualizar:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Luego si, ya podemos proceder a realizar la instalación de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install mongodb-community&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalado"&gt;
Instalado
&lt;a href="#instalado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una ves instalado tendremos acceso a los siguientes binarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El servidor &lt;code&gt;mongod&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Enrutador de consultas &lt;code&gt;mongos&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;El cliente de MongoDB para Shell &lt;code&gt;mongosh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Fuente: &lt;a href="https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-os-x/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-os-x/
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Como instalar MongoDB en GNU/Linux</title><link>https://patojad.com.ar/post/2023/04/como-instalar-mongodb-en-gnu-linux/</link><pubDate>Wed, 19 Apr 2023 13:45:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/04/como-instalar-mongodb-en-gnu-linux/</guid><description>&lt;p&gt;Vamos a ver como realizar la instalacion de &lt;strong&gt;MongoDB&lt;/strong&gt; en nuestra distribucion de GNU/Linux preferida.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comando-para-arch-linux"&gt;
Comando para Arch Linux
&lt;a href="#comando-para-arch-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En arch linux la instalacion es tan simple como podemos ver en el video utilizando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -Sy mongodb-bin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="debian-y-derivadas-como-ubuntu"&gt;
Debian y derivadas como ubuntu
&lt;a href="#debian-y-derivadas-como-ubuntu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Debemos asegurarnos de tener &lt;code&gt;gnupg&lt;/code&gt; para poder instalar las llaves necesarias, podemos instalarlo de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install gnupg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;y una ves instalado procedemos a realizar la descarga e instalacion de las llaves de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://pgp.mongodb.com/server-6.0.asc &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --dearmor&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;creamos el archivo &lt;code&gt;/etc/apt/sources.list.d/mongodb-org-6.0.list&lt;/code&gt; para agregar el repositorio, esto lo podemos hacer de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano /etc/apt/sources.list.d/mongodb-org-6.0.list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;guardamos y cerramos el archivo limpio para luego dentro agregar el repositorio segun corresponda.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="debian-10"&gt;
Debian 10
&lt;a href="#debian-10" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;deb [ signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] http://repo.mongodb.org/apt/debian buster/mongodb-org/6.0 main&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="debian-11"&gt;
Debian 11
&lt;a href="#debian-11" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;deb [ signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg] http://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ubuntu-184"&gt;
Ubuntu 18.4
&lt;a href="#ubuntu-184" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/6.0 multiverse&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ubuntu-204"&gt;
Ubuntu 20.4
&lt;a href="#ubuntu-204" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ubuntu-224"&gt;
Ubuntu 22.4
&lt;a href="#ubuntu-224" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Una vez creado el archivo procedemos a instalar el paquete de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y mongodb-org&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="rhel--centos--oracle--rocky--almalinux"&gt;
RHEL / CentOS / Oracle / Rocky / AlmaLinux
&lt;a href="#rhel--centos--oracle--rocky--almalinux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Vamos a crear el archivo &lt;code&gt;/etc/yum.repos.d/mongodb-org-6.0.repo&lt;/code&gt; que nos permitira agregar el repositorio para la instalacion y dentro vamos a agregar lo siguiente:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;conf&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[mongodb-org-6.0]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;name=MongoDB Repository
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;baseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/6.0/x86_64/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gpgcheck=1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;enabled=1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Una vez creado el archivo procedemos a instalar el paquete de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum install -y mongodb-org&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Fuente: &lt;a href="https://www.mongodb.com/docs/manual/administration/install-on-linux/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.mongodb.com/docs/manual/administration/install-on-linux/
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Install GIT en Windows con Winget</title><link>https://patojad.com.ar/post/2023/04/install-git-en-windows-con-winget/</link><pubDate>Mon, 10 Apr 2023 10:06:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/04/install-git-en-windows-con-winget/</guid><description>&lt;p&gt;hoy vamos a ver como instalar &lt;strong&gt;git&lt;/strong&gt; en &lt;strong&gt;Windows&lt;/strong&gt; utilizando &lt;em&gt;winget&lt;/em&gt; el gestor de paquetes de microsoft.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comando"&gt;
Comando
&lt;a href="#comando" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para que sea mucho mas facil te dejo el comando para que puedas copiar y pegar en tu terminal&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winget install -e --id Git.Git&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Install NodeJS en MacOS con Homebrew</title><link>https://patojad.com.ar/post/2023/04/install-nodejs-en-macos-con-homebrew/</link><pubDate>Fri, 07 Apr 2023 07:56:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/04/install-nodejs-en-macos-con-homebrew/</guid><description>&lt;p&gt;Vamos a ver como realizar la instalación de &lt;strong&gt;NodeJS&lt;/strong&gt; de una forma muy simple y rápida utilizando &lt;em&gt;homebrew.&lt;/em&gt; De esta forma simple y rápida podemos obtener &lt;strong&gt;cualquier&lt;/strong&gt; versión de NodeJS y NPM.&lt;/p&gt;
&lt;p&gt;Para poder realizar esto vamos a necesitar instalar previamente &lt;strong&gt;Homebrew&lt;/strong&gt;, pero no te preocupes, si no lo tenes te dejo a continuación un artículo donde te explico como instalarlo en MacOS.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://patojad.com.ar/post/2023/02/como-instalar-brew-en-macos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Instalar Homebrew en MacOS
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando utilizado para esta ocasión es el que dejaré a continuación. En caso de querer pegar en la terminal de linux se suele hacer con &lt;code&gt;ctrl&lt;/code&gt;+&lt;code&gt;shift&lt;/code&gt;+&lt;code&gt;v&lt;/code&gt; sino podes utilizar el mouse con &lt;code&gt;click derecho&lt;/code&gt; -&amp;gt; &lt;code&gt;pegar&lt;/code&gt; dependiendo de tu terminal:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install node&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Install VS Code en Windows con Winget</title><link>https://patojad.com.ar/post/2023/04/install-vs-code-en-windows-con-winget/</link><pubDate>Tue, 04 Apr 2023 10:06:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/04/install-vs-code-en-windows-con-winget/</guid><description>&lt;p&gt;Vamos a ver como realizar la instalación de &lt;strong&gt;Visual Studio Code&lt;/strong&gt; de una forma muy simple y rápida utilizando &lt;em&gt;winget&lt;/em&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalandolo"&gt;
Instalandolo
&lt;a href="#instalandolo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando utilizado para esta ocasión es el que dejaré a continuación. En caso de querer pegar en la terminal de windows se suele hacer con &lt;code&gt;ctrl&lt;/code&gt;+&lt;code&gt;v&lt;/code&gt; sino podes utilizar el mouse con &lt;code&gt;click derecho&lt;/code&gt; -&amp;gt; &lt;code&gt;pegar&lt;/code&gt; dependiendo de tu terminal:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winget install -e --id Microsoft.VisualStudioCode&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Install NodeJS en Windows con Winget</title><link>https://patojad.com.ar/post/2023/03/install-nodejs-en-windows-con-winget/</link><pubDate>Tue, 28 Mar 2023 13:56:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/03/install-nodejs-en-windows-con-winget/</guid><description>&lt;p&gt;Vamos a ver como realizar la instalación de &lt;strong&gt;NodeJS&lt;/strong&gt; de una forma muy simple y rápida utilizando &lt;em&gt;winget.&lt;/em&gt; De esta forma simple y rápida podemos obtener &lt;strong&gt;cualquier&lt;/strong&gt; versión de NodeJS y NPM directamente desde winget.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalandolo"&gt;
Instalandolo
&lt;a href="#instalandolo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando utilizado para esta ocasión es el que dejaré a continuación. En caso de querer pegar en la terminal de windows se suele hacer con &lt;code&gt;ctrl&lt;/code&gt;+&lt;code&gt;v&lt;/code&gt; sino podes utilizar el mouse con &lt;code&gt;click derecho&lt;/code&gt; -&amp;gt; &lt;code&gt;pegar&lt;/code&gt; dependiendo de tu terminal:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winget install -e --id OpenJS.NodeJS&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Error Boost.Python en el proceso Bootloader - Huayra</title><link>https://patojad.com.ar/post/2023/03/error-boost.python-en-el-proceso-bootloader-huayra/</link><pubDate>Mon, 20 Mar 2023 08:47:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/03/error-boost.python-en-el-proceso-bootloader-huayra/</guid><description>&lt;p&gt;Desde que arme el video de de la review de &lt;strong&gt;Huayra&lt;/strong&gt; y su instalación (el cual pueden ver acá abajo) muchos comentarios me llegaban con &lt;strong&gt;problemas de instalación&lt;/strong&gt;, y el último fue la semana pasada de la mano de un miembro de la comunidad llamado &lt;strong&gt;Nicolas Ojeda&lt;/strong&gt; (al que le mando un fuerte saludo) con el cual indagando un rato (como otras veces en la comunidad) llegamos a la clara solución y la idea es dejar documentada esta solución para personas que tengan el mismo error con esta, o cualquier otra, distribución.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-error"&gt;
El error
&lt;a href="#el-error" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Básicamente el error ocurre durante el proceso de instalación, a la hora de instalar el grub obtenemos un cartel como el siguiente:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/gjKRR12p/photo-2023-03-17-14-17-29.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Donde nos informa que hay un error a la hora de instalar el &lt;strong&gt;bootloader&lt;/strong&gt;.Esto deja el sistema inutilizable pero ya realizó el formateo de las particiones de los discos, por lo cual si es nuestra única máquina nos complica muchísimo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-solución"&gt;
La solución
&lt;a href="#la-soluci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://uploads-ssl.webflow.com/636ab6ba0e1bd250e3aaedaf/63905e57364473528de52e1a_Etcher_steps.gif" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Para poder solucionar este error de bootloader lo único que debemos hacer es utilizar otra aplicación para bootear el USB, en estos casos se usaba &lt;strong&gt;unetbootin&lt;/strong&gt; o &lt;strong&gt;rufus&lt;/strong&gt; pero generan este error. En la experiencia que generamos con este error sabemos que balena &lt;strong&gt;etcher&lt;/strong&gt; es la mejor app para generar booteables para &lt;strong&gt;Huayra Linux&lt;/strong&gt;. Tenemos la suerte de que esta app es multiplataforma.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.balena.io/etcher" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Sitio de Etcher
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Espero que esto te haya servido y no te olvides de contar tu experiencia y por supuesto de unirte al foro y al grupo de telegram!&lt;/p&gt;</description></item><item><title>¿Que es TypeScript? ¿En que se parece a JavaScript?</title><link>https://patojad.com.ar/post/2023/03/que-es-typescript-en-que-se-parece-a-javascript/</link><pubDate>Fri, 17 Mar 2023 09:40:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/03/que-es-typescript-en-que-se-parece-a-javascript/</guid><description>&lt;p&gt;&lt;strong&gt;TypeScript&lt;/strong&gt; es un &lt;em&gt;subconjunto azúcar sintáctico&lt;/em&gt; de &lt;strong&gt;JavaScript&lt;/strong&gt;. Básicamente es un código que transpila a &lt;strong&gt;JavaScript&lt;/strong&gt; y tiene como fin formalizar un poco los lineamientos a la hora de desarrollar con este lenguaje.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="principales-diferencias"&gt;
Principales diferencias
&lt;a href="#principales-diferencias" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Podemos situar grandes diferencias entre estos lenguajes pero para eso debemos entender que al momento de ejecución ambos terminan siendo &lt;strong&gt;JavaScript&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Objetos:&lt;/strong&gt; Si bien en &lt;strong&gt;JavaScript&lt;/strong&gt; podemos usar objetos y clases no son su mayor fuerte, sin embargo en &lt;strong&gt;TypeScript&lt;/strong&gt; vamos a estar programando Orientado a Objetos y este puede ser un punto fuerte para elegir, si lo que vamos a estar haciendo va a ser en POO &lt;strong&gt;TypeScript&lt;/strong&gt; es una gran opción.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compilación:&lt;/strong&gt; Mientras que &lt;strong&gt;JavaScript&lt;/strong&gt; es interpretado &lt;strong&gt;TypeScript&lt;/strong&gt; requiere un proceso de &lt;em&gt;“compilación”&lt;/em&gt; (o mejor dicho transpilación) donde el código de &lt;strong&gt;TypeScript&lt;/strong&gt; se convierte en código &lt;strong&gt;JavaScript&lt;/strong&gt; que luego será interpretado ya sea por el servidor o el cliente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tipado:&lt;/strong&gt; Una de las flexibilidades más grandes de &lt;strong&gt;JavaScript&lt;/strong&gt; es su tipado dinámico, sin embargo en &lt;strong&gt;TypeScript&lt;/strong&gt; vamos a tener un tipado estático y fuerte (que para ser sinceros podemos flexibilizar sin problemas) pero esto nos permite disminuir la cantidad de errores en tiempo de ejecución por el tipado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Curva de Aprendizaje:&lt;/strong&gt; Si bien &lt;strong&gt;TypeScript&lt;/strong&gt; es un subconjunto azúcar sintáctico de &lt;strong&gt;JavaScript&lt;/strong&gt; este es un poco más complejo de aprender, según la comunidad, que &lt;strong&gt;JavaScript&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cual-elegir"&gt;
¿Cual Elegir?
&lt;a href="#cual-elegir" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Es difícil poder definir cuál es la mejor opción sin tener un contexto. Siempre la mejor opción va a depender de nuestro expertis en cada uno, las necesidades del proyecto y los framework que vamos a estar utilizando. De todas formas a las diferencias que marcamos arriba voy a sumar, una serie de reglas que utilizo yo para definir, estas son solo en base a mi experiencia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Tamaño del proyecto&lt;/em&gt;, si el proyecto es pequeño y rápido, bastará con usar &lt;strong&gt;JavaScript&lt;/strong&gt;, sin embargo en proyectos medianos y grandes &lt;strong&gt;TypeScript&lt;/strong&gt; puede ser más cómodo a largo plazo y ahorrar algunos dolores de cabeza.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Cantidad de miembros&lt;/em&gt;, si vamos a estar desarrollando nosotros solos &lt;strong&gt;JavaScript&lt;/strong&gt; puede resultar más práctico, pero si tenemos como objetivo que colaboren más personas &lt;strong&gt;TypeScript&lt;/strong&gt; puede ser muy bueno para manejar lineamientos similares y tener código más fácil de entender.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Compatibilidad&lt;/em&gt;, puede que &lt;strong&gt;TypeScript&lt;/strong&gt; no sea compatible con nuestro proyecto o la forma de encararlo, es una prueba interesante para tener en cuenta a la hora de elegirlo.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Install NodeJS en Linux con Homebrew</title><link>https://patojad.com.ar/post/2023/02/install-nodejs-en-linux-con-homebrew/</link><pubDate>Mon, 27 Feb 2023 11:56:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/02/install-nodejs-en-linux-con-homebrew/</guid><description>&lt;p&gt;Vamos a ver como realizar la instalación de &lt;strong&gt;NodeJS&lt;/strong&gt; de una forma muy simple y rápida utilizando &lt;em&gt;homebrew.&lt;/em&gt; De esta forma simple y rápida podemos obtener &lt;strong&gt;cualquier&lt;/strong&gt; versión de NodeJS y NPM sin importar nuestra versión de linux, nuestro gestor de paquetes o la versión que estén disponible en los repositorios.&lt;/p&gt;
&lt;p&gt;Para poder realizar esto vamos a necesitar instalar previamente Homebrew, pero no te preocupes, si no lo tenes te dejo a continuación un artículo donde te explico como instalarlo en tu distribución de GNU/Linux.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://patojad.com.ar/post/2023/01/como-instalar-brew-en-gnu/post/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Instalar Homebrew en GNU/Linux
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalandolo"&gt;
Instalandolo
&lt;a href="#instalandolo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando utilizado para esta ocasión es el que dejaré a continuación. En caso de querer pegar en la terminal de linux se suele hacer con &lt;code&gt;ctrl&lt;/code&gt;+&lt;code&gt;shift&lt;/code&gt;+&lt;code&gt;v&lt;/code&gt; sino podes utilizar el mouse con &lt;code&gt;click derecho&lt;/code&gt; -&amp;gt; &lt;code&gt;pegar&lt;/code&gt; dependiendo de tu terminal:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install node&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Como instalar brew en MacOS</title><link>https://patojad.com.ar/post/2023/02/como-instalar-brew-en-macos/</link><pubDate>Mon, 13 Feb 2023 14:04:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/02/como-instalar-brew-en-macos/</guid><description>&lt;p&gt;&lt;strong&gt;Homebrew&lt;/strong&gt; instala todo aquello que necesitas que Apple no instala de serie. &lt;strong&gt;Homebrew&lt;/strong&gt; instala cada paquete en su propio directorio, creando enlaces simbólicos a tus archivos dentro de &lt;code&gt;/usr/local&lt;/code&gt;. &lt;strong&gt;Homebrew&lt;/strong&gt; nunca instala archivos fuera de su prefijo, y puedes colocar la instalación de &lt;strong&gt;Homebrew&lt;/strong&gt; donde quieras.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Homebrew&lt;/strong&gt; está basado únicamente en Git y Ruby: ya puedes desarrollar tranquilo, con la seguridad de que podrás deshacer tus cambios e integrar actualizaciones con total facilidad.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comandos"&gt;
Comandos
&lt;a href="#comandos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Puede que previamente tengas que instalar las Tools de xcode (&lt;code&gt;git&lt;/code&gt;, &lt;code&gt;gcc&lt;/code&gt;, &lt;code&gt;clang&lt;/code&gt;, etc&amp;hellip;) lo podemos hacer desde nuestra terminal de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;xcode-select --install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;El comando utilizado en el video es el siguiente&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/bin/bash -c &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://docs.brew.sh/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Documentacion
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Como instalar brew en GNU/Linux</title><link>https://patojad.com.ar/post/2023/01/como-instalar-brew-en-gnu-linux/</link><pubDate>Tue, 31 Jan 2023 08:47:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/01/como-instalar-brew-en-gnu-linux/</guid><description>&lt;p&gt;Muchas veces tenemos que instalar dependencias o paquetes y en nuestros repositorios no se encuentran las últimas versiones. Si sos dev te suele pasar esto frecuentemente al preparar tu entorno de desarrollo, por lo cual te recomiendo usar brewhome un gestor de paquetes para GNU/Linux y MacOS que te permite gestionar muchas dependencias útiles para programar y otras que no necesariamente son para programar pero son muy útiles&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comandos"&gt;
Comandos
&lt;a href="#comandos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando utilizado en el video es el siguiente&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/bin/bash -c &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://docs.brew.sh/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Documentacion
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Como Desfragmentar nuestro GNU/Linux</title><link>https://patojad.com.ar/post/2023/01/como-desfragmentar-nuestro-gnu-linux/</link><pubDate>Wed, 25 Jan 2023 08:47:00 +0000</pubDate><guid>https://patojad.com.ar/post/2023/01/como-desfragmentar-nuestro-gnu-linux/</guid><description>&lt;p&gt;A lo largo y ancho de mi experiencia en múltiples ámbitos escuche que en &lt;strong&gt;GNU/Linux&lt;/strong&gt; no es necesario desfragmentar. La realidad es que si bien los índices de fragmentación son más bajos que en &lt;strong&gt;Windows&lt;/strong&gt; es realmente importante desfragmentar nuestro disco, más cuando interactuamos mucho (descargar, borrar, editar, subir) diferentes archivos y aún más si estos son pesados.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="e2fsprogs"&gt;
e2fsprogs
&lt;a href="#e2fsprogs" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para poder realizar esto tenemos muchas herramientas, hoy vamos a usar una que viene incluida en el paquete &lt;code&gt;e2fsprogs&lt;/code&gt; y que podemos instalar de la siguiente manera:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arch-y-derivadas"&gt;
Arch y derivadas
&lt;a href="#arch-y-derivadas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Usando &lt;code&gt;pacman&lt;/code&gt; o usando &lt;code&gt;yay&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -Sy e2fsprogs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Sy e2fsprogs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="debianubuntu-y-derivadas"&gt;
Debian/Ubuntu y derivadas
&lt;a href="#debianubuntu-y-derivadas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Podemos usar &lt;code&gt;apt&lt;/code&gt; o cualquier variante anterior a esta&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install e2fsprogs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install e2fsprogs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="fedora-y-familia"&gt;
Fedora y familia
&lt;a href="#fedora-y-familia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Podemos usar tanto &lt;code&gt;dnf&lt;/code&gt; o &lt;code&gt;yum&lt;/code&gt; dependiendo la disponibilidad&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf -y install e2fsprogs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum -y install e2fsprogs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="desfragmentar"&gt;
Desfragmentar
&lt;a href="#desfragmentar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que tengamos todo instalado basta con ejecutar el siguiente comando en una terminal. en el caso donde yo pongo &lt;code&gt;/etc&lt;/code&gt; debemos poner la ‘carpeta’ que queremos desfragmentar. y ahí podemos elegir, por ejemplo, &lt;code&gt;/&lt;/code&gt; el directorio raíz que desfragmentaría todo.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo e4defrag /etc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Microsoft Teams WPA</title><link>https://patojad.com.ar/post/2022/11/microsoft-teams-wpa/</link><pubDate>Thu, 10 Nov 2022 13:22:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/11/microsoft-teams-wpa/</guid><description>&lt;p&gt;Microsoft nos trae a los usuairos de Linux una nueva version de su aplicacion de chat y colaboracion, esta vez en formato Web Progresiva, lo que nos permite instalarla como una aplicacion nativa en nuestro sistema operativo.&lt;/p&gt;
&lt;p&gt;Si bien anteriormente teniamos una app &amp;ldquo;nativa&amp;rdquo; que dejaba mucho que desear de esta forma podemos tener una app mas completa y con un mejor rendimiento.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="funcionalidades-nuevas"&gt;
Funcionalidades Nuevas
&lt;a href="#funcionalidades-nuevas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Podemos acceder a funcionalidades que estaban disponibles en la version de Windows o MacOS como por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Background Personalizados&lt;/li&gt;
&lt;li&gt;Vista de Galeria&lt;/li&gt;
&lt;li&gt;Reacciones&lt;/li&gt;
&lt;li&gt;Levantar la mano en reuniones&lt;/li&gt;
&lt;li&gt;Vista modo &amp;ldquo;Juntos&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Entre otras estas son algunas de las funcionalidades atrazadas que llegan de la mano de esta version.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/XhGUFlz6oeA?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;No te olvides de dejar tu comentario de que te parece esta decicion de MS o si te da lo mismo porque no usas sus apps.&lt;/p&gt;</description></item><item><title>Email Profesional GRATIS - Saliente</title><link>https://patojad.com.ar/post/2022/10/email-profesional-gratis-saliente/</link><pubDate>Thu, 20 Oct 2022 11:05:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/10/email-profesional-gratis-saliente/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="usar-email-para-salida-de-correos"&gt;
Usar email para salida de correos
&lt;a href="#usar-email-para-salida-de-correos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien &lt;a href="https://patojad.com.ar/post/2022/09/email-profesional-gratis/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
esto ya es muy profesional
&lt;/a&gt;, también resultaría interesante poder responder utilizando el correo que creamos. En este caso voy a mostrar cómo agregarlo a &lt;strong&gt;GMAIL&lt;/strong&gt; para poder utilizarlo como correo saliente.&lt;/p&gt;
&lt;p&gt;Para esto debemos ingresar en nuestra cuenta de Gmail e ir a las configuraciones de la misma para poder agregar una nueva cuenta de correo saliente. Esto lo hacemos desde &lt;strong&gt;Ajustes&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Ver todos los Ajustes&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Cuentas e Importación&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Enviar como:&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Añadir otra dirección de correo electrónico&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/ZKSKp7Lw/gmailconf.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Añadimos el correo, con el nombre que utilizaremos para identificarlo de la siguiente manera (recuerda que los datos son a modo ejemplo, tu debes completarlo con tus datos particulares)&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/ncGVk4Rp/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Luego vamos a completar los campos con los datos de nuestra cuenta de Gmail (en este caso la cuenta que los recibe y la que envía van a ser la misma) de la siguiente manera:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/q7zk49kv/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Donde:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Servidor SMTP:&lt;/strong&gt; smtp.gmail.com&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nombre de Usuario:&lt;/strong&gt; El nombre de usuario de Gmail ( si tu correo es &lt;a href="mailto:user@gmail.com" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-envelope"&gt;&lt;/i&gt;&amp;nbsp;
user@gmail.com
&lt;/a&gt;, user es tu nombre de usuario).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contraseña:&lt;/strong&gt; Contraseña de GMAIL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Puerto:&lt;/strong&gt; 465.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="w-full rounded-xl bg-yellow-600/75 text-yellow-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-warning fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;ATENCIÓN: En el caso de que tengas el doble factor activado, la contraseña deberá ser una nueva creada para este fin, lo cual veremos cómo hacerlo a continuación.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://patojad.com.ar/posts/2022/07/crear-contrase%c3%b1a-para-apps-en-google/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Crear contraseña para apps en Google
&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Ya con esto podemos enviar desde nuestro Gmail utilizando nuestro correo profesional.&lt;/p&gt;</description></item><item><title>Agregar Repositorio de SteamOS a Arch</title><link>https://patojad.com.ar/post/2022/09/agregar-repositorio-de-steamos-a-arch/</link><pubDate>Tue, 13 Sep 2022 11:48:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/09/agregar-repositorio-de-steamos-a-arch/</guid><description>&lt;p&gt;Vamos a agregar los repositorios de SteamOS (Holo y jupiter) a nuestra distribución de Arch Linux favorita. Esto puede sernos útil para poder acceder a sus apps, configuraciones y personalizaciones.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://steamdeck-packages.steamos.cloud/archlinux-mirror/jupiter/os/x86_64/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-steam" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Repositorio Jupiter
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://steamdeck-packages.steamos.cloud/archlinux-mirror/holo/os/x86_64/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-steam" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Repositorio Holo
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://steamdeck-packages.steamos.cloud/archlinux-mirror/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-steam" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Todos los Repositorios
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://steamdeck-packages.steamos.cloud/archlinux-mirror/iso/latest/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-steam" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Ultimas ISO
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Antes que nada te dejo el link donde vas a poder ver los repositorios posibles y los paquetes que tiene cada uno de estos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;iframe src='https://www.youtube.com/embed/dY6ISmFUlTY?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comandos"&gt;
Comandos
&lt;a href="#comandos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Lo primero que vamos a hacer es abrir nuestro &lt;code&gt;pacman.conf&lt;/code&gt; para poder agregar los repositorios, esto lo hacemos desde la terminal y como administrador para poder guardar los cambios de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nano /etc/pacman.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Luego agregamos las siguientes 2 líneas al final del archivo. En mi caso estaban comentadas pero tu debes agregarlas (se pega con ctrl+shift+v)&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;cfg&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cfg" data-lang="cfg"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[jupiter]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;https://steamdeck-packages.steamos.cloud/archlinux-mirror/$repo/os/$arch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;SigLevel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;Never&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[holo]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;https://steamdeck-packages.steamos.cloud/archlinux-mirror/$repo/os/$arch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;SigLevel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;Never&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Luego guardamos (ctrl+o y después enter) y cerramos, ya podemos actualizar para descargar la información de nuestros repositorios&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Syyu&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Y ya podemos instalar desde los repositorios de SteamOS&lt;/p&gt;</description></item><item><title>Email Profesional GRATIS</title><link>https://patojad.com.ar/post/2022/09/email-profesional-gratis/</link><pubDate>Mon, 12 Sep 2022 08:25:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/09/email-profesional-gratis/</guid><description>&lt;p&gt;Ya hable con anterioridad sobre Cloudflare allá por el 2019. Y creo que quedó fuertemente asentado que lo recomiendo fuertemente más allá de sus contras. Dejo la información hablada con anterioridad sobre esto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2019/10/cloudflare-que-es-ventajas-y-desventajas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
CloudFlare ¿Que es? Ventajas y Desventajas
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2019/11/configurar-gitlab-pages-con-cloudflare/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Configurar GitLab Pages con CloudFlare
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Como siempre cloudflare avanza a pasos agigantados y gracias a esto nos ofrece nuevas funcionalidades y una de las más interesantes es la posibilidad de tener un email profesional &lt;em&gt;(@tudominio)&lt;/em&gt; completamente &lt;strong&gt;GRATIS&lt;/strong&gt;. Y si bien de entrada esta opción parece que solo es para forwardear correos a uno ya existente (por ejemplo tu gmail) es muy interesante conocer la mejor forma de configurarlo para poder enviar correos con tu dominio “profesional” desde, en este caso, nuestro gmail.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="primeros-pasos"&gt;
Primeros pasos
&lt;a href="#primeros-pasos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como primeros pasos debemos tener nuestro dominio en &lt;strong&gt;CloudFlare&lt;/strong&gt; ya configurado &lt;em&gt;(Lo cual podemos verlo en guías anteriores)&lt;/em&gt; y debemos solicitar la BETA del &lt;strong&gt;Enrutamiento de correos electrónicos&lt;/strong&gt; la cual es completamente gratuita con sus respectivos límites.&lt;/p&gt;
&lt;p&gt;Una vez que hayamos sido aceptados, basta con configurar los DNS. Si los estamos administrado con CloudFlare (Lo cual sería lo correcto) Basta con un solo botón que configura todo &lt;em&gt;automágicamente&lt;/em&gt; en la sección &lt;strong&gt;correo electrónico&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Configuración&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Iniciar la activación&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/d1VVkLmw/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Luego debemos agregar la dirección de destino en la cual queremos recibir los correos electrónicos (Es decir un email ya existente y funcionando, en mi caso utilizo mi gmail personal para recibir los correos) esto lo hacemos desde &lt;strong&gt;correo electrónico&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Rutas&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Agregar la dirección de destino&lt;/strong&gt;. Esto nos enviará un email de confirmación para saber que se encuentra funcionando. Una vez activado lo veremos con el estado &lt;em&gt;verificado&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/fLzJcHZ4/mailverificado.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ya teniendo correctamente configurado el correo de destino debemos agregar (o crear) la dirección de correo custom que queremos, lo cual lo podemos hacer desde: &lt;strong&gt;correo electrónico&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Rutas&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Crear dirección&lt;/strong&gt;. En esta parte es completamente intuitivo y solo nos aparecerá como destino en &lt;strong&gt;Acciones&lt;/strong&gt; aquellos correos que ya estén verificados.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/zvR5KWLZ/mailadd.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Una vez que hayamos realizado estos pasos ya podemos recibir correos a nuestro nuevo email profesional desde nuestra casilla personal.&lt;/p&gt;</description></item><item><title>USB no me funciona... SOLUCION</title><link>https://patojad.com.ar/post/2022/08/usb-no-me-funciona...-solucion/</link><pubDate>Fri, 26 Aug 2022 11:48:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/08/usb-no-me-funciona...-solucion/</guid><description>&lt;p&gt;Cuántas veces nos pasa que “de la nada” la pc no nos reconoce los USB (Ya sea pendrive, mouse, teclado, o lo que sea) Si bien la entrega de energía se cumple (Podemos ver la luz de periférico o incluso conectar un ventilador) No podes usar lo que esté conectado ni acceder a los datos.&lt;/p&gt;
&lt;p&gt;Este problema se suele solucionar cuando reiniciamos la máquina, sin embargo eso puede ser tedioso, por lo cual a continuación te dejo un pequeño video en cual explico como poder solucionar esto para evitar el reinicio.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/Pmjg4jWXuRI?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="código"&gt;
Código
&lt;a href="#c%c3%b3digo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente es más cómodo poder copiar y pegar desde acá por lo cual dejo en orden los comandos que utilizamos en el video con una breve explicación:&lt;/p&gt;
&lt;p&gt;Acá vamos a ver si se encuentra el autosuspend encendido, de ser asi el problema se estaría dando por el autosuspend (encendido seria que nos retonre &amp;gt;=1)&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /sys/module/usbcore/parameters/autosuspend&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Abrimos el archivo de configuración del grub con sudo para actualizar la información.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nano /etc/default/grub&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Buscamos la línea que se llame GRUB_CMDLINE_LINUX_DEFAULT si bien en mi caso se ve como a continuación, puede que se vea completamente diferente los parámetros que te figuran a vos pero eso no es problema solo basta agregar un parámetro más al final.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;cfg&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cfg" data-lang="cfg"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;GRUB_CMDLINE_LINUX_DEFAULT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;loglevel=3 nowatchdog nvme_load=YES&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Agregamos al final de la línea el siguiente parámetro usbcore.autosuspend=-1 que apagaría el autosuspend de los USB. Dejo a continuación como queda en mi caso&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;cfg&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cfg" data-lang="cfg"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;GRUB_CMDLINE_LINUX_DEFAULT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;loglevel=3 nowatchdog nvme_load=YES usbcore.autosuspend=-1&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Luego guardamos y cerramos (en el caso de usar nano ctrl+o y luego enter para guardar y ctrl+x para cerrar) Y procedemos a actualizar el grub&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo update-grub&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Puede que en tu distribución la actualización del grub se haga de otra forma, en mi caso aplica para arch y en el video podemos ver como instalo el paquete porque no lo tenía.&lt;/p&gt;</description></item><item><title>El Tag del Linuxtuber</title><link>https://patojad.com.ar/post/2022/08/el-tag-del-linuxtuber/</link><pubDate>Tue, 16 Aug 2022 14:45:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/08/el-tag-del-linuxtuber/</guid><description>&lt;p&gt;Buenas, en esta oportunidad voy a responder el tag del linuxtuber y la idea es que se sumen más creadores de contenido para darnos a conocer entre nosotros. En mi caso me nominó zatiel que es el creador del tag y voy a dejar su video a continuación:&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/FQqP_ItCGnA?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-video"&gt;
Mi video
&lt;a href="#mi-video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Mi respuesta sobre este tag y mi nominación para otro canal. De más está decir que no hay que esperar a estar nominado simplemente basta con querer resolverlo y dar a conocerse un poco más a la comunidad.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/ek3f6PlOZ9Y?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="preguntas"&gt;
Preguntas
&lt;a href="#preguntas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;¿Que te inspira a crear contenido de Linux?&lt;/li&gt;
&lt;li&gt;¿Como has fomentado el uso de linux?&lt;/li&gt;
&lt;li&gt;¿Que distro linux es la que mas te a gustado?&lt;/li&gt;
&lt;li&gt;¿Que recuerdos tienes con linux?&lt;/li&gt;
&lt;li&gt;¿5 Programas que hoy en día no pueden faltar en una distro linux?&lt;/li&gt;
&lt;li&gt;¿Si pudieras cambiar algo para bien de la comunidad que seria?&lt;/li&gt;
&lt;li&gt;¿Que canal recomiendas que hayas visto de linux y que sus videos te gusten?&lt;/li&gt;
&lt;li&gt;¿Aparte de linux que otro contenido te gusta?&lt;/li&gt;
&lt;li&gt;¿Que anécdota chistosa tienes de linux , que te haya pasado o hayas visto?&lt;/li&gt;
&lt;li&gt;¿Que consejo le darías a alguien que hace contenido de Youtube relacionado a Linux?&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Daniel Pocock vs Debian</title><link>https://patojad.com.ar/post/2022/08/daniel-pocock-vs-debian/</link><pubDate>Mon, 08 Aug 2022 10:41:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/08/daniel-pocock-vs-debian/</guid><description>&lt;p&gt;Para quienes no lo conozcan Pocock fue un desarrollador del proyecto debian que fue expulsado en el año 2018 por tener actitudes en que iban en contra de la comunidad y del mismo proyecto.&lt;/p&gt;
&lt;p&gt;Si bien este tema parece ser interesante no vamos a hablar de su expulsión del proyecto. Sino de lo sucedido a posterioridad. Pocock luego de haber sido expulsado del proyecto mantuvo una postura muy dañina hacia el mismo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="debiancommunity-el-tema-de-hoy"&gt;
debian.community el tema de hoy
&lt;a href="#debiancommunity-el-tema-de-hoy" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El dominio debian.community mantenía un blog y/o comunidad que estaba siendo llevado a cabo por el mismo Pocock y por lo mismo tomó un rumbo atacante hacía el proyecto debian. Y por lo cual debian se vio obligado a pedirle a la &lt;strong&gt;World Intellectual Property Organization&lt;/strong&gt; que revisara el dominio.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Debian presentó una queja ante la &lt;strong&gt;OMPI&lt;/strong&gt; de que el dominio se estaba utilizando para infringir de mala fe las marcas registradas de Debian. En julio de 2022, el panel de la OMPI acordó que el registrante anterior no tenía derechos ni intereses sobre las marcas registradas y las estaba usando de mala fe, y transfirió el dominio al Proyecto Debian.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Por lo cual el dominio de debian.community paso a ser oficialmente del proyecto debian nuevamente. Si bien esto parece lo justo siempre debemos conocer las otras campanadas&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-opinión-personal"&gt;
Mi opinión personal
&lt;a href="#mi-opini%c3%b3n-personal" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Particularmente soy desarrollador y entiendo de cerca estos temas, participe de muchos proyectos grandes (aunque por mi poco tiempo siempre estoy muy poco tiempo en los proyectos) pasa con muchos devs que si bien son muy buenos y demás tienden a tener problemas con los códigos de convivencia.&lt;/p&gt;
&lt;p&gt;Si bien puede que el comportamiento de Daniel Pocock parezca atacante (y lo es) puede que sea más por despecho que por problemas realmente con Dabian en sí.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="fuente"&gt;
Fuente
&lt;a href="#fuente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Todo esto lo puedes leer directamente de debian.community donde está todo muy bien explicado. También recomiendo leer el descargo (más antiguo que lo reciente pasado con el dominio) que también muestra su postura.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://danielpocock.com/debian-debconf-diversity-harassment-abuse-expulsion/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargo de Daniel Pocock
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.debian.org/legal/debian-community-site" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Debian
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Crear contraseña para apps en Google</title><link>https://patojad.com.ar/post/2022/07/crear-contrase%C3%B1a-para-apps-en-google/</link><pubDate>Thu, 14 Jul 2022 10:41:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/07/crear-contrase%C3%B1a-para-apps-en-google/</guid><description>&lt;p&gt;&lt;strong&gt;Google&lt;/strong&gt; intenta mantener &lt;em&gt;&amp;ldquo;nuestra cuenta segura&amp;rdquo;&lt;/em&gt; (esto puede ser polemico para algunos pero vamo a evitar) con el doble factor de auth. Sin embargo esto puede ser un poco tedioso a la hora de linkear diversas apps. Por eso mismo nos ofrece una herramienta que nos permite generar contraseñas que no requieren el 2 factor de auth para simplificar estas tareas.&lt;/p&gt;
&lt;p&gt;Lo primero que debemos hacer es ir al sitio de cuentas de google en la parte de seguridad, al cual podemos acceder desde el siguiente link&lt;/p&gt;
&lt;p&gt;&lt;a href="https://myaccount.google.com/security" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Google Account Security
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una vez ahí vamos a dirigirnos a la parte de &lt;strong&gt;Iniciar sesión en Google&lt;/strong&gt;. y entramos en &lt;strong&gt;contraseñas de aplicaciones&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/hvGs5bL6/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Luego de eso nos pedirá la contraseña de la cuenta (la real, la que usamos siempre) para validar nuestra identidad. Y finalmente nos va a permitir elegir para uqe aplicación y/o dispositivo queremos activarla (se puede crear nuevos) y nos devolverá una contraseña que no requiere el 2 factor&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Z5jr1yRh/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Estas contraseñas son muy útiles para aplicaciones como &lt;strong&gt;gnome-accounts&lt;/strong&gt;, o &lt;strong&gt;clientes de correo&lt;/strong&gt;, entre otros, para evitar constantemente el chequeo del 2 factor. Aun así hay que entender que esto es peligroso dado que si una contraseña se filtra permitiría a cualquier loguearse sin necesidad del 2 factor.&lt;/p&gt;
&lt;p&gt;Sin embargo, en el mismo lugar de la web de seguridad podemos borrar contraseñas que ya no creamos seguras o que ya no utilicemos para mantenernos más seguros&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/QMtpsx9K/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>MacOS ¿Se parece mas a GNU/Linux o a Windows?</title><link>https://patojad.com.ar/post/2022/06/macos-se-parece-mas-a-gnu-linux-o-a-windows/</link><pubDate>Tue, 07 Jun 2022 10:41:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/06/macos-se-parece-mas-a-gnu-linux-o-a-windows/</guid><description>&lt;p&gt;Ya hace tiempo, me es más difícil crear contenido, a medida que aumentan las responsabilidades es mucho más difícil hacerse un tiempo para poder escribir o grabar. Sin embargo sigo con este método de tomar preguntas de diferentes lugares y responder o tomarla como disparador para hablar de algún tema. En este caso la pregunta es la siguiente:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/pL5xYCPM/Screenshot-20220504-202955-Facebook-1.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="vídeo"&gt;
Vídeo
&lt;a href="#v%c3%addeo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Sin embargo la respuesta puede llegar a ser un poco… “simple” por lo cual no solo muestro un poco como funciona el sistema de instalación y los paquetes en MacOS pero también aprovechamos para hablar de algunos temas interesantes para el mundo de linux.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/K5UM_BoszTE?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Gracias por estar acá, si no es molestia te pido un ultimo favor mas, podrias unirte a la comunidad de telegram o apoyarme suscribiendote a youtube o a Odysee, es completamente gratis y vale muchisimo.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="appimage-vs-flatpack-vs-snap"&gt;
AppImage vs Flatpack vs Snap
&lt;a href="#appimage-vs-flatpack-vs-snap" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien esto se merece su propia publicación y probablemente lo tenga, de momento voy a dejar una lista con la comparación sobre estas 3 “tecnologías”&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Característica&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;AppImage&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Snap&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Flatpak&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Aplicaciones de escritorio&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Herramientas de terminal&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Servicios&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Aplicación correcta de temas&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Librerías y dependencias&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;En la propia imagen&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;En la propia imagen o con complementos&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Uso de runtimes de las librerías principales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Soporte&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Ninguno&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Canonical&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Red Hat y otros&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Sin confinamiento&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Puede utilizar diferentes confinamientos&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No (solo AppArmor)&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No (solo Bubblewrap)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Ejecutable&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No . Necesita instalación&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No . Necesita instalación&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Sin root&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No. Necesita root para instalar.&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No. Necesita root para instalar.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Ejecutable desde comprimido&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Repositorio central&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;AppImageHub&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;SnapCraft&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;FlatHub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Necesita repositorio&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Repositorios individuales&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Multiples versiones en paralelo&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Mecanismo de actualización&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;AppImageUpdate&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Repositorio&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Repositorio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Actualizaciones incrementales&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Autoactualizaciones&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Aplicación en disco comprimida&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;LibreOffice 6.0.0&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;200 MB&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;200 MB&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;659 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;</description></item><item><title>NVIDIA Libera sus drivers ¿Una amistad con el Software Libre?</title><link>https://patojad.com.ar/post/2022/05/nvidia-libera-sus-drivers-una-amistad-con-el-software-libre/</link><pubDate>Thu, 12 May 2022 08:10:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/05/nvidia-libera-sus-drivers-una-amistad-con-el-software-libre/</guid><description>&lt;p&gt;Al inicio del año, los primeros días de marzo de este año mientras yo me adaptaba a mi recién nacido hijo, por otra parte del mundo unos hackers se decidieron por hackear nvidia.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;El grupo LAPSUS$ se atribuyó el ataque que les permitió extraer 1 TB de datos confidenciales. Si no se cumplen las dos condiciones que piden, aseguran que filtrarán todo este 4 de marzo&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Esto de una forma u otra se fue olvidando al pasar el tiempo. Y la emoción de a poco fue mermando. Sin embargo hace 3 días que tenemos disponible los drivers OpenSource de Nvidia publicados en GitHub. Y ya podemos instalarlos, forkearlos, mirarlos, etc.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is the source release of the NVIDIA Linux open GPU kernel modules, version 515.43.04.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Así se anuncia en su propio git la versión actual que es la 515.43.04&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/NVIDIA/open-gpu-kernel-modules" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Ir al GIT
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;También podemos ver su anuncio oficial (realizado el 11 de mayo) Donde nos dan mucha más información sobre su instalación, sus funcionalidades, su contribución, etc.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://developer.nvidia.com/blog/nvidia-releases-open-source-gpu-kernel-modules/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Ir al Blog de NVIDIA
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="vídeo"&gt;
Vídeo
&lt;a href="#v%c3%addeo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Te dejo un pequeño video sobre mi análisis del caso y un poco resumida la historia, también sumando un poco del contexto actual que promete poner varias cartas a favor de GNU/Linux&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/FZA1VfMaP94?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Gracias por estar acá, si no es molestia te pido un ultimo favor mas, podrias unirte a la comunidad de telegram o apoyarme suscribiendote a youtube o a Odysee, es completamente gratis y vale muchisimo.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;¿Puede entonces volverse ahora la mejor opción para linux las NVIDIA? esto lo vamos a ir viendo en no mucho tiempo.&lt;/p&gt;</description></item><item><title>¿La mejor distro para la gente de sistemas?</title><link>https://patojad.com.ar/post/2022/05/la-mejor-distro-para-la-gente-de-sistemas/</link><pubDate>Tue, 03 May 2022 13:18:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/05/la-mejor-distro-para-la-gente-de-sistemas/</guid><description>&lt;p&gt;Esta es una pregunta que me hicieron muchas veces compañeros de la facultad apoyándose en mi “fanatismo” sobre linux. Sin embargo siempre fui dando respuestas diferentes dependiendo del estadio de mi vida en el que estaba. Sin embargo, después de mucho camino transitado forme un pensamiento más centrado en la experiencia.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/tEWDS29KvBM?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;¿Vos qué pensas? Si estás en sistemas ¿Que distro usas?¿Por qué?&lt;/p&gt;</description></item><item><title>Bottles ¿Lo mejor de wine?</title><link>https://patojad.com.ar/post/2022/04/bottles-lo-mejor-de-wine/</link><pubDate>Tue, 12 Apr 2022 08:47:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/04/bottles-lo-mejor-de-wine/</guid><description>&lt;p&gt;Tras lo charlado la semana anterior en &lt;a href="https://patojad.com.ar/post/2022/04/usar-wine-o-emular/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
¿Usar Wine o Emular?
&lt;/a&gt; se disparó una pregunta sobre si bottles era recomendable o perjudicaba el trabajo de wine. ¿Si es tan bueno algo malo debe tener? fue una de las dudas que planteaban por lo cual decidí charlar un poco de este tema.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En el video hablo sobre nuestro amigo Zatiel del cual &lt;strong&gt;puedes ver su canal en la sección de sitios amigos&lt;/strong&gt; y te dejo el &lt;a href="https://clips.twitch.tv/IncredulousPiercingBubbleteaRickroll-CAbDyyKFPB6Ulww2?tt_content=url&amp;amp;tt_medium=clips_api" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
link al clip
&lt;/a&gt; donde realiza el reclamo por no estar accidentalmente en esta sección&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/nWNe8Dr0a8w?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;No te olvides de comentar que es lo que pensas sobre el tema y de dar temas para refleccionar&lt;/p&gt;</description></item><item><title>¿Usar Wine o Emular?</title><link>https://patojad.com.ar/post/2022/04/usar-wine-o-emular/</link><pubDate>Mon, 04 Apr 2022 11:53:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/04/usar-wine-o-emular/</guid><description>&lt;blockquote&gt;
&lt;p&gt;¿Porque siempre hablan del uso de wine y porque no el uso de una máquina virtual con windows para el uso de programas o juegos? ¿Qué inconvenientes tendría el uso de cualquiera de estos?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/wT3V7DXh/photo-2022-04-04-08-11-27-2.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En base a estas preguntas de un usuario en la red social de Facebook nace este video que intenta exponer las pro y contras&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/Cdqy0e2PB40?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;No te olvides de comentarnos qué es lo que pensas vos y apoyarnos uniéndote a nuestras comunidades y suscribiéndote al canal.&lt;/p&gt;</description></item><item><title>La red Social de los Linuxeros</title><link>https://patojad.com.ar/post/2022/03/la-red-social-de-los-linuxeros/</link><pubDate>Tue, 22 Mar 2022 10:41:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/03/la-red-social-de-los-linuxeros/</guid><description>&lt;p&gt;Muchos conocemos grandes redes sociales. Sin embargo los linuxeros siempre formamos una pequeña parte de estas y no tenemos tanta visibilidad. Simplemente tenemos algun grupo, o una página a la que seguimos y al resto de la red no les importa nuestras cosas “nerds”&lt;/p&gt;
&lt;p&gt;Sin embargo, existe una red social que es pura y exclusivamente para usuarios de Linux que nos permite conocer gente nueva en el ámbito y esto es realmente interesante. Por eso hoy vamos a hablar sobre Red Linux Click la red social para todos los linuxeros y linuxnautas…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sobre-la-red"&gt;
Sobre la red
&lt;a href="#sobre-la-red" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En la red contamos con grupos y páginas al igual que en la mayoría de las redes sociales. También cuenta con un sistema de microblogging que nos permite realizar publicaciones más extensas que un simple estado (los cuales también pueden tener multimedia como en otras redes sociales)&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/g0mrW8DJ/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Contamos con un chat donde podemos hablar con nuestros amigos (amigos a los cuales seguimos) Y como podemos ver en la imagen muchas secciones más interesantes para ir publicando y completando uniendonos todos…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="entrevista"&gt;
Entrevista
&lt;a href="#entrevista" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;No contentos con que Angel no tenga tiempo suficiente para seguir actualizando la red social le robamos unos minutos para que respondas algunas preguntas sobre la red. No existe mejor persona que el creador para transmitirnos todo lo que la red social significa.&lt;/p&gt;
&lt;p&gt;¿Porque creaste la red social?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Me Gustaba la idea de que hubiera una red Social, donde solo se hablara de tecnología, informática y Linux, no hubiera censura como en algunas otras redes, donde si publicas links o contenido informativo te suspenden.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿En que redes te inspiraste?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Aunque estas redes sean privativas, me gusto que fuera una red social como twitter y Facebook.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Cual crees que son las fortalezas de la red?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Lo de las fortalezas si que realmente no sé qué apoye a le red ahora, o fortalezca, pero creo que lo que fortalece a la red es el apoyo que nos hacen compartiendo en redes, y con las membresías que ayudan a pagar servicios de almacenamiento y servidores.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿En que se diferencian de las demas?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Realmente hay que verlo desde el punto de vista de los usuarios, seria mas fácil hacerle la pregunta a los usuarios, pero para mi la única diferencia es que es una comunidad sobre tecnología y sin censura.&lt;/p&gt;
&lt;p&gt;Una de las diferencias es que tenemos nuestra propia moneda virtual. Que puedes ganar fácilmente para usarla en la red.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Cual es el norte de la red social?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pues lo que buscamos es ser una gran comunidad, sobre tecnología y que no haya discriminación ni censura, que entre todos apoyemos la red y compartamos contenido.&lt;/p&gt;
&lt;p&gt;Unas de las formas que tenemos de que compartamos contenido, es los Blogs, pues en la red social todos los usuarios puedes crearse su propio blog y escribir post.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Algo mas que quieras agregar?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Por motivos de bloqueos por parte del gobierno y las operadoras de mi país, no es posible montarme mi propio servidor para alojar la red, y evitar gastos, por esos hemos recurridos a vps y Cloud.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-desarrollo"&gt;
El desarrollo
&lt;a href="#el-desarrollo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Actualmente cuenta con un cliente Web en su versión 1.1 y se encuentra en desarrollo una App para android que nos permitirá interactuar de una forma cómoda desde los dispositivos móviles (Aunque la web se adapta muy bien)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;#linux Regreso despues de un rato de inactividad, estaba crando la aplicacion movil, tratando de hacerla super ligera, y que pese poco.
Tambien haciendo mejoras de Seguridad aca en la Red #linuxclick
Bueno ya regrese, creo que para este fin de semana tenemos version 1.1 de Red LinuxClick y 1.0 de la app movil!!&lt;/p&gt;
&lt;p&gt;EDIT:
SE HA ACTIVADO LA AUTENTICACION EN DOS FACTORES, VAYAN HABILITENLA.&lt;/p&gt;
&lt;p&gt;SE HA CONFIGURADO INICIOS DE SESION DESCONOCIDOS&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;De esta forma Angel nos anunciaba las siguientes actualizaciones las cuales publicación original desde el &lt;a href="https://redlinuxclick.ml/post/120_linux-regreso-despues-de-un-rato-de-inactividad-estaba-crando-la-aplicacion-mov.html" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
siguiente link
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Te invitamos a conocer esto y todas las opciones increíbles que contiene esta hermosa red social registrándote y conociéndola por tu propia cuenta.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://redlinuxclick.ml/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Registrarme
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>¿El mejor sistema para programar?</title><link>https://patojad.com.ar/post/2022/02/el-mejor-sistema-para-programar/</link><pubDate>Fri, 11 Feb 2022 11:56:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/02/el-mejor-sistema-para-programar/</guid><description>&lt;p&gt;En esta oportunidad vamos a hablar sobre esta pregunta que me han hecho muchas veces. Si bien soy un usuario recurrente de GNU/Linux voy a ser lo más imparcial. De todas formas queda sobreentendido que es mi opinión en base a mi experiencia. Pero como aclaró durante todo el video donde doy mi opinión &lt;strong&gt;SE PUEDE PROGRAMAR EN CUALQUIER SISTEMA OPERATIVO&lt;/strong&gt;&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/JVytOtBPKDI?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;hr&gt;
&lt;p&gt;Recorda apoyarnos en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona como vos.&lt;/p&gt;</description></item><item><title>Instalar Preload en Arch</title><link>https://patojad.com.ar/post/2022/02/instalar-preload-en-arch/</link><pubDate>Thu, 03 Feb 2022 09:22:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/02/instalar-preload-en-arch/</guid><description>&lt;p&gt;Preload es una aplicación que toma estadísticas de nuestro uso de aplicaciones y precarga en memoria todas aquellas que más usamos al prender el equipo. Gracias a esto podemos ver una fluidez más amplia al abrir estas aplicaciones. Y a costa de esta fluidez nuestro sistema inicia con más memoria RAM ocupada. Muchos se debaten si esta técnica es útil o no y por eso te dejo primero un video con mi postura sobre esto.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/HVCqSfdTdUs?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Dejando aclarada mi postura de más está decir que cualquier postura con fundamentos es válida y si preferís no ocupar RAM te recomiendo que no instales &lt;strong&gt;Preload&lt;/strong&gt; aunque vas a perderte la fluidez adicional que esto nos da.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En el siguiente video vemos como se realiza la instalación de preload (con yay en mi caso pero podes usar tu gestor favorito) y cómo habilitarlo en cualquier base &lt;strong&gt;Arch&lt;/strong&gt; con &lt;strong&gt;SystemD&lt;/strong&gt; y también en &lt;strong&gt;Artix&lt;/strong&gt; con &lt;strong&gt;OpenRC&lt;/strong&gt; (En esta oportunidad no use &lt;strong&gt;Runit&lt;/strong&gt; pero con una búsqueda simple podes adaptarlo)&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/6NoYA9Rtp2s?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="código"&gt;
Código
&lt;a href="#c%c3%b3digo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A continuación dejo los comandos utilizados para que sea más simple copiar y pegar…&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S preload&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="systemd"&gt;
SystemD
&lt;a href="#systemd" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;En el caso de usar distros con SystemD se habilita de la siguiente manera. Recuerda que esto nos pedirá la contraseña&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; preload&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="openrc"&gt;
OpenRC
&lt;a href="#openrc" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;En el caso de estar en &lt;strong&gt;Artix&lt;/strong&gt; (con &lt;strong&gt;OpenRC&lt;/strong&gt;) debemos crear el archivo del demonio de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nano /etc/init.d/preload&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Y dentro del archivo debemos poner lo siguiente:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;cfg&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cfg" data-lang="cfg"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#!/sbin/openrc-run&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/usr/bin/preload&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;command_args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;$PRELOAD_OPTS&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;command_args_foreground&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;--foreground&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Esto lo guardamos y a continuación le damos permisos al archivo para poder iniciar el proceso.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chmod &lt;span class="m"&gt;777&lt;/span&gt; /etc/init.d/preload&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-yellow-600/75 text-yellow-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-warning fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;OJO no es recomendable usar 777 para los permisos de este archivo, es una mala practica que hago personalmente para hacer pruebas, lo ideal es ponerle el mismo permiso que tienen el resto de los archivos en el folder /etc/init.d&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Y por último podemos inicializar el proceso de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rc-service preload start&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Instalar PARU y YAY</title><link>https://patojad.com.ar/post/2022/01/instalar-paru-y-yay/</link><pubDate>Thu, 27 Jan 2022 15:12:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/01/instalar-paru-y-yay/</guid><description>&lt;p&gt;Ya hablamos con anterioridad sobre &lt;a href="https://patojad.com.ar/aplicaciones/2022/01/paru-vs-yay-cual-elegir/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
PARU y YAY
&lt;/a&gt;. En esa oportunidad di mi opinión sobre cuál deberíamos elegir, aunque esto siempre es a gusto y placer de la persona que lo utilice. Por eso en esta oportunidad vamos a ver la manera más simple de instalar ambas aplicaciones.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="requisitos-previos"&gt;
Requisitos previos
&lt;a href="#requisitos-previos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Para poder realizar la instalación tenemos unos requisitos previos para que todo salga mas que bien, te dejo a continuación ambos links que explicaran como hacer esto (El primero no es obligatorio pero está bueno saber cual elegir antes de instalar alguno)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/aplicaciones/2022/01/paru-vs-yay-cual-elegir/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Paru VS YAY ¿Cual elegir?
&lt;/a&gt; (Opcional)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2022/01/instalar-chaotic-aur/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Instalar Chaotic AUR
&lt;/a&gt; (Obligatorio)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Claramente siempre genero un pequeño video para poder ser un poco más gráfico, de todas formas en la parte inferior voy a dejar los comandos utilizados. Es muy importante tener los repositorios de chaotic para poder instalarlo de esta manera.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/DF8IAz5WoXg?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Si el video te sirvió pegale una subscribirda al canal que es muchísimo apoyo y es totalmente gratuito.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="comandos"&gt;
Comandos
&lt;a href="#comandos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Para la instalación de yay:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Sy yay&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Para la instalación de paru:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Sy paru&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;En caso de que vayamos a instalar los 2 podemos hacerlo de una sola vez usando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Sy yay paru&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Para desinstalar yay:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Rs yay&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Para desinstalar paru:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Rs paru&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Para desinstalar ambos:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Rs yay paru&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Instalar Chaotic AUR</title><link>https://patojad.com.ar/post/2022/01/instalar-chaotic-aur/</link><pubDate>Wed, 12 Jan 2022 09:45:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/01/instalar-chaotic-aur/</guid><description>&lt;p&gt;Chaotic es un repositorio que busca traer los paquetes de AUR, o al menos los de mayor uso desde el punto de vista del creador, para administrarlos de forma simple con pacman. Sin tener que instalar los AUR ni configurarlos y mucho menos usar los AURHelpers. Estos son algunos de los detalles a tener en cuenta sobre Chaotic:&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/vZr3rN4_ZDc?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;ul&gt;
&lt;li&gt;La mayoría de los paquetes disponibles en este repositorio se crean automáticamente a partir de su paquete fuente AUR respectivo. Sin embargo, hay algunas excepciones, consulte &lt;a href="https://github.com/chaotic-aur/packages" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
https://github.com/chaotic-aur/packages
&lt;/a&gt; para averiguar cuáles.&lt;/li&gt;
&lt;li&gt;El clúster de construcción principal es un nodo en el centro de datos de UFSCars que está alojado en San Carlos, San Paulo, Brazil.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comandos"&gt;
Comandos
&lt;a href="#comandos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En el video muestro como se realiza y que podemos ver el resultado dentro de nuestros repositorios en &lt;strong&gt;pacman&lt;/strong&gt; por esto mismo voy a dejar a continuación los comandos.&lt;/p&gt;
&lt;p&gt;Instalación o descarga de las Key del repositorio para chequear los paquetes:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacman-key --recv-key FBA220DFC880C036 --keyserver keyserver.ubuntu.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacman-key --lsign-key FBA220DFC880C036&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Instalación de los paquetes con pacman (En el video los instalo por separado, sin embargo el comando de abajo los instala a los dos juntos)&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacman -U &lt;span class="s1"&gt;&amp;#39;https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst&amp;#39;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Por último tenemos que agregar el repositorio en la configuración de pacman. Para esto debemos editarla con permisos de administrador, por ejemplo de la siguiente manera &lt;code&gt;sudo nano /etc/pacman.conf&lt;/code&gt; y agregamos lo siguiente en la sección de repositorios:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;cfg&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cfg" data-lang="cfg"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[chaotic-aur]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Include&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;/etc/pacman.d/chaotic-mirrorlist&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="recomendaciones"&gt;
Recomendaciones
&lt;a href="#recomendaciones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Las siguientes recomendaciones son propias de los desarrolladores de &lt;strong&gt;ChaoticAUR&lt;/strong&gt; con alguna que otra modificación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si sos usuario de powerpill y queres usarlo para realizar todas las descargas desde todos los mirrors se recomienda realizar la actualización de la siguiente manera:
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Sy &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo powerpill -Su &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; paru -Su&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
Asegúrese de insertar todos los espejos en su pacman.conf o use caotic-mirrorlist con todos ellos activos si usa powerpill.&lt;/li&gt;
&lt;li&gt;Si está utilizando otros repositorios de terceros, le recomendamos que coloque Chaotic-AUR antes que ellos en &lt;code&gt;/etc/pacman.conf&lt;/code&gt;. Dado que actualizamos la mayoría de los paquetes cada hora y seguimos los &lt;code&gt;PKGBUILD&lt;/code&gt; de &lt;strong&gt;AUR&lt;/strong&gt;, este repositorio es más adecuado como primera opción al descargar paquetes.&lt;/li&gt;
&lt;li&gt;Si necesita omitir la actualización de un paquete para usar las creadas localmente (por ejemplo, con optimizaciones nativas), puede agregar &lt;code&gt;'IgnorePkg = ...'&lt;/code&gt; a la sección del repositorio en &lt;code&gt;/etc/pacman.conf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Puede elegir el repositorio desde el que descargar un paquete de esta manera: &lt;code&gt;pacman -S chaotic-aur/dxvk-mingw-git&lt;/code&gt;. Algunos ayudantes de AUR también lo admiten, por ejemplo: &lt;code&gt;paru -S aur/firefox-hg&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="w-full rounded-xl bg-yellow-600/75 text-yellow-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-warning fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Debe tener habilitado el repositorio multilib.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Adiós PopCorn Time</title><link>https://patojad.com.ar/post/2022/01/adi%C3%B3s-popcorn-time/</link><pubDate>Wed, 05 Jan 2022 12:01:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/01/adi%C3%B3s-popcorn-time/</guid><description>&lt;blockquote&gt;
&lt;p&gt;The Times They Are a-Changin&amp;rsquo;. Popcorn Time, en su día un gigante del streaming y las descargas, ha anunciado su cierre. El mensaje de la plataforma es claro: el interés en los últimos años en Popcorn Time ha ido cayendo hasta prácticamente desaparecer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Muchos usamos Popcorn alguna vez, y muchos podemos seguir instalandolo desde los repositorios oficiales de las distros. Sin embargo, si entramos en su sitio web podemos ver que ellos ya se están despidiendo y podemos verla con esta foto que también podemos ver en su web.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/59Bw6R2C/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;O que podemos verlo directamente ingresando en su &lt;a href="https://popcorn-time.tw/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
web
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="adiós-para-siempre"&gt;
¿Adiós para siempre?
&lt;a href="#adi%c3%b3s-para-siempre" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente el proyecto fue abandonado, perseguido, y dado de baja, por lo cual siempre es posible que vuelva a realizarse un fork y revivir el proyecto, pero a esto deberemos esperar novedades.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/01af3a/popcorn-time-timeline/1366_2000.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>Paru VS YAY ¿Cual elegir?</title><link>https://patojad.com.ar/post/2022/01/paru-vs-yay-cual-elegir/</link><pubDate>Mon, 03 Jan 2022 09:22:00 +0000</pubDate><guid>https://patojad.com.ar/post/2022/01/paru-vs-yay-cual-elegir/</guid><description>&lt;p&gt;Es común que al utilizar cualquier distribución basada en Arch (Artix, endeavour, manjaro, etc) queramos usar los AUR dado que ahí disponemos de una cantidad de paquetes increíbles. Y a la hora de usarlo podemos elegir entre múltiples AUR Helpers. En esta oportunidad vamos a hablar de 2 de estos. El conocido YAY que lleva mucho tiempo con nosotros. Y el no tan nuevo PARU que llega con una propuesta interesante para los amantes de los AUR.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="comparación"&gt;
Comparación
&lt;a href="#comparaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;YAY está escrito en GO un lenguaje de programación que tiene una fácil lectura y es extensible. Una gran ventaja es que su compilación es realmente rápida y muy simple. Toma como inspiración yaourt, apacman y pacmaur. Paru, en cambio, está escrito en Rust y toma como inspiración a YAY por lo cual es muy simple de migrar de uno a otro.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/xTvdwb1M/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si bien YAY es mucho más popular y tiene una comunidad mucho más grande, actualmente paru es, por no mucho, más activo. Lo cual supone ser una ventaja, sin embargo, para los usuarios finales esto no afecta en gran cantidad. Sin embargo una de las diferencias que note es que paru es, efectivamente, más rápido que YAY. Lo cual es útil si tenemos equipos de pocos recursos. Sin embargo, en lo personal creo que yay tiene una sintaxis más feliz que paru. Es más simple y rápido escribir yay, incluso para autocompletar. Sin embargo, paru puede volverse un poco tosco y molesto.&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Codigo Fuente&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Revision de Archivos&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Diff&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;GIT&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Shells&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Paru&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;GO&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;bash, fish, zsh&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;YAY&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Rust&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Si&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;bash, fish, zsh&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="mi-opinión"&gt;
Mi Opinión
&lt;a href="#mi-opini%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Personalmente le veo mucho potencial a paru, pero no ofrece nada muy diferente a otros. Y siento la sintaxis un tanto incómoda, sin embargo, es recomendable para equipos que son bastantes lentos porque en esa circunstancia es muy provechoso el tiempo que optimiza y nos permite aprovechar mejor los recursos.&lt;/p&gt;
&lt;p&gt;Yo me voy a quedar con yay, al menos de momento pero me gustaría saber tu opinion y analisis sobre estas dos apps&lt;/p&gt;</description></item><item><title>Reflexión: SOFTWARE LIBRE, PANDEMIA y RECURSOS</title><link>https://patojad.com.ar/post/2021/12/reflexi%C3%B3n-software-libre-pandemia-y-recursos/</link><pubDate>Wed, 15 Dec 2021 09:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/12/reflexi%C3%B3n-software-libre-pandemia-y-recursos/</guid><description>&lt;p&gt;¿Cuánto hace que pensaste en cambiar tu pc o notebook por una más “potente”? Estamos entrando de lleno a una etapa donde la obsolescencia programada se debe llevar al máximo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-ahora"&gt;
¿Por qué ahora?
&lt;a href="#por-qu%c3%a9-ahora" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La pandemia ha dejado trastabillando la economía mundial y la tecnología no puede quedar exenta. De todas formas el concepto de la &lt;a href="https://es.wikipedia.org/wiki/Obsolescencia_programada" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
obsolescencia programada
&lt;/a&gt; data de mucho antes, basta con acceder a Wikipedia para comprender el concepto.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="pero-con-la-demanda-en-comunicaciones-es-tan-así"&gt;
Pero con la demanda en comunicaciones ¿es tan así?
&lt;a href="#pero-con-la-demanda-en-comunicaciones-es-tan-as%c3%ad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;¡Claro que sí! Es el momento ideal para aumentar la dependencia a los estándares propuesto por los monopolios informáticos (implícitos) como Microsoft y Apple. Las Actualizaciones automáticas están al orden del día, de seguro ni te has dado cuenta de que tu sistema se actualiza bajando toneladas de información de internet; además de consumir ancho de banda, te modifica el sistema sin tu autorización generando una carga (por lo general) innecesaria de los componentes y adelantando el reloj para acercarse a su momento de recambio y reduciendo continuamente la utilización libre de los recursos. En otras palabras, acercarse a la fecha de vencimiento que estas corporaciones consideran óptima para que compres equipamiento más nuevo: sería comercialmente inútil un foco que nunca se queme.&lt;/p&gt;
&lt;p&gt;De este modo te llevan al recambio por equipos más nuevos que soporte la sucesión de parches de actualización de sistema para garantizar un sistema relativamente estable, ya que al ser un software donde no se conoce su “receta” son muy pocos los que están encargados de programarlo eficientemente.&lt;/p&gt;
&lt;p&gt;Es inevitable que las necesidades vayan en aumento; la diferencia está en identificar cuáles son necesidades y cuáles son propaganda, estas son las “magias” del software privativo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-salida-tenemos"&gt;
¿Qué salida tenemos?
&lt;a href="#qu%c3%a9-salida-tenemos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Después de 20 años usando sistemas libres, puedo creer que cerca del 99% (por no decir 100%) de las funciones que realiza la inmensa mayoría de usuarios de pc y notebook, pueden llevarse a cabo con una de las miles de distribuciones de GNU/Linux disponibles de forma totalmente gratuita.&lt;/p&gt;
&lt;p&gt;Con actualización prácticamente, no hay “Linux viejos”. Todas las actualizaciones están al alcance de un clic si así lo deseamos, desarrolladas por las comunidades de programadores de miles de miembros.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="linux-es-difícil"&gt;
“Linux es difícil”
&lt;a href="#linux-es-dif%c3%adcil" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;No debe haber falacia más garrafal que la expresada en la frase anterior. De hecho, hoy por hoy, utilizar GNU/Linux no demanda más conocimiento que utilizar cualquier versión de Windows: hay tantas distribuciones como necesidades.
En internet hay infinidad de información, foros o wikis de acceso totalmente gratuito, por la sencilla razón de que el funcionamiento de dicho sistema está abierto a la comunidad. No hay “secretos” ya que se puede acceder a su código fuente, es decir, se tiene libre acceso a la “receta”: se conoce cómo está HECHA la torta, además de saber cómo COMERLA.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-es-impopular-linux"&gt;
¿Por qué es “impopular” Linux?
&lt;a href="#por-qu%c3%a9-es-impopular-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Partamos de la base de que la supuesta impopularidad de Linux es otra mentira. El sistema operativo más popular del mundo está basado en el código abierto Linux. Android es una distribución basada en Linux, de modo que es otra falacia decir que es impopular, así como también teniendo en cuenta que el 60% de servidores en el mundo utilizan GNU/Linux.&lt;/p&gt;
&lt;p&gt;Puede ser que en el sentido de uso domiciliario en ordenadores sea “impopular”, pero debemos tener en cuenta que la inmensa mayoría de pc vienen con sistema operativo OEM de Windows, es decir que vienen con una licencia limitada en el tiempo que después debes pagar para seguir usando. También es verdad que vienen parches piratas para sortear estas “trabas legales”, pero lo más grave no es la ilegalidad del parche, sino la imposibilidad de disponer plenamente del equipamiento adquirido, de no tener control, y sobre todo de que la información de cada usuario viaja a internet sin su consentimiento.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-seguridad-tengo-de-que-con-linux-no-pase-eso"&gt;
¿Qué seguridad tengo de que con Linux no pase eso?
&lt;a href="#qu%c3%a9-seguridad-tengo-de-que-con-linux-no-pase-eso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;De hecho es sabido, como se menciona antes, que es un sistema de código abierto: todo el que desee puede acceder a la “receta”, para saber cómo funciona; de ahí que si se quiere hacer algo indebido, van a haber miles de programadores que van a estar advirtiendo esto. Ya pasó con una distribución llamada Deepin, muy criticada por la comunidad por &lt;a href="https://www.muylinux.com/2018/04/13/acusan-deepin-spyware/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
filtrar información de los usuarios
&lt;/a&gt; supuestamente para “optimizar su experiencia”.&lt;/p&gt;
&lt;p&gt;Sin embargo no pasa lo mismo con Windows, cualquier empresa que desee obtener información sobre conductas de los usuarios puede adquirir las bases de datos generadas por sistemas cerrados, porque por eso son cerrados &lt;em&gt;(seamos honestos, de los usuarios domiciliarios, ¿quien ha comprado licencia de uso de Windows?, el negocio va por otro lado… eejemmmm, Facebook….)&lt;/em&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="en-tiempos-de-pandemia"&gt;
En tiempos de Pandemia
&lt;a href="#en-tiempos-de-pandemia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si de algo sirvió este período de aislamiento preventivo (cada vez más desvalorado) fue para profundizar y dejar de manifiesto la disparidad en la posibilidad del acceso a recursos, sea cual fuera su origen.
En este caso, la tecnología es un recurso que, además de que su demanda ha ido en aumento, ha ganado jerarquía dentro de las prioridades de la vida cotidiana. Junto a ella, el acceso a la conectividad y la posibilidad de utilizarla. Esto ha acentuado la brecha entre quienes tienen acceso regular a estos recursos y pueden “actualizarse” y quienes no, limitando así su proyección como individuos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-estamos-planteando"&gt;
¿Qué estamos planteando?
&lt;a href="#qu%c3%a9-estamos-planteando" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;“Qué ‘Viejos’ son los trapos” (algunos)&lt;/li&gt;
&lt;li&gt;Que hoy por hoy una máquina (notebook o pc) de unos 10, 12 o hasta 15 años de antigüedad puede desempeñarse sin problemas para el 90% de las tareas domésticas o escolar.&lt;/li&gt;
&lt;li&gt;Que es posible romper las esposas digitales impuestas por las corporaciones monopólicas.&lt;/li&gt;
&lt;li&gt;Que disponemos plenamente de nuestros recursos y es posible optimizarlos sacándoles mejor y más provecho sin tener que seguir gastando dinero extra innecesariamente.&lt;/li&gt;
&lt;li&gt;Que las libertades no solo deben ser físicas: las digitales están siendo manoseadas, sin saberlo, y no debemos permitirlo.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;hellip;Por la emancipación digital, ¡arriba la lucha del software libre!&amp;hellip;&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Post Install Void Linux</title><link>https://patojad.com.ar/post/2021/12/post-install-void-linux/</link><pubDate>Tue, 14 Dec 2021 09:45:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/12/post-install-void-linux/</guid><description>&lt;p&gt;Es muy importante contribuir con la comunidad, siempre digo que cada cosa que arme uno debe ser dada a conocer, nadie sabe realmente cómo puede ayudar a otros usuarios y más en caso como vamos a verlo hoy.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="historia"&gt;
Historia
&lt;a href="#historia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ayer mientras volvía a mi casa me llegó un mensaje en telegram. No es normal que reciba privados de gente que no conozco, a no ser que alguien quiera presentar una oportunidad de negocio piramidal increible. Claramente me llamó la atención porque no hablaba de eso. Y al leer un poco una sonrisa se dibujó en mi rostro.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hola pato como andas?, disculpa el atrevimiento, estuve jugando un poco con void, y levante un post-instalación muy sencillo, te lo paso por si te interesa chusmearlo&amp;hellip;
La idea es que se conozca esta gran distribución, a mi me sirve mucho y por ahí hay gente que todavía no la conoce y le puede ser muy útil, sobre todo por lo ágil que parece para equipos viejos.
Eso es lo que me llevó a hacer este &amp;ldquo;asistente&amp;rdquo;, desde ya que para correrlo se requiere mínimamente instalar git después del primer logueo pero no creo que sea demasiado complejo para que lo puedan hacer.&lt;/p&gt;
&lt;p&gt;Te paso mi gitlab por si te interesa mirarlo y cualquier sugerencia será más que bienvenida, desde ya muchas gracias te mando un saludo!!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Imaginense para cualquier persona amante de la tecnología recibir un mensaje así, donde un usuario detecta un potencial problema y lo soluciona para simplificar a todos los usuarios la post-instalación de una distro.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="void"&gt;
Void
&lt;a href="#void" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Void es una distro de linux indie, bastante interesante, cuenta con su propio administrador de paquetes y una filosofía interesante. En lo personal no genere contenido para void porque aun siento que esta medio verde, y puede llegar a dar algún volantazo desde mi apreciación. Si bien la distro es completamente estable siento que todavía están terminando de tomar algunas decisiones.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://voidlinux.org/assets/screenshots/mate-desktop-xtraeme.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Dicho esto, creo que es realmente una distro para equipo de pocos recursos. Si hay algo que aprendemos en linux es que “mientras más decisiones tengamos que tomar, mejor es la calidad final” por lo cual sabemos que a diferencia de Antix esta distro es mucho más fluida, incluso que Artix que le da muchas vueltas a Antix.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-script"&gt;
El script
&lt;a href="#el-script" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente no realice muchas pruebas al script, simplemente verifique que lo pueda usar y eso es más que mucho para el poco tiempo que lo tuve conmigo. Pero creo que es una propuesta interesante a la que muchos podemos contribuir para que crezca y se adapte mejor.&lt;/p&gt;
&lt;p&gt;Sin embargo quería saber porque a este usuario (Adolfo David Mauro) se le ocurrió crear este interesante script y su respuesta fue esta.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Desde que descubrí que podía hacer andar mi pc sin depender de windows fue un gusto enorme, desde que probé mandrake linux hace como 20 años más o menos&amp;hellip; Mi idea siempre fue tratar de acercar la informática a la mayor cantidad de gente posible&amp;hellip; Más que nada acercarles posibilidades&amp;hellip; La idea era encender la curiosidad de pensar fuera del marco de Windows&amp;hellip; De que no salgan corriendo a comprar equipo nuevo xq no podían correr el ultimo windows&amp;hellip; creo que un poco todos vimos con buenos ojos eso.&lt;/p&gt;
&lt;p&gt;Luego empecé a ver que no solo servía para rescatar equipos &amp;ldquo;viejos&amp;rdquo; sino que realmente era mejor por lo menos para lo que yo lo precisaba&amp;hellip;&lt;/p&gt;
&lt;p&gt;Siempre con idas y vueltas entre la familia el trabajo la música y linux, cuando empezamos con la pandemia y ante la necesidad de conectividad y la insuficiencia de recursos de algunos sectores a acceder a equipos para hacer las tareas escolares, empecé en mi ciudad a ver cómo rescatar equipos en desuso y poder hacer algo con esos para devolverlos a quien lo necesite con un S.O. Funcional básico para poder estudiar&amp;hellip;. Primero pensé en debian salieron algunos&amp;hellip; y me quede con la idea de seguir optimizando hasta q llegue a void, para mi más ágil que arch, asi que empece por eso&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Imaginense ver esto, La necesidad del script es completamente auténtica, era solo una pequeña parte de un proyecto mucho mayor, donde llevar GNU/Linux no era el fin, era el medio para que muchos jóvenes pudieran estudiar. Y esta es la forma más auténtica de predicar el uso de GNU/Linux, llevándolo como solución a los problemas actuales.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La verdad que le meto muchísima ficha al open source, es casi una cuestión de militancia jajaja, hay quienes comparten y quienes no&amp;hellip; Yo creo que mezquinando info o desarrollos por miedo a que &amp;ldquo;nos lo roben&amp;rdquo; no vamos a ningún lado&amp;hellip; uno hace esto por que le gusta, nadie dice que no lo puedas vender es un laburo, pero mezquinar conocimiento me parece un poco bajo, por eso aplaudo el laburo de los youtubers que difunden la cultura del open source y trato de colaborar de alguna forma&amp;hellip;.&lt;/p&gt;
&lt;p&gt;Tanto tu canal como el de Nico, drivemeca&amp;hellip; han aportado tanto que uno quiere devolver de alguna forma esa info&amp;hellip;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Claramente Adolfo entendió todo, sabe que la idea de la libertad y el open source es compartir conocimiento, no que los desarrolladores no comamos y eso le suma a todo su proyecto la verdadera autenticidad del Software Libre.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="uso-del-script"&gt;
Uso del script
&lt;a href="#uso-del-script" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Luego de instalar VOID. Iniciar con el usuario estándar (NO ROOT)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Instalar Git&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo xbps-install -Sy git&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Clonar del repositorio el script&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://gitlab.com/davidmauroweb/mad-void_mate.git&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Entrar al subdirectorio&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; MAD-void_mate&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Dar permisos de Ejecución a MadVM.sh&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x MadVM.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Ejecutar el Script&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./MadVM.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Las opciones para seleccionar los paquetes a instalar se ingresan con números (solo una selección por pregunta). El script pide clave de usuario que pueda ejecutar comandos a través de SUDO esta clave puede pedirse de vuelta si entre cada ejecución de SUDO transcurre demasiado tiempo.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/davidmauroweb/mad-void_mate" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-gitlab" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Ver en GitLab
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>¿La función que no esta en GNU/Linux?</title><link>https://patojad.com.ar/post/2021/11/la-funci%C3%B3n-que-no-esta-en-gnu-linux/</link><pubDate>Sun, 28 Nov 2021 08:15:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/11/la-funci%C3%B3n-que-no-esta-en-gnu-linux/</guid><description>&lt;p&gt;El otro día leí un artículo de Genbeta que enuncia &lt;strong&gt;&lt;em&gt;&lt;a href="https://www.genbeta.com/windows/mi-funcion-favorita-windows-10-11-sigue-estar-linux-macos-asi-puedes-anadir-te-mejore-vida" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
“Mi función favorita de Windows 10 y 11 sigue sin estar en Linux y macOS”
&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;. Como desarrollador me llamó mucho la atención. Yo estoy seguro de que existen muchas funciones que no están disponibles en GNU/Linux y me gustaría poder portearlas. Sin embargo, este artículo, solo demuestra un poco de desconocimiento o descontento con GNU/Linux y no una realidad.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/d6b8bd/portapapeles-windows-11/1366_2000.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Habla básicamente, sobre el historial del portapapeles. Una funcionalidad que en KDE esta hace… ¿7 años aprox? Y debo decir que yo la descubrí ahí y si bien es muy interesante no me pareció la gran cosa.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-opinión-sobre-el-historial-del-portapapeles"&gt;
Mi opinión sobre el historial del portapapeles
&lt;a href="#mi-opini%c3%b3n-sobre-el-historial-del-portapapeles" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Esto es meramente mi punto de vista sobre esta funcionalidad que , más o menos deseada, es realmente útil. Sin embargo, pesa aclarar que la funcionalidad es realmente útil para casos específicos. Los usuarios más básicos de los sistemas operativos no recurren a estas funcionalidades que suelen ser bastantes escondidas (Más que nada en windows donde uno depende de un keybind para acceder). Esta funcionalidad existe, aunque no nativamente, en el resto de los escritorios de GNU/Linux y en MacOS, por lo cual cualquier usuario de estos sistemas que desee tenerlo puede hacerlo con una simple instalación y en el caso más complejo con una búsqueda en su navegador favorito.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://www.kdeblog.com/wp-content/uploads/2016/03/Klipper.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si bien ya mencione que no es unico tambien quiero dejar en claro que desde mi perspectiva no es una funcionalidad tan reveladora como para darle tanto peso, y muchos menos como para ponerse a desarrollar algo así, entiendo que existen más funcionalidades que son más interesantes.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-artículo-en-sí"&gt;
El artículo en sí
&lt;a href="#el-art%c3%adculo-en-s%c3%ad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Es verdad que el artículo es el punto de vista del escritor, tal como este artículo es mi punto de vista. Por lo cual no estoy diciendo que este mal, todo lo contrario, es muy bueno porque incluso al final del artículo aclara que se puede hacer en todos los sistemas operativos (lo cual se contradice con el título, pero quien no puso un título amarillista alguna vez)
Te invito a leer el artículo en cuestión y comentarme tu opinión.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.genbeta.com/windows/mi-funcion-favorita-windows-10-11-sigue-estar-linux-macos-asi-puedes-anadir-te-mejore-vida" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Articulo
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Como ingresar al BIOS si mi Linux enciende muy rápido</title><link>https://patojad.com.ar/post/2021/11/como-ingresar-al-bios-si-mi-linux-enciende-muy-r%C3%A1pido/</link><pubDate>Fri, 26 Nov 2021 08:25:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/11/como-ingresar-al-bios-si-mi-linux-enciende-muy-r%C3%A1pido/</guid><description>&lt;p&gt;Muchas veces ocurre que el sistema operativo, más que nada hablando de linux, inicia demasiado rápido y nos resulta completamente dificil ingresar a la BIOS, en esta oportunidad vamos a ver las posibles soluciones para poder ingresar a la BIOS cuando el inicio es tan rápido que resulta casi imposible con la tecla de inicio (suele ser supr f2 o f12) El problema de este método es que según la placa base que tengas la tecla puede ser una u otra. Aquí te resumo algunas de las más usuales:
General: la tecla Supr suele ser una de las habituales en muchos ordenadores para arrancar el BIOS Setup. Si no funciona esa y tienes un clónico, puedes optar también por probar estas otras: F1, F2, F10, y Esc. Seguramente sea alguna de ellas. Si no funciona ninguna de ellas, entonces observa la marca de placa base o de PC que tienes y prueba con las siguientes…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ASRock:&lt;/strong&gt; F2 o Supr&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ASUS:&lt;/strong&gt; F2, en algunos casos podría ser también Supr&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acer:&lt;/strong&gt; F2 o Supr, si tienes un equipo muy antiguo intenta F1 o la combinación Ctrl+Alt+Esc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dell:&lt;/strong&gt; F2 o F12&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ECS:&lt;/strong&gt; Supr&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gigabyte / Aorus:&lt;/strong&gt; F2 o Supr&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HP:&lt;/strong&gt; F10&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lenovo:&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portátiles:&lt;/strong&gt; F2 o Fn + F2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sobremesa:&lt;/strong&gt; F1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modelos ThinkPads:&lt;/strong&gt; INTRO y F1.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MSI:&lt;/strong&gt; Supr, en algunos casos podría ser F2.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microsoft Surface Tablets:&lt;/strong&gt; presiona y mantén pulsado el botón de volumen +&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Origin PC:&lt;/strong&gt; F2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Samsung:&lt;/strong&gt; F2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Toshiba:&lt;/strong&gt; F2, en raras ocasiones podría ser F1, F12 o Esc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zotac:&lt;/strong&gt; Supr&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sony:&lt;/strong&gt; en un VAIO debería ser F2 O F3, en otras ocasiones incluso F1.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="desde-la-terminal"&gt;
Desde la terminal
&lt;a href="#desde-la-terminal" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si tienes UEFI existe un comando que nos permite de una forma sencilla reiniciar la máquina y pedirle que arranque la BIOS directamente, recuerda que esto solo funciona con UEFI por lo cual si está instalado de modo Legacy no obtendremos buen resultado.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl reboot --firmware-setup&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Este metodo solo funciona con **SystemD**&lt;/p&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="pause-bios"&gt;
Pause BIOS
&lt;a href="#pause-bios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En la parte superior derecha del teclado tenemos un botón que dice pause, cuando iniciamos podemos tocarlo y va a pausar la BIOS en ese momento podemos tocar la tecla que nos permita entrar a la configuración y volver a tocar pause para que siga.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-hardcore"&gt;
El Hardcore
&lt;a href="#el-hardcore" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Supongamos que nada de esto te sirvió, la última manera es infalible pero un poco más incómoda. En este caso siempre podemos remover los discos y la bios quedará esperando. De esta forma es más simple configurarla.&lt;/p&gt;</description></item><item><title>Instalacion de Huayra Linux</title><link>https://patojad.com.ar/post/2021/11/instalacion-de-huayra-linux/</link><pubDate>Fri, 19 Nov 2021 08:53:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/11/instalacion-de-huayra-linux/</guid><description>&lt;p&gt;En esta oportunidad vamos a ver como instalar Huayra la mítica distribución de linux que me trajo a este mundo y me volvió un linuxnauta.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="huayra-en-un-pen-drive"&gt;
Huayra en un pen-drive
&lt;a href="#huayra-en-un-pen-drive" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Huayra Linux, como la mayoría de las distribuciones de linux, nos permiten probar el live desde un USB o PenDrive y ejecutar la instalación fácilmente desde ahí adentro. Para poder generar un pendrive con la iso de Huayra podemos usar los métodos tradicionales, sin embargo huayra nos ofrece un hermoso tutorial el cual voy a dejar a continuación.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://huayra.educar.gob.ar/pendrive-de-arranque-huayra-gnu-linux/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Crear pendrive con Huayra
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Claramente para este paso primero tenemos que descargar la ISO de Huayra y esto lo podemos hacer desde su página de descargas:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://huayra.educar.gob.ar/descargas/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar Huayra
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El proceso de instalación es realmente sencillo, particularmente preferí hacer un video donde se muestra gráficamente el proceso. Sin embargo para quienes no deseen ver el video dejare abajo la documentación creada por Huayra:&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/t-Mx2ZaPTP4?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;En el escritorio hacé doble clic en el icono “Instalar Huayra GNU/Linux”.
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://huayra.educar.gob.ar/wp-content/uploads/2021/04/In_huayra.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;NOTA IMPORTANTE: Algunas máquinas montan automáticamente el disco rígido, si en el escritorio aparece un ícono de una unidad de disco como el que se vé en la siguiente imagen marcado con un rectángulo rojo, necesitás “desmontar” la unidad para una correcta instalación.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/sfbYZDv7/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
&lt;strong&gt;Para desmontar la unidad tenés que hacer clic derecho sobre el ícono -&amp;gt; desmontar. Listo, ahora si podés continuar con la instalación haciendo clic en “Instalar Huayra GNU/Linux”.&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando inicia el instalador elegí el idioma y luego &lt;strong&gt;Siguiente&lt;/strong&gt;.
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://huayra.educar.gob.ar/wp-content/uploads/2021/04/Calamares.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Seleccioná tu ubicación y luego &lt;strong&gt;Siguiente&lt;/strong&gt;.
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://huayra.educar.gob.ar/wp-content/uploads/2021/04/3Ubicacion.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;En la configuración de teclado seleccioná “Spanish (Latin American)”.
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://huayra.educar.gob.ar/wp-content/uploads/2021/04/Teclado.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ahora debemos elegir dónde instalaremos Huayra 5.
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://huayra.educar.gob.ar/wp-content/uploads/2021/04/Particiones.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
Podemos reemplazar una partición anterior de Linux, instalar junto a otro sistema operativo o elegir la opción: “Borrar disco (recomendada)”. Con esta opción el instalador va a crear todas las particiones necesarias para crear una instalación “limpia”.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creá tu usuario y elegí una contraseña.
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://huayra.educar.gob.ar/wp-content/uploads/2021/04/Users.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
En “Resumen” aparecen todas la opciones que elegiste. Si todo está correcto presioná &lt;strong&gt;Instalar&lt;/strong&gt;.
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://huayra.educar.gob.ar/wp-content/uploads/2021/04/Resumen.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Comenzará el proceso de instalación automáticamente.
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://huayra.educar.gob.ar/wp-content/uploads/2021/04/Install.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Después de unos minutos, aparecerá un mensaje que te avisará que Huayra 5 se ha instalado con éxito. Reiniciá o pulsá “Hecho”
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://huayra.educar.gob.ar/wp-content/uploads/2021/04/finalizar.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
¡Listo! Ya podés usar Huayra GNU/Linux en tu equipo.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>¿Nativo o Proton? la opinión de Valve</title><link>https://patojad.com.ar/post/2021/11/nativo-o-proton-la-opini%C3%B3n-de-valve/</link><pubDate>Thu, 18 Nov 2021 10:23:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/11/nativo-o-proton-la-opini%C3%B3n-de-valve/</guid><description>&lt;p&gt;Muchas veces vemos a muchos linuxtubers, bloggers, vloggers o simplemente usuarios sobre si proton, el proyecto de valve, es bueno o es malo para el gaming en linux. Si bien ambas posturas tienen puntos perfectamente válidos, es una discusión que no tiende a terminar nunca.&lt;/p&gt;
&lt;p&gt;Ya sean a favor o en contra podríamos listar los argumentos, pero muchas veces hay que centrarse en los hechos, y la realidad es que gracias a proton muchos juegos de valve arribaron a linux. Y, en mi humilde opinión la gente de valve tiene claro cuál es el objetivo y lo dejaron implícito en la siguiente respuesta.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ytimg.com/vi/QF-xHTKY4H4/maxresdefault.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No tenemos una preferencia. En realidad, &lt;strong&gt;todo se reduce a la mejor experiencia&lt;/strong&gt;. Entonces, si es más fácil para el desarrollador llegar a un punto en el que se logre la mejor experiencia a través de Proton, creemos que es genial. Pero si tienen los conocimientos o los recursos para trabajar en una versión nativa de Linux, incluyendo una gran experiencia toda la funcionalidad y pueden mantenerlo, creemos que es aún mejor&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Con esto, de alguna forma, nos dejan en claro que proton es una solución para Linux, no para los desarrolladores. Si bien los juegos van a ir llegando a Linux en proton, valve, sabe que no es la opción más performante. Y es ahí donde la comunidad de linux como consumidor generará una demanda alta de juegos nativos.&lt;/p&gt;
&lt;p&gt;Hay que entender que hacer funcionar un juego en Proton no es cosa simple, lleva tiempo y quien le ponga esfuerzo a esto lo hace sabiendo que, probablemente, no quede del todo bien. Esto es un riesgo, es invertir tiempo en algo no seguro. Mientras más demanda se genere por los usuarios de GNU/Linux más presión tendrán las empresas en llevar sus juegos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-opinión"&gt;
Mi opinión
&lt;a href="#mi-opini%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Yo no soy desarrollador de videojuegos, si bien tuve mi cercanía no puedo hablar como tal porque realmente no se todo lo que conlleva desarrollar un videojuego. Pero desde mi perspectiva proton nos permite saber si nuestro juego será jugado en Linux y darnos tiempo para generar la versión nativa.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://learntalk.org/photos/blog/header_photo/183/Learntalk_BlogPosts_I_Think.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Como usuario creo que todo lo que permite elegir y mejorar la compatibilidad del sistema operativo es bienvenido, nadie está obligado a usarlo, pero si está disponible para todo aquel que quiera disfrutar de sus ventajas…&lt;/p&gt;
&lt;p&gt;Y vos&amp;hellip; ¿Qué pensas?&lt;/p&gt;</description></item><item><title>MacOS ¿El mejor sistema operativo?</title><link>https://patojad.com.ar/post/2021/11/macos-el-mejor-sistema-operativo/</link><pubDate>Thu, 04 Nov 2021 09:15:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/11/macos-el-mejor-sistema-operativo/</guid><description>&lt;p&gt;Por alguna extraña razón todos siempre buscamos un sistema operativo definitivo más allá de que esto claramente no existe. Y en esta oportunidad tuve la posibilidad de probar MacOS el sistema operativo que según todos sus fan anuncian es perfecto y sin problemas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-video"&gt;
El video
&lt;a href="#el-video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para explicar lo que sentí de una forma natural preferí explicar esto en un vídeo que dejaré a continuación.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/YSm0ybCg274?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Sin embargo voy a detallar algunas cosas para quienes no sean fan de ver videos dado que entiendo que a muchos no les guste.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lo-bueno"&gt;
Lo bueno
&lt;a href="#lo-bueno" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claro está que esto viene desde mi perspectiva. A mi me gusto mucho la integración que tiene entre todas sus apps incluso con apps que no son propias de Apple. Esto es algo que se busca mucho sin embargo no es algo muy simple de lograr y ellos lo tienen muy manejado.&lt;/p&gt;
&lt;p&gt;También tiene un panel táctil que se acomoda a cada aplicación que está abierta y eso realmente es muy cómodo porque nos permite tener muchas opciones a mano.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lo-malo"&gt;
Lo malo
&lt;a href="#lo-malo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Tiene un alto nivel de incompatibilidad con Hardware externo (Joysticks, mouses y teclados) Sus bindeos y su teclado exclusivo es un poco molesto más que nada si uno trabaja con múltiples equipos.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Solo sirve para… Tener una Mac…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Claramente eso es lo único que me sale. Si no sos desarrollador de iOS no hay nada que esta máquina te de que no te pueda dar otra con Windows o Linux.&lt;/p&gt;</description></item><item><title>¿Hasta donde llega la libertad?</title><link>https://patojad.com.ar/post/2021/10/hasta-donde-llega-la-libertad/</link><pubDate>Tue, 19 Oct 2021 08:25:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/10/hasta-donde-llega-la-libertad/</guid><description>&lt;p&gt;Hace mucho que no aparecía por estos lados, hoy traigo nuevamente un video que habla sobre la libertad. Hace tiempo que llevo hablando sobre la libertad y lo que esto es, lo que se debe cumplir. Pero me di cuenta que mucha gente no sabe el alcance de una licencia libre y es algo realmente trágico, más si una persona tiene pensado &lt;em&gt;“predicar”&lt;/em&gt; solamente software libre y cree que basta con mirar una licencia en una app para ser &lt;em&gt;“puritano”&lt;/em&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente esta clases de cosas sólo pueden explicarse en un video y donde uno puede hablar y es mucho más rápido que escribir por 2 horas como funciona todo esto.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/qD6M2WFb0IE?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;div class="w-full rounded-xl bg-yellow-600/75 text-yellow-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-warning fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;Recuerda que una de las grandes moralejas de todo esto es entender que no debemos confiar en todo lo que diga nuestro linuxtuber favorito o nuestro amigo e incluso desconfiar de todo lo que yo digo, siempre tenemos que investigar leer y entender por nosotros mismo.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Easy Anti-Cheat y lo que esto conlleva</title><link>https://patojad.com.ar/post/2021/09/easy-anti-cheat-y-lo-que-esto-conlleva/</link><pubDate>Tue, 28 Sep 2021 09:33:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/09/easy-anti-cheat-y-lo-que-esto-conlleva/</guid><description>&lt;p&gt;Estos días se hizo furor la noticia de Easy Anti-Cheat y su arribo en GNU/Linux y MacOS. O más interesante su soporte para Proton o Wine. Sin embargo, desde mi perspectiva, en muchas ocasiones se analizan algunas cosas por caminos sinuosos, o no se tienen en vista todos los parámetros. En esta oportunidad propongo mi punto de vista con el fin de ver que piensan los demás y que creen sobre todo esto.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En esta oportunidad voy a desarrollar en video, aunque como siempre voy a divagar un poco en el medio pero el punto en algún momento se entiende.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/CTGnaiTbk_U?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Este anticheat está en muchos juegos grandes y populares que no arribaron en linux aun pero gracias a este avance, podrían estar llegando, o al menos eso es lo que se especula en muchos videos, canales y blogs. Entre estos juegos podemos encontrar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fornite&lt;/li&gt;
&lt;li&gt;Fall Guys&lt;/li&gt;
&lt;li&gt;Apex Legends&lt;/li&gt;
&lt;li&gt;Far Cray 5&lt;/li&gt;
&lt;li&gt;Rust&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;![](&lt;a href="https://img-21.ccm2.net/yif027yhQBE2S6hyumWpyA4HVz4=/570x/afa432eef8564ffda583916015ee5313/ccm-faq/eac2.JPG%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://img-21.ccm2.net/yif027yhQBE2S6hyumWpyA4HVz4=/570x/afa432eef8564ffda583916015ee5313/ccm-faq/eac2.JPG"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;</description></item><item><title>Ya esta Disponible Pokémon Unite</title><link>https://patojad.com.ar/post/2021/09/ya-esta-disponible-pok%C3%A9mon-unite/</link><pubDate>Thu, 23 Sep 2021 11:23:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/09/ya-esta-disponible-pok%C3%A9mon-unite/</guid><description>&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://esports.eldesmarque.com/wp-content/uploads/2020/06/Pokemon-Unite-2.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ya está disponible Pokémon unite para Android y iOS. Todos los que vimos este juego y nos gustan un poco los moba y Pokémon teníamos que jugarlo. Es un juego que se esperaba que este solo para celulares gamas alta pero se puede jugar en celulares con muchos recursos sin ningún tipo de problema.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-experiencia"&gt;
Mi experiencia
&lt;a href="#mi-experiencia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/bad99a/1366_2000/450_1000.jpeg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El juego se puede jugar a 30fps sin problemas por lo cual no es necesario tratar de meter más, los comandos no son del todo cómodos, más para quienes lo probamos en la Nintendo. Sin embargo, la jugabilidad es muy buena y realmente uno se termina acostumbrando. El único consejo es que antes de comenzar a jugar se tomen un momento para configurar bien los mandos y traten de usar las opciones avanzadas porque son muy útiles.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sobre-el-juego"&gt;
Sobre el juego
&lt;a href="#sobre-el-juego" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Aúna fuerzas y avasalla a tus rivales en el primer juego de combates por equipos 5 contra 5 de Pokémon!
Únete a Entrenadores de todo el mundo para competir en los Combates Unite que se celebran en Æos. En este tipo de contienda con altas dosis de estrategia, dos equipos de cinco miembros cada uno se enfrentan para obtener la mayor puntuación dentro del límite de tiempo. La cooperación será fundamental a la hora de derrotar a Pokémon salvajes, subir de nivel, hacer evolucionar a tu propio Pokémon y también para evitar que los rivales anoten. ¡Pon a prueba tu espíritu de equipo y hazte con la victoria!&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://assets.pokemon.com/assets/cms2-es-es/img/video-games/video-games/pokemon_unite/screenshots/06.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=jp.pokemon.pokemonunite&amp;amp;hl=es_AR&amp;amp;gl=US" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Ver en la Play Store
&lt;/a&gt;&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="características-clave"&gt;
Características clave:
&lt;a href="#caracter%c3%adsticas-clave" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.lavanguardia.com/files/content_image_mobile_filter/uploads/2021/09/22/614af4e375a17.jpeg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DERROCHA ESTILO EN COMBATE:&lt;/strong&gt; ¡Sé el centro de atención con tu holoatuendo! Gracias a una tecnología especial que emplea la energía Æos, los Entrenadores pueden vestir a sus Pokémon con toda clase de indumentarias holográficas. ¡Y el catálogo seguirá creciendo!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MOVIMIENTOS UNITE:&lt;/strong&gt; ¡Desata el verdadero poder de tus Pokémon con los movimientos Unite! Aprovecha estos movimientos Pokémon nunca vistos, exclusivos de los Combates Unite, e inclina la balanza a tu favor cuando estés contra las cuerdas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SUBE DE RANGO:&lt;/strong&gt; ¿Quieres demostrar tu pericia? ¡Participa en los combates clasificatorios y acumula puntos para ascender en la clasificación mundial!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LA COMUNICACIÓN ES ESENCIAL:&lt;/strong&gt; Incluso los Entrenadores más experimentados reconocen lo importante que es la comunicación para el éxito de su equipo. Utiliza el chat rápido, las alertas y (por primera vez en un título de Pokémon) el chat de voz para que tus compañeros y tú estéis siempre en la misma onda.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JUEGO MULTIPLATAFORMA:&lt;/strong&gt; Participa en Combates Unite contra Entrenadores de todo el mundo en la consola Nintendo SwitchTM o en un dispositivo móvil compatible gracias a su función multiplataforma. Los jugadores podrán usar su cuenta del Club de Entrenadores Pokémon o su cuenta Nintendo tanto en su Nintendo Switch como en su dispositivo móvil para mantener su progreso sincronizado en ambos dispositivos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://unite.pokemon.com/es-mx/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Ver en la Web
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Libre ¿Es gratis?</title><link>https://patojad.com.ar/post/2021/09/libre-es-gratis/</link><pubDate>Thu, 09 Sep 2021 08:10:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/09/libre-es-gratis/</guid><description>&lt;p&gt;En estos días recordé un viejo debate que creí que estaba erradicado. Y por esto mismo propuse realizar una encuesta en el canal de telegram y la distribui por diversos grupos&amp;hellip;&lt;/p&gt;
&lt;script
async
src="https://telegram.org/js/telegram-widget.js?15"
data-telegram-post='PatoJADBlog/379'
data-width="100%"
data-color='8B01CC'
data-dark="1"&gt;
&lt;/script&gt;
&lt;p&gt;Viendo los resultados de la encuesta, comprendí que muchos realmente no comprenden realmente las 4 libertades del software libre, así que antes de ver el video de la descarga que hice en este momento por ahi seria bueno que veas el siguiente artículo y, porque no, ver el video&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://patojad.com.ar/post/2021/03/las-4-libertades-del-software-libre/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Las 4 Libertades del Software Libre
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lo-nuevo"&gt;
Lo nuevo
&lt;a href="#lo-nuevo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Lamentablemente la gente entiende por software libre “Software Gratis” y en base a eso se niega a colaborar, y no solo hablamos de dinero, se niega a colaborar con su tiempo. Por eso mismo realicé este video, por ahi un tanto largo a lo que estoy acostumbrado, pero permite entender un poco el detrás de una app y porqué no, invitarnos a una reflexión.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/y8jAcqDZYu4?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Durante todo el video hago algunas referencia a material de terceros, o anuncio múltiples veces que no es algo que yo saco de la galera, por eso mismo dejo a continuación material al que referencio explícitamente o implícitamente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="material-de-lectura-adicional"&gt;
Material de lectura adicional
&lt;a href="#material-de-lectura-adicional" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/QC9wNS4s/photo-2021-09-08-09-29-33.webp" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.gnu.org/philosophy/selling.html" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Información Oficial desde GNU
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Pantalla negra en Steam</title><link>https://patojad.com.ar/post/2021/09/pantalla-negra-en-steam/</link><pubDate>Wed, 01 Sep 2021 10:30:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/09/pantalla-negra-en-steam/</guid><description>&lt;p&gt;Muchos usuarios de distros basadas en Arch o del mismo Arch nos encontramos con que Steam amaneció con la pantalla negra después de una actualización (la de &lt;code&gt;freetype2&lt;/code&gt; para ser mas especifico.). Si bien esto es molesto, corremos con la ventaja de que SteamOS v3 está basada en Arch y tiene pronta solución para estos errores.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/hM64cebdHSo?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;La solución de los errores se divide en dos caminos, en mi caso prefiero activar la BETA del cliente de Steam y obtener la solución directamente en el cliente de Steam desarrollada por valve. Otros prefieren simplemente revertir la actualización de este paquete, cosa que no recomiendo porque podría traer problemas futuros.&lt;/p&gt;</description></item><item><title>Instalacion de Postman en Linux</title><link>https://patojad.com.ar/post/2021/08/instalacion-de-postman-en-linux/</link><pubDate>Wed, 25 Aug 2021 13:17:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/08/instalacion-de-postman-en-linux/</guid><description>&lt;p&gt;En este momento vamos a ver como se instala postman en nuestro GNU/Linux, en esta instalación vamos a ver la forma más genérica, si bien para cada distribución existe su propia alternativa, ya usar usando AUR en Arch o SNAP en cualquier distro existe una forma un tanto… más simple que es útil para usos portables de esta herramienta.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/L5gh73HD/image.webp" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="descarga"&gt;
Descarga
&lt;a href="#descarga" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Lo primero que debemos hacer es descargar postman, en este caso vamos a descargar la última versión directamente de su sitio web. Pueden buscar cualquier versión, sin embargo recomendamos usar la versión oficial de su web.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.postman.com/downloads/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Realmente no es necesario una instalación propiamente dicha, es más bien la extracción de los binarios. Estos los podemos hacer desde la terminal, dirigiéndonos a la carpeta donde lo descargamos por ejemplo “Downloads”&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; Downloads/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar -xvzf Postman-linux-x86_64-8.11.1.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;siendo &lt;code&gt;Postman-linux-x86_64-8.11.1.tar.gz&lt;/code&gt; el nombre del archivo descargado (En caso de tener otra version poner el nombre correspondiente). Esto nos generará una carpeta llamada Postman. Esta misma si queremos podemos ponerla donde nosotros deseemos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="uso"&gt;
Uso
&lt;a href="#uso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para su uso basta con ejecutar el binario llamado Postman. Si seguimos con el ejemplo anterior, y no movimos la carpeta, bastara con hacer lo siguiente:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; Postman
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./Postman&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Y ya iniciara el Postman, en caso de que no inicie podrás ver en la consola el error que retorna. Si no retorna ningún error y abre sin problemas, podemos ejecutarlo desde el binario con doble click de ahora en adelante.&lt;/p&gt;</description></item><item><title>Webservice NodeJS y MariaDB 6 - ABM en nuestra DB vía API</title><link>https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-6-abm-en-nuestra-db-v%C3%ADa-api/</link><pubDate>Mon, 16 Aug 2021 10:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-6-abm-en-nuestra-db-v%C3%ADa-api/</guid><description>&lt;p&gt;Como última instancia vamos a terminar el ABM de nuestro webservice para poder controlar completamente la base de datos desde la API. Recordemos que esto es completamente extensible y que incluso puedo agregar querys con joins y demás.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/KMeGAYhoYi4?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Así mismo, como siempre, dejo a continuación el código utilizado en el video, no con el fin de ser copiado (aunque esto es posible) Sino más bien como referencia para que construyan su propio código&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/user/add&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kr"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;DBConnector&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;queryWithParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;INSERT INTO usuarios(dni, nombre, apellido, email) VALUES(?,?,?,?)&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dni&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;apellido&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/user/delete/:id&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kr"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;DBConnector&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;queryWithParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;DELETE FROM usuarios WHERE id=?&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/user/update&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kr"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;DBConnector&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;queryWithParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;UPDATE usuarios SET nombre=?, apellido=?, email=? WHERE ID=?&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;apellido&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Si te necesitas que te demos una mano o tienes alguna duda, podes encontrarnos en la comunidad de Telegram donde con mucha alegría te vamos a estar ayudando.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://t.me/PatoJADCommunity" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-telegram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Grupo de Telegram
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si te sirvio no te olvides de apoyar. Compartir, una suscripción o un like no cuestan nada pero valen mucho&amp;hellip;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Si sentís que el curso te sirvió y, queres apoyar aún más que con tu subscribirse al canal de youtube y en las redes sociales o simplemente quieres certificar puedes encontrarlo en Udemy. Lamentablemente no me permite ponerle menos precio, pero si te interesa el certificado no te olvides de seguirnos que vamos a estar ofreciendo gratis para que todos los que lo deseen puedan certificar.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.udemy.com/course/patojad-webservice-nodejs-y-mariadb/?referralCode=817BCD02D2C08DEC01DE" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Curso en Udemy
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Webservice NodeJS y MariaDB 5 - Accediendo a Nuestra DB mediante la API</title><link>https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-5-accediendo-a-nuestra-db-mediante-la-api/</link><pubDate>Thu, 12 Aug 2021 10:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-5-accediendo-a-nuestra-db-mediante-la-api/</guid><description>&lt;p&gt;Ya teniendo nuestra API levantada vamos a empezar a interactuar con nuestra base de datos y responderlo mediante la API. En este punto podemos ver que ya esto es extremadamente extensible como para proyectar mucho más grande.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/AAjfynGFUuE?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Dejo a continuación el código utilizado en el Video. Recuerden que se puede copiar con facilidad y ante cualquier duda podes encontrarnos en el grupo de telegram:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/users&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kr"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;DBConnector&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;SELECT * FROM usuarios&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/user/:id&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kr"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;DBConnector&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;queryWithParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;SELECT * FROM usuarios WHERE id=?&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://t.me/PatoJADCommunity" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-telegram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Unite a nuestra comunidad
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si te sirvio no te olvides de apoyar. Compartir, una suscripción o un like no cuestan nada pero valen mucho&amp;hellip;&lt;/p&gt;</description></item><item><title>Webservice NodeJS y MariaDB 4 - Levantando API con Express</title><link>https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-4-levantando-api-con-express/</link><pubDate>Mon, 09 Aug 2021 10:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-4-levantando-api-con-express/</guid><description>&lt;p&gt;Ya estamos preparando lo último, aunque pueden ver que ya está todo bastante encaminado. En esta oportunidad vamos a dejar la API levantada para poder generar nuestras llamadas. Este paso es importante chequear que funciona correctamente para evitar cualquier problema posterior.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/kV42bjGdsLQ?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Dejo a continuación el código utilizado en el video, recuerden que la explicación del video sirve para comprender cada parte y luego poder configurarlo a gusto dependiendo de las necesidades. Si bien el curso es básico, dispone del contenido necesario para levantar una api Completa.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Importro requerimientos
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;express&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;cors&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bodyParser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;body-parser&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Inicializo las apps
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Router&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Seteo Puerto
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;8484&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Preparo el APP
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bodyParser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;urlencoded&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;extended&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bodyParser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cors&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Seteo Ruta principal
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Configuro Rutas
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;get&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Nuesta API esta Funcionando&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Inicio la APP
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Muestro Puero en consola
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Inicio en el puero &amp;#39;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Webservice NodeJS y MariaDB 3 - Conector MariaDB en NodeJS</title><link>https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-3-conector-mariadb-en-nodejs/</link><pubDate>Thu, 05 Aug 2021 10:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-3-conector-mariadb-en-nodejs/</guid><description>&lt;p&gt;Ya teniendo todo preparado vamos a crear nuestro conector entre NodeJS y Mariadb para poder realizar las consultas o Querys para obtener, modificar o actualizar datos&amp;hellip;&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/2P3jkH-HaKY?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Dejo a continuación el código correcto del objeto que creamos para poder manipular las consultas.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;javascript&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mariadb&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;mariadb&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;host&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;testwebserveruser&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;testwebserverpass&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;database&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;webserverdb&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;connectionLimit&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;acquireTimeout&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;DBConnector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;dbconnector&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mariadb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createPool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;async&lt;/span&gt; &lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sQuery&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;conn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kr"&gt;await&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dbconnector&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getConnection&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;ret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;conn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sQuery&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;ret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;ret&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;DBConnector&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Webservice NodeJS y MariaDB 2 - Creando Base de Datos e iniciando Proyecto</title><link>https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-2-creando-base-de-datos-e-iniciando-proyecto/</link><pubDate>Mon, 02 Aug 2021 10:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-2-creando-base-de-datos-e-iniciando-proyecto/</guid><description>&lt;p&gt;Sabiendo que ya tenemos instalado lo necesario vamos a preparar nuestro entorno creando la base de datos y subiendo los datos que necesitamos:&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/BllyitZzO0g?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Dejo a continuación el script que utilizamos:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;sql&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* CREADO POR https://patojad.com.ar/ */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* Creo Base de Datos para el WebServer */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DATABASE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;`&lt;/span&gt;&lt;span class="n"&gt;webserverdb&lt;/span&gt;&lt;span class="o"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* Creo el usuario para esta prueba publica */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;testwebserveruser&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;IDENTIFIED&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;testwebserverpass&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* Le concedo permisos para conectarse */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;GRANT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;USAGE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;testwebserveruser&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;localhost&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;IDENTIFIED&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;testwebserverpass&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* GRANT USAGE ON *.* TO &amp;#39;testwebserveruser&amp;#39;@&amp;#39;%&amp;#39; IDENTIFIED BY &amp;#39;testwebserverpass&amp;#39;; // Esto se usar en caso de que se requiera acceder fuera del localhost */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* Se le da acceso al usuario a la Base de Datos */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;GRANT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ALL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;privileges&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;`&lt;/span&gt;&lt;span class="n"&gt;webserverdb&lt;/span&gt;&lt;span class="o"&gt;`&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;testwebserveruser&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;localhost&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* Aplico los cambios */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;FLUSH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;PRIVILEGES&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* Selecciono la Base de Datos */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;USE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;webserverdb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* Creo trabla para las pruebas */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TABLE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;usuarios&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;BIGINT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;UNSIGNED&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;PRIMARY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cm"&gt;/* ID auto incrementable seteado como primary key*/&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dni&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;UNIQUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cm"&gt;/* Seteo DNI como unico */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;apellido&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* Inserto datos en la Tabla para realizar las pruebas */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;usuarios&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dni&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;apellido&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;VALUES&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;39493125&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Joaquin&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Decima&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;joaquin.decima@gmail.com&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;39423029&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Pato&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Decima&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;patojad96@gmail.com&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;11658488&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Julio&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Gnome&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;aguante@gnome.com&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;09547684&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Daniel&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Pancram&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pancram@linuxitos.com&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;17685998&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Pipe&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Garcia&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pipe@amomint.com&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;107685998&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Issac&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Garcia&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;elgran@issac.garcia&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;16587958&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;LPI&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;MilagrOS&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;lpi@milagros.com&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;36584929&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Nico&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Loco&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;nico@locosporlinux.com&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* Muestro los datos */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;usuarios&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* CREADO POR https://patojad.com.ar/ */&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;En caso de necesitar purgar la Base de Datos o limpiar todo, pueden correr el siguiente script que se encarga de limpiar la DB&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;sql&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* EN CASO DE QUERER LIMPIAR LA BASE DE DATOS USAR LO SIGUIENTE */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;USE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;webserverdb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;DROP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TABLE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;usuarios&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;DROP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DATABASE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;webserverdb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;DROP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;testwebserveruser&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;DROP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;testwebserveruser&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;%&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Webservice NodeJS y MariaDB 1 - Instalacion de NodeJS NPM y MariaDB</title><link>https://patojad.com.ar/post/2021/07/webservice-nodejs-y-mariadb-1-instalacion-de-nodejs-npm-y-mariadb/</link><pubDate>Thu, 29 Jul 2021 09:50:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/07/webservice-nodejs-y-mariadb-1-instalacion-de-nodejs-npm-y-mariadb/</guid><description>&lt;p&gt;En esta primera etapa del curso vamos a instalar las dependencias necesarias para poder realizar el curso. En mi caso estoy usando una distribución basada en arch, pero en caso de que dispongan de otra distribucion voy a dejar la documentación de como instalar las dependencias&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/qWyRs1Zlevk?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ubuntu"&gt;
Ubuntu
&lt;a href="#ubuntu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y build-essential
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://deb.nodesource.com/setup_16.x &lt;span class="p"&gt;|&lt;/span&gt; sudo -E bash -
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install -y nodejs mariadb&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="rhel"&gt;
RHEL
&lt;a href="#rhel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum install gcc-c++ make mariadb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://rpm.nodesource.com/setup_16.x &lt;span class="p"&gt;|&lt;/span&gt; sudo bash -&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arch-linux-y-derivadas"&gt;
Arch Linux y derivadas
&lt;a href="#arch-linux-y-derivadas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Los paquetes para Node.js y npm están disponibles en el repositorio de la Comunidad.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacman -S nodejs npm mariadb&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="gentoo"&gt;
Gentoo
&lt;a href="#gentoo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Node.js está disponible en portage.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;emerge nodejs mariadb&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="void-linux"&gt;
Void Linux
&lt;a href="#void-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Void Linux incluye la versión estable de Node.js en el repositorio principal.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;xbps-install -Sy nodejs mariadb&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="snap-no-recomendado"&gt;
SNAP (No recomendado)
&lt;a href="#snap-no-recomendado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo snap install node --classic --channel&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="chequear-las-instalaciones"&gt;
Chequear las instalaciones
&lt;a href="#chequear-las-instalaciones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;para poder chequear las instalaciones debemos correr el siguiente comando que nos retornara las versiones de npm nodejs y mariadb:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm --version &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; node --version &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; mariadb --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Steam Deck Analisis</title><link>https://patojad.com.ar/post/2021/07/steam-deck-analisis/</link><pubDate>Tue, 27 Jul 2021 10:30:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/07/steam-deck-analisis/</guid><description>&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/GtJxbPmK/steamdeck-1080x609.webp" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ya se anunció Steam Deck y mucha revolucion género, hoy vamos a hacer un análisis de este lado del mundo (el de GNU/Linux) sobre todo esto que vamos a vivir desde el año que viene que se entreguen estos dispositivos&amp;hellip;&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/QHtIKBF39sA?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-portabilidad-se-alía-con-la-potencia"&gt;
La portabilidad se alía con la potencia
&lt;a href="#la-portabilidad-se-al%c3%ada-con-la-potencia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/0NTYmX6Z/1601762882-AMD-Ryzen-ahora-representa-mas-del-25-de-las-CPU-1.webp" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Steam se ha asociado con AMD para crear la APU personalizada de Steam Deck, optimizada para el juego en dispositivos portátiles. Se trata de una potente combinación de las arquitecturas Zen 2 y RDNA 2 que ofrece un rendimiento más que suficiente para ejecutar los últimos juegos AAA en una envolvente de potencia muy eficiente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="hardware"&gt;
Hardware
&lt;a href="#hardware" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Procesador&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;APU AMD&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CPU:&lt;/strong&gt; Zen 2 de 4 núcleos/8 hilos, 2.4-3.5 GHz (hasta 448 GFLOPS FP32)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPU:&lt;/strong&gt; RDNA 2 con 8 unidades de cálculo, 1.0-1.6 GHz (hasta 1.6 TFLOPS FP32)&lt;/li&gt;
&lt;li&gt;Consumo de la APU: 4-15 W&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAM&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;16 GB de RAM LPDDR5 integrada (cuatro canales de 32 bits, 5500 MT/s)&lt;/li&gt;
&lt;li&gt;Almacenamiento&lt;/li&gt;
&lt;li&gt;eMMC de 64 GB (1 PCIe Gen 2)&lt;/li&gt;
&lt;li&gt;NVMe SSD de 256 GB (4 PCIe Gen 3)&lt;/li&gt;
&lt;li&gt;NVMe SSD de 512 GB de alta velocidad (4 PCIe Gen 3)
&lt;em&gt;Todos los modelos utilizan módulos 2230 m.2 (no diseñados para ser reemplazados por el usuario final)&lt;/em&gt;
&lt;em&gt;Todos los modelos incluyen una ranura para tarjetas microSD de alta velocidad&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resolución:&lt;/strong&gt; 1280 x 800 píxeles (relación de aspecto 16:10)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tipo Pantalla:&lt;/strong&gt; LCD IPS con laminación óptica para mejorar la legibilidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tamaño de pantalla:&lt;/strong&gt; 7&amp;quot; de diagonal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Brillo:&lt;/strong&gt; 400 nits (típico)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frecuencia de actualización:&lt;/strong&gt; 60 Hz&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Táctil:&lt;/strong&gt; Sí&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sensores:&lt;/strong&gt; Sensor de luz ambiental&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bluetooth:&lt;/strong&gt; Bluetooth 5.0 (compatible con mandos, accesorios y audio)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wi-Fi:&lt;/strong&gt; Radio wifi de doble banda, 2.4 GHz y 5 GHz, 2 x 2 MIMO, IEEE 802.11a/b/g/n/ac&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="software"&gt;
Software
&lt;a href="#software" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Sistema operativo&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;SteamOS 3.0 (basado en Arch)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Escritorio&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;KDE Plasma&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;</description></item><item><title>Webservice NodeJS + MariaDB</title><link>https://patojad.com.ar/post/2021/07/webservice-nodejs--mariadb/</link><pubDate>Mon, 26 Jul 2021 14:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/07/webservice-nodejs--mariadb/</guid><description>&lt;p&gt;En esta oportunidad cuento con mucha alegría que me anime a dar de forma diferida mi “primer curso” online sobre cómo crear un WebService con NodeJS y MariaDB&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/4NXBdb3D/curso-flayer.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;De seguro todo esto requiere mucho más trabajo y los siguientes cursos, en caso de que siga dictandolos, sean mejores. Pero es un pequeño piloto que servirá para comenzar una nueva etapa donde planeo dejar un contenido más armado y estructurado.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-esperar-de-este-curso"&gt;
¿Qué esperar de este curso?
&lt;a href="#qu%c3%a9-esperar-de-este-curso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Este curso es muy básico y sirve para comprender y poder crear nuestro webservice para exponer una base de datos MariaDB con una API creada en NodeJS. Lo que buscamos es mostrar un poco como funcionan estas tecnologías por encima con el fin de poder crear aplicaciones pequeñas y comenzar en el mundo del desarrollo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="que-ofrece"&gt;
Que ofrece
&lt;a href="#que-ofrece" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Este curso es pequeño y es completamente gratis. Se dicta mediante Youtube y dispone de 6 videos y 6 artículos con todo el material generado en el curso:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;32 minutos de vídeos On Demand&lt;/li&gt;
&lt;li&gt;6 Artículos con el código generado&lt;/li&gt;
&lt;li&gt;Acceso de por vida Free&lt;/li&gt;
&lt;li&gt;Acceso a los vídeos desde cualquier plataforma&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="clases"&gt;
Clases
&lt;a href="#clases" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2021/07/webservice-nodejs-y-mariadb-1-instalacion-de-nodejs-npm-y-mariadb/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Instalacion de NodeJS NPM y MariaDB
&lt;/a&gt; (Disponible desde 29/07)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-2-creando-base-de-datos-e-iniciando-proyecto/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Creando Base de Datos e iniciando Proyecto
&lt;/a&gt; (Disponible desde 02/08)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-3-conector-mariadb-en-nodejs/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Conector MariaDB en NodeJS
&lt;/a&gt; (Disponible desde 05/08)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-4-levantando-api-con-express/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Levantando API con Express
&lt;/a&gt; (Disponible desde 09/08)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-5-accediendo-a-nuestra-db-mediante-la-api/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Accediendo a Nuestra DB mediante la API
&lt;/a&gt; (Disponible desde 12/08)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/aplicaciones/2021/08/instalacion-de-postam-en-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Instalacion de Postman en Linux
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2021/08/webservice-nodejs-y-mariadb-6-abm-en-nuestra-db-v%c3%ada-api/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
ABM en nuestra DB vía API
&lt;/a&gt; (Disponible desde 16/08)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="apoyo"&gt;
Apoyo
&lt;a href="#apoyo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Me gustaría saber que cuento con tu apoyo para crear más y nuevos cursos, en caso de ser así me gustaría que puedas suscribirte al canal. Comentar los videos y obviamente sabes que estamos para acompañarte durante el curso en nuestro grupo de Telegram y obviamente en los mismos comentarios&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="certificado"&gt;
Certificado
&lt;a href="#certificado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Replicamos el curso en Udemy para que puedan ser certificados, en caso de necesitarlo te dejamos el link. Entendemos que no todos tienen la posibilidad de pagar el curso o no tienen el deseo, por lo cual vamos a estar poniéndolo gratis en ciertas ocasiones para que todos puedan certificar sin necesidad de pagar.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.udemy.com/course/patojad-webservice-nodejs-y-mariadb/?referralCode=817BCD02D2C08DEC01DE" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Curso en Udemy
&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Si sentís que el curso te sirvió y, queres apoyar aún más que con tu subscribirse al canal de youtube y en las redes sociales o simplemente quieres certificar puedes encontrarlo en Udemy. Lamentablemente no me permite ponerle menos precio, pero si te interesa el certificado no te olvides de seguirnos que vamos a estar ofreciendo gratis para que todos los que lo deseen puedan certificar.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.udemy.com/course/patojad-webservice-nodejs-y-mariadb/?referralCode=817BCD02D2C08DEC01DE" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Curso en Udemy
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Activar Descargas paralelas en Pacman</title><link>https://patojad.com.ar/post/2021/07/activar-descargas-paralelas-en-pacman/</link><pubDate>Thu, 15 Jul 2021 09:51:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/07/activar-descargas-paralelas-en-pacman/</guid><description>&lt;p&gt;Como mencionamos &lt;a href="https://patojad.com.ar/post/2021/06/lleg%c3%b3-pacman-v6-y-pamac-qued%c3%b3-anonadado/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
hace un tiempo llegó pacman 6
&lt;/a&gt;, y la primera impresión para algunos no fue buena porque pamac no estaba a la altura ni estaba preparado para esto. Sin embargo ya está todo solucionado y podemos comenzar a sacarle el mejor provecho a esto. En esta oportunidad vamos a hablar de una nueva opción que seguro queremos tener habilitada en nuestra distro…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="descargas-en-paralelo"&gt;
Descargas en paralelo
&lt;a href="#descargas-en-paralelo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente sabemos que son las descargas en paralelo y algunos no nos percatamos de que pacman no descargaba simultáneamente los paquetes pero hoy te damos el paso a paso para que habilites la descarga en paralelo en tu distro base arch preferida…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-hacerlo"&gt;
Cómo hacerlo
&lt;a href="#c%c3%b3mo-hacerlo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Te dejo un video donde explico como realizar esto y claramente más abajo vas a poder ver los comandos utilizados:&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/xOeA9rx6HLA?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Primero abrimos, como administrador, el archivo de configuración:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nano /etc/pacman.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Luego, como explica en el video, agregamos la siguiente linea:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ParallelDownloads&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Donde 5 representa la cantidad de descargas en paralelo que queremos tener, este número lo podemos variar dependiendo nuestra velocidad de internet y necesidades.&lt;/p&gt;</description></item><item><title>Open Assistant un asistente Open Source</title><link>https://patojad.com.ar/post/2021/07/open-assistant-un-asistente-open-source/</link><pubDate>Mon, 05 Jul 2021 10:17:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/07/open-assistant-un-asistente-open-source/</guid><description>&lt;p&gt;Siempre se habla de los asistentes, muchos sistemas tienen su sistema y en linux, por alguna extraña razón no es altamente explotado. En cuanto a Windows podemos encontrar a Cortana, que por suerte ya no viene por defecto en Windows 11. Para Android, tenemos a Google Assistant que no va tan mal. Y los que tienen el dinero como para regocijarse en Apple tienen a Siri, un asistente que es de los más humanizados que existe. Y existen varios más, pero hoy vamos a hablar de uno que no escuche mucho nombrar&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-punto-de-vista"&gt;
Mi punto de vista
&lt;a href="#mi-punto-de-vista" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Yo no soy un gran fanatico de los asistentes, no pude nunca sacarle el jugo que quiero, porque los asistentes que probé no se integraban bien desde mi perspectiva. Claramente no soy un gran conocedor pero debo admitir que es cómodo poder estar haciendo algo con el teclado (Ejemplo codeando como un campeón) Y pedirle al asistente que cambie la canción que estamos escuchando. Por esto creo que los asistentes (Siempre y cuando no sean como Cortana que te lentea hasta una master race) son una muy buena herramienta para tener instaladas y acostumbrarnos a utilizarlo. Además mientras más mañana nos demos y más curioso seamos existen algunos asistentes que pueden volverse muy útiles y muy manipulables para obtener mejores resultados.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="oa"&gt;
OA
&lt;a href="#oa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;OA&lt;/strong&gt; o también conocido como Open Assistant es un asistente, que claramente corre en GNU/Linux, escrito en python, que tiene la particularidad de ser completamente extensible. Esto nos permite tener un asistente con un lenguaje que casi cualquier persona pueda extender.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-oa"&gt;
Instalar OA
&lt;a href="#instalar-oa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Lo primero que debemos hacer es instalar las dependencias necesarias para poder correr OA de la siguiente manera:&lt;/p&gt;
&lt;h5 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ubuntudebian"&gt;
Ubuntu/Debian
&lt;a href="#ubuntudebian" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install -y python3 python3-dev python3-pip build-essential swig git libpulse-dev espeak libasound2-dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h5 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arch"&gt;
Arch
&lt;a href="#arch" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S swig espeak python&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Una vez que tengamos las dependencias instaladas debemos descargar el paquete y descomprimirlo, para descargarlo podemos hacerlo desde el siguiente link:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/openassistant/oa-core/archive/master.zip%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Descargar OA
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una ves que lo descomprimimos pasamos a la carpeta e instalamos las dependencias de python que necesita el proyecto, esto lo podemos hacer con el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install -r requirements.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;En caso de estar en Debian, Ubuntu o derivadas. Deben sustituir pip por pip3 para ejecutarlo con esta versión en especifico&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;A continuación de esto, ya podemos iniciar el proyecto, para esto lo podemos hacer de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python -m oa&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-blue-600/75 text-blue-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-info fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;En caso de estar en Debian, Ubuntu o derivadas. Deben sustituir python por python3 para ejecutarlo con esta versión en especifico&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Y ya estaría funcionando, para ver más sobre comandos o como agregar nuestros propios comandos por voz les dejo el link a su repo donde está la documentación.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/openassistant/oa-core" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Mas Info
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://openassistant.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
La Web
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="tu-opinión"&gt;
Tu opinión
&lt;a href="#tu-opini%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Sabemos que no todos pensamos igual y siempre queremos conocer tu opinión sobre estos temas, ¿Que piensas sobre los asistentes virtuales? ¿Usas alguno? ¿Usarias OA?&lt;/p&gt;</description></item><item><title>¿Los Problemas de Linux? - Verdades de la Galera</title><link>https://patojad.com.ar/post/2021/06/los-problemas-de-linux-verdades-de-la-galera/</link><pubDate>Wed, 23 Jun 2021 10:21:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/06/los-problemas-de-linux-verdades-de-la-galera/</guid><description>&lt;p&gt;Como muchos saben yo, particularmente creo que no todos están hechos para el mundo de GNU/Linux dado que este, implica mucha lectura, investigación y obviamente ganas. Y a muchas personas realmente esto no les interesa. Esto para mi es el mejor justificativo para el dia de hoy porque no usar linux, simplemente no quiero leer nada ni aprender ni darme maña.&lt;/p&gt;
&lt;p&gt;Sin embargo me molesta realmente mucho que de la pereza o ignorancia de uno (No tomar ignorancia como mala palabra) Salgan verdades absolutas, de eso se trata el siguiente video&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;iframe src='https://www.youtube.com/embed/53-MX57rA0w?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;No estoy diciendo que el creador de video es un ignorante, simplemente que está haciendo un video sobre algo que no está realmente informado. Y esas cosas suelen darse mucho en los creadores de contenido&lt;/p&gt;</description></item><item><title>RAWMEN: un Shooter Culinario</title><link>https://patojad.com.ar/post/2021/06/rawmen-un-shooter-culinario/</link><pubDate>Mon, 14 Jun 2021 09:53:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/06/rawmen-un-shooter-culinario/</guid><description>&lt;p&gt;&lt;strong&gt;RAWMEN&lt;/strong&gt; es un juego &lt;strong&gt;multijugador&lt;/strong&gt; de disparos que te obliga a enfrentarte de entre 2 a 8 de tus colegas más queridos&amp;hellip; o a tus no tan colegas. ¡Demuestra tu soparioridad y siembra un bonito caos culinario!&lt;/p&gt;
&lt;p&gt;Compite en varios modos de batalla y desafíos que ponen a prueba tu paladar pulverizador en varios lugares del mundo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="otro-shooter"&gt;
Otro shooter
&lt;a href="#otro-shooter" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Todas las personas que me conocen y con las que jugamos en la Legión Linux Gamers ya sabrán que los Shooters no son mis juegos preferidos y aun así son los que abundan más en GNU/Linux.&lt;/p&gt;
&lt;p&gt;Hace un tiempo llevo probando este nuevo juego el cual tiene una dinámica un tanto diferente a los shooters convencionales, y si bien no es nativo de GNU/Linux corre realmente bien con Proton desde Steam.&lt;/p&gt;
&lt;p&gt;El juego aun esta en BETA y podemos apreciar que va avanzando con el tiempo… Unite a la BETA y juguemos juntos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="festival-de-bofetadas-multijugador"&gt;
Festival de bofetadas multijugador
&lt;a href="#festival-de-bofetadas-multijugador" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;¡Participa en una partida rápida y lucha contra los sopas de todo el mundo, o invita a algunos amigos y diviértete juntos en un juego privado de tu elección!&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/782940/extras/CharacterCustomizer_060120.gif" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Aquí hay una muestra de lo que hay en el menú:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claim Chowder:&lt;/strong&gt; ¡Defiende la codiciada olla de sopa de los jugadores enemigos para ganar!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Albóndiga:&lt;/strong&gt; Sumérjase en el reconfortante calor de la jugosa carne y avance hacia la meta; simplemente no te quedes inconsciente, &lt;em&gt;¡NECESITAMOS ESE JUGO DE CARNE!&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Top RAWMEN:&lt;/strong&gt; usa tus bombas de rosquilla para lanzarte al aire y atravesar obstáculos, mientras recolectas la posesión más preciada: &lt;em&gt;¡los cubos de caldo dorado!&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&amp;hellip; ¡y mucho más!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lucha-contra-la-comida-en-su-máxima-expresión"&gt;
Lucha contra la comida en su máxima expresión
&lt;a href="#lucha-contra-la-comida-en-su-m%c3%a1xima-expresi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;¿Pistolas de bratling, pasteles de crema, papas calientes, caballas de Smackeral? ¡¿Y ALBÓNDIGAS extremadamente grandes ?! ¡Sí, lo tenemos! Usa una gran cantidad de comida para rebanar a tus oponentes, o propulsarte a la grandeza y lograr lo impensable; &lt;em&gt;¡Una oportunidad de ser el Top &lt;strong&gt;RAWMEN&lt;/strong&gt;! &lt;strong&gt;¡PODRÍA SER FAMOSO!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.cloudflare.steamstatic.com/steam/apps/782940/extras/_sizzle_reel_Linked_Comp_3.gif%22%3e%7d%7d" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.cloudflare.steamstatic.com/steam/apps/782940/extras/_sizzle_reel_Linked_Comp_3.gif"&gt;}}
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="personalízalo-personalízalo-ojos-personalizados"&gt;
¡Personalízalo! ¡Personalízalo! Ojos personalizados!
&lt;a href="#personal%c3%adzalo-personal%c3%adzalo-ojos-personalizados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Métete en el nuevo chasis de carne de tu marca y ponte manos a la obra para personalizar tu apariencia.&lt;/p&gt;
&lt;p&gt;Cuando se trata de moda, lo cubrimos con un baúl lleno de diferentes estilos culinarios, vibraciones y goteos. Tu lanzador de sopa es tuyo para diseñar y decorar. Cabello, delantales, manoplas, ollas, cucharones, incluso panzas de cerveza: honestamente, el mundo es tu ostra; decorar al contenido de su corazón.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/782940/extras/Comp_70.gif" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;¡Empieza a diseñar tu personaje ahora, antes de que nerfemos el personalizador!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="requisitos"&gt;
Requisitos
&lt;a href="#requisitos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Procesador:&lt;/strong&gt; SSE2 instruction set support&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memoria:&lt;/strong&gt; 8 GB de RAM&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gráficos:&lt;/strong&gt; Graphics card with DX11 (shader model 3.0) capabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DirectX:&lt;/strong&gt; Versión 11&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red:&lt;/strong&gt; Conexión de banda ancha a Internet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Almacenamiento:&lt;/strong&gt; 4 GB de espacio disponible&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tarjeta de sonido:&lt;/strong&gt; ¡Todo vale!&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="text-center"&gt;
&lt;iframe
src='https://store.steampowered.com/widget/782940/'
width="646"
height="190"
title="Juego en Steam"
style="border-radius:20px;"&gt;
&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Solucion al erro de Update de Artix</title><link>https://patojad.com.ar/post/2021/06/solucion-al-erro-de-update-de-artix/</link><pubDate>Thu, 10 Jun 2021 09:51:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/06/solucion-al-erro-de-update-de-artix/</guid><description>&lt;p&gt;En estos días Artix linux estuvo presentando problemas para actualizar, al intentar actualizar nos aparece un error al resolver dependencias de SysyemD. Sin embargo esta distro no trae SystemD por lo cual nunca podrían cumplirse. En esta ocasión vamos a ver como arreglar este error.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En este video podemos ver el paso a paso de como arreglar este error:&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/UtGfiw-Pgdk?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;con pacman:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Syu elogind artix-archlinux-support&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;con yay:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -Syu elogind artix-archlinux-support&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Palword ¿Pokemon?¿Armas?¿RPG?</title><link>https://patojad.com.ar/post/2021/06/palword-pokemonarmasrpg/</link><pubDate>Mon, 07 Jun 2021 09:23:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/06/palword-pokemonarmasrpg/</guid><description>&lt;p&gt;Palworld es un nuevo juego multijugador de supervivencia en un mundo abierto en el que puedes hacerte amigo y coleccionar criaturas misteriosas llamadas &lt;em&gt;Pal&lt;/em&gt; en un vasto mundo. Haz que tus amigos luchen, construyan, cultiven y trabajen en fábricas.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/1623730/extras/20210605_PAL_Cut3_Life.gif" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Lamentablemente no sabemos y tampoco creemos que este juego sea nativo para Linux, sin embargo esperamos poder correrlo de una forma u otra, lo que sí tenemos son los requisitos mínimos que debemos cumplir para poder correrlo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="de-qué-trata-este-juego"&gt;
¿De qué trata este juego?
&lt;a href="#de-qu%c3%a9-trata-este-juego" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Palworld&lt;/strong&gt; es un juego sobre vivir una vida lenta con misteriosas criaturas &lt;em&gt;Pal&lt;/em&gt; o lanzarse a batallas de vida o muerte con cazadores furtivos. Puedes hacer que tus amigos luchen, se reproduzcan, ayuden en la agricultura o trabajen en fábricas. ¡También puede venderlos o incluso sacrificarlos para comerlos! Sin embargo, eso está prohibido por ley.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="supervivencia"&gt;
Supervivencia
&lt;a href="#supervivencia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Este mundo está lleno de peligros como la escasez de alimentos, el clima severo y los cazadores furtivos ilegales. Debes estar preparado para hacer cualquier cosa si quieres sobrevivir. Incluso puede que &lt;strong&gt;necesite consumir &lt;em&gt;Pals&lt;/em&gt; a veces&amp;hellip;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/1623730/extras/20210605_PAL_Cut10_Survival.gif" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="equitación-y-exploración"&gt;
Equitación y exploración
&lt;a href="#equitaci%c3%b3n-y-exploraci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Vuela, nada, cava hoyos&amp;hellip; puedes explorar todo tipo de lugares en la tierra, el mar y el cielo montando a Pals.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.cloudflare.steamstatic.com/steam/apps/1623730/extras/20210605_PAL_Cut1_Ride.gif?t=1623034222%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.cloudflare.steamstatic.com/steam/apps/1623730/extras/20210605_PAL_Cut1_Ride.gif?t=1623034222"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="edificio"&gt;
Edificio
&lt;a href="#edificio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;¿Quieres construir una pirámide? Puede tener un gran número de amigos trabajando en la construcción. No te preocupes; &lt;strong&gt;Las leyes laborales no se aplicarán a Pals&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/1623730/extras/20210605_PAL_Cut2_Building.gif" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Esto lo dice el creador del juego, pero no si habla de argentina o el juego&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="agricultura"&gt;
Agricultura
&lt;a href="#agricultura" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Diferentes amigos son buenos en diferentes cosas, como sembrar, regar, cosechar, etc. Crea atractivas granjas y huertos con tus amigos. También hay amigos que pueden duplicarse cuando se plantan.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.cloudflare.steamstatic.com/steam/apps/1623730/extras/20210605_PAL_Cut4_Farm.gif%22%3e%7d%7d" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.cloudflare.steamstatic.com/steam/apps/1623730/extras/20210605_PAL_Cut4_Farm.gif"&gt;}}
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="fábrica-y-automatización"&gt;
Fábrica y Automatización
&lt;a href="#f%c3%a1brica-y-automatizaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Es fundamental para la automatización dejar que Pals haga el trabajo manual. Construye una fábrica y coloca a Pals en ella. Trabajarán para siempre siempre y cuando sean alimentados hasta el final de su vida.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/1623730/extras/20210605_PAL_Cut5_Industry.gif" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Soy el unico que ve la deprecion en la cara de esos pobres Pals que solo trabajan arduamente hasta su muete por un poco de comida&amp;hellip;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="exploración-de-mazmorras"&gt;
Exploración de mazmorras
&lt;a href="#exploraci%c3%b3n-de-mazmorras" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Con Pals, estarás a salvo en áreas peligrosas. Si estás en peligro, ¡usa a Pals para cubrir tu escape! Darán su vida para protegerte.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/1623730/extras/20210605_PAL_Cut6_Dungeon.gif" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="crianza-y-herencia"&gt;
Crianza y herencia
&lt;a href="#crianza-y-herencia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Cuando crías Pals, heredan las características de los padres. ¡Mezcla amigos de especies raras para criar a los amigos más fuertes!&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/1623730/extras/20210605_PAL_Cut7_Fusion.gif" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="multijugador"&gt;
Multijugador
&lt;a href="#multijugador" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Este juego es compatible con multijugador. Invita a tus amigos a emprender una aventura juntos. ¡Por supuesto, puedes luchar y comerciar con otros jugadores!&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/1623730/extras/20210605_PAL_Cut9_Multi.gif" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="requerimientos"&gt;
Requerimientos
&lt;a href="#requerimientos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Procesador:&lt;/strong&gt; 2.0 GHz Dual Core or similar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memoria:&lt;/strong&gt; 8 GB de RAM&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gráficos:&lt;/strong&gt; VRAM 2GB&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red:&lt;/strong&gt; Conexión de banda ancha a Internet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Almacenamiento:&lt;/strong&gt; 10 GB de espacio disponible&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="text-center"&gt;
&lt;iframe
src='https://store.steampowered.com/widget/1623730/'
width="646"
height="190"
title="Juego en Steam"
style="border-radius:20px;"&gt;
&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>¿El mejor sistema operativo?¿De que habla?</title><link>https://patojad.com.ar/post/2021/06/el-mejor-sistema-operativode-que-habla/</link><pubDate>Thu, 03 Jun 2021 09:01:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/06/el-mejor-sistema-operativode-que-habla/</guid><description>&lt;p&gt;No se si esto es una sección o solo un video aislado, sin embargo cuando vi este video sobre “el mejor sistema operativo” inmediatamente pensé que tenía que comentarlo. No hay mucho más que decir espero que disfruten el video.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/6vzEGWGlMyA?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;</description></item><item><title>LLegó pacman v6 y pamac quedó anonadado</title><link>https://patojad.com.ar/post/2021/06/lleg%C3%B3-pacman-v6-y-pamac-qued%C3%B3-anonadado/</link><pubDate>Wed, 02 Jun 2021 09:10:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/06/lleg%C3%B3-pacman-v6-y-pamac-qued%C3%B3-anonadado/</guid><description>&lt;p&gt;El día jueves 20 del mes de Mayo se liberó la versión Oficial de pacman 6 el cual viene repleta de novedades que ya podemos disfrutar en todas las distribuciones basadas en Arch.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="changelog"&gt;
Changelog
&lt;a href="#changelog" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/DwNCYM02/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Seguramente te estás preguntando qué cambio y aca te dejo la lista de cambios que impactaron en la versión V6:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El descargador interno puede recuperar archivos en paralelo&lt;/li&gt;
&lt;li&gt;Se agrega una barra de progreso adicional para rastrear la descarga total Progreso. Esto reemplaza la opción anterior TotalDownload.&lt;/li&gt;
&lt;li&gt;Corregir las tasas de descarga que se vuelven negativas&lt;/li&gt;
&lt;li&gt;Omitir servidores espejo con demasiados errores&lt;/li&gt;
&lt;li&gt;Las firmas del paquete siempre se recuperan incluso si la firma es incrustado en la base de datos de repositorios o el paquete está en la caché&lt;/li&gt;
&lt;li&gt;Las firmas de paquetes independientes que se encuentran en CacheDir se pueden usar para verificar los paquetes si la firma no está en la base de datos. También verificar las sumas de comprobación de los paquetes desde la base de datos del repositorio cuando se usa detached firmas.&lt;/li&gt;
&lt;li&gt;Agregar soporte para múltiples valores de &lt;em&gt;&amp;lsquo;Arquitectura&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;-Qkk&lt;/em&gt; ahora valida las sumas de verificación de archivos además de la fecha / tamaño&lt;/li&gt;
&lt;li&gt;El resumen de actualización en color ahora atenúa los números de versión para el contraste&lt;/li&gt;
&lt;li&gt;Las interfaces libalpm ahora pueden proporcionar contexto a las devoluciones de llamada&lt;/li&gt;
&lt;li&gt;Soporte xattr al extraer paquetes&lt;/li&gt;
&lt;li&gt;Permitir la configuración &amp;ndash;noprogressbar en pacman.conf -&lt;/li&gt;
&lt;li&gt;Corregir la alineación de salida para el texto traducido de CJK&lt;/li&gt;
&lt;li&gt;Corrige los objetivos de lectura de stdin cuando se usa &lt;em&gt;&amp;ndash;sysroot&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Corregir la eliminación de firmas para bases de datos existentes con &lt;em&gt;-Sc&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Comprobar y prohibir la descarga de nombres de archivos duplicados&lt;/li&gt;
&lt;li&gt;&lt;em&gt;-Fx&lt;/em&gt; ahora informa de un error por expresiones regulares no válidas&lt;/li&gt;
&lt;li&gt;Eliminar el soporte para el sistema de compilación de autotools&lt;/li&gt;
&lt;li&gt;Meson: compila correctamente los símbolos internos como ocultos&lt;/li&gt;
&lt;li&gt;Meson: make -uninstalled.pc correcto&lt;/li&gt;
&lt;li&gt;Corregir errores de compilación en sistemas como &lt;strong&gt;FreeBSD&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;makepkg&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Agregar soporte de optimización de tiempo de enlace a makepkg&lt;/li&gt;
&lt;li&gt;Agregar soporte para fuentes que usan el VCS fósil&lt;/li&gt;
&lt;li&gt;Permitir especificar comandos de autenticación alternativos cuando ejecutando pacman como root&lt;/li&gt;
&lt;li&gt;Soporte de descompresión zstd para fuentes&lt;/li&gt;
&lt;li&gt;&lt;em&gt;strip&lt;/em&gt;: corrige la eliminación de atributos de archivo como xattr&lt;/li&gt;
&lt;li&gt;Cambiar a CRC como suma de verificación de integridad predeterminada&lt;/li&gt;
&lt;li&gt;Record &lt;em&gt;$startdir&lt;/em&gt; para compilaciones reproducibles&lt;/li&gt;
&lt;li&gt;Registrar el nombre de la herramienta de orquestación de compilación para compilaciones reproducibles&lt;/li&gt;
&lt;li&gt;Arreglar la firma de paquetes fuente&lt;/li&gt;
&lt;li&gt;Agregar soporte de argumento opcional a parseopts&lt;/li&gt;
&lt;li&gt;Reducir la dependencia del archivo para detectar archivos &lt;em&gt;ELF&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Eliminar la dependencia de GNU sed&lt;/li&gt;
&lt;li&gt;Evitar espacios en blanco finales en la salida &amp;ndash;printsrcinfo&lt;/li&gt;
&lt;li&gt;&lt;em&gt;libprovides&lt;/em&gt;: no proporcione versiones tanto con versión como sin versión sonames&lt;/li&gt;
&lt;li&gt;No &lt;em&gt;distcc&lt;/em&gt; de doble capa en ccache&lt;/li&gt;
&lt;li&gt;Corregir la detección de nombres de archivos de origen para paquetes de depuración con &lt;em&gt;gcc 11&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;strip&lt;/strong&gt;: silencia las advertencias emitidas por readelf mientras detecta nombres de archivo de origen&lt;/li&gt;
&lt;li&gt;Corregir el uso de espacios en el cambio de nombre del archivo fuente&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pacman-key&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&amp;ndash;refresh-keys&lt;/em&gt; consulta WKD antes del servidor de claves&lt;/li&gt;
&lt;li&gt;Sea menos ruidoso al llenar el llavero&lt;/li&gt;
&lt;li&gt;Advierte sobre el tiempo necesario para la generación de la clave maestra&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;repo-add&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Admite los mismos métodos de compresión que &lt;em&gt;makepkg&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Finalización de &lt;em&gt;zsh&lt;/em&gt;: agregue soporte &lt;em&gt;pacman-conf&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Varias actualizaciones de documentación&lt;/li&gt;
&lt;li&gt;Después de una década y media de documentación prometedora de &lt;em&gt;libalpm.3&lt;/em&gt; &lt;strong&gt;&amp;ldquo;una vez que logremos realizar una buena documentación de Doxygen&amp;rdquo;, ¡pasó!&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="pamac-no-pudo-soportar-la-emocion"&gt;
Pamac no pudo soportar la emocion
&lt;a href="#pamac-no-pudo-soportar-la-emocion" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Tantas novedades nos emociona a todos incluso a nuestro querido GUI pamac que desde que actualices a la versión 6 de pacman quedará tan emocionado que no volverá a abrir.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://c2.staticflickr.com/2/1739/40662649560_57b7477f00_o.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Lamentablemente toda esta actualización generó discompatibilidad con pamac y ya no podemos usar este gestor gráfico por un tiempo hasta que se actualice… Claramente que no va a actualizarse por sí solo por lo cual te dejamos un comando que vas a ir pegando en la terminal dia a dia hasta que entre la actualización se encuentre pamac&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ATENCIÓN: Si pamac lo instalaste desde aur tendrás que usar yay en vez de pacman para actualizar&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -Syu&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacman -Syu&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Stream Tools</title><link>https://patojad.com.ar/post/2021/05/stream-tools/</link><pubDate>Mon, 31 May 2021 09:10:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/05/stream-tools/</guid><description>&lt;p&gt;En esta oportunidad vengo a contar en algo que trabajé hace mucho y esta funcional pero nunca lo comente. Claramente no es un gran aporte pero espero algún día terminar de expandirlo y ofrecer más opciones.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Las herramientas que creamos tienen como fin ser realmente simple de usar para poder dar la mejor experiencia a los streamers que están iniciando y no disponen de los recursos o conocimientos como para personalizar sus Streams. También está orientado al mundo de GNU/Linux aunque puede ser utilizado en cualquier plataforma&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/WThR0szw/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esto consiste en unas herramientas un tanto predefinidas que son perfectamente configurables para que cada streamer la personalice para agregar a sus directos o porque no algun youtube a sus videos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="requisitos-base"&gt;
Requisitos Base
&lt;a href="#requisitos-base" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Estas herramientas se hicieron pensando en OBS por lo cual necesitamos tener OBS instalado y el complemento conocido como &lt;strong&gt;Browser&lt;/strong&gt; que nos permite mostrar una web. El mismo podemos ver su instalación desde la &lt;a href="https://patojad.com.ar/aplicaciones/2021/05/linux-browser-obs/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
siguiente publicación
&lt;/a&gt;. Una vez que tengamos todo esto podemos generar nuestro link desde la web de StreamTolls.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/BbyZ6Qq9/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://streamtools.patojad.com.ar/docs/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Stream Tools Docs
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-uso"&gt;
El uso
&lt;a href="#el-uso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El uso está más detallado en la documentación que dejamos arriba, pero básicamente consiste en modificar los links de ejemplos manteniendo en cuenta los parámetros de la siguiente tabla:&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1" style="text-align: left"&gt;Parámetro&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Descripción&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: left"&gt;Formato&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Ejemplo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: left"&gt;title&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Es el título principal del third&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: left"&gt;&lt;strong&gt;Tipo:&lt;/strong&gt; Texto &lt;strong&gt;Tamaño máximo:&lt;/strong&gt; 9&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;PatoJAD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: left"&gt;subtitle&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Es el subtítulo del third&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: left"&gt;&lt;strong&gt;Tipo:&lt;/strong&gt; Texto &lt;strong&gt;Tamaño máximo:&lt;/strong&gt; 7&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;UrT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: left"&gt;color&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;El color para la decoración&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: left"&gt;&lt;strong&gt;Tipo:&lt;/strong&gt; hexadecimal&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;f0f313&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;Seguramente en un futuro se agreguen más tipos de contenido, sin embargo por el momento solo tenemos disponibles los thirds genéricos que se ven en la documentación.&lt;/p&gt;</description></item><item><title>Instalar el Zen Kernel</title><link>https://patojad.com.ar/post/2021/05/instalar-el-zen-kernel/</link><pubDate>Thu, 27 May 2021 09:18:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/05/instalar-el-zen-kernel/</guid><description>&lt;p&gt;Dentro del mundo de &lt;strong&gt;GNU/Linux&lt;/strong&gt; existe muchísimo software libre incluso &lt;strong&gt;Linux&lt;/strong&gt; el kernel de este sistema, y al ser libre cualquiera puede compilarlo y configurarlo como quiera, incluso publicarlo. En esta oportunidad vamos a ver cómo instalar un kernel modificado por la comunidad para mejorar el rendimiento bajo demanda, es un kernel muy bueno para quienes les gusta jugar, entre otras cosas.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/gkd80yH4/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sobre-zen"&gt;
Sobre Zen
&lt;a href="#sobre-zen" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Zen es el kernel conocido como Liquorix compilado para Arch y este kernel presenta muchísimas mejoras entre las que podemos ver:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Liquorix es un reemplazo del kernel de distribución creado con la mejor configuración y fuentes de kernel para cargas de trabajo de escritorio, multimedia y juegos.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zen Interactive Tuning:&lt;/strong&gt; ajusta el kernel para mejorar la capacidad de respuesta a costa del rendimiento y el uso de energía.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--- Virtual Memory Subsystem ---------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Mem dirty before &lt;span class="nb"&gt;bg&lt;/span&gt; writeback..: &lt;span class="m"&gt;10&lt;/span&gt; % -&amp;gt; &lt;span class="m"&gt;20&lt;/span&gt; %
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Mem dirty before sync writeback: &lt;span class="m"&gt;20&lt;/span&gt; % -&amp;gt; &lt;span class="m"&gt;50&lt;/span&gt; %
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--- Block Layer ----------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Default MQ scheduler......: mq-deadline -&amp;gt; bfq
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--- CPU Scheduler &lt;span class="o"&gt;(&lt;/span&gt;CFS&lt;span class="o"&gt;)&lt;/span&gt; --------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Scheduling latency.............: &lt;span class="m"&gt;6&lt;/span&gt; -&amp;gt; &lt;span class="m"&gt;3&lt;/span&gt; ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Minimal granularity............: 0.75 -&amp;gt; 0.3 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Wakeup granularity.............: &lt;span class="m"&gt;1&lt;/span&gt; -&amp;gt; 0.5 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CPU migration cost.............: 0.5 -&amp;gt; 0.25 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Bandwidth slice size...........: &lt;span class="m"&gt;5&lt;/span&gt; -&amp;gt; &lt;span class="m"&gt;3&lt;/span&gt; ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--- CPU Scheduler &lt;span class="o"&gt;(&lt;/span&gt;MuQSS&lt;span class="o"&gt;)&lt;/span&gt; ------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Scheduling interval............: &lt;span class="m"&gt;6&lt;/span&gt; -&amp;gt; &lt;span class="m"&gt;4&lt;/span&gt; ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ISO task max realtime use......: &lt;span class="m"&gt;70&lt;/span&gt; % -&amp;gt; &lt;span class="m"&gt;25&lt;/span&gt; %&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Programador de procesos MuQSS:&lt;/strong&gt; programador de procesos justo para juegos, multimedia y cargas en tiempo real.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Programación de alta resolución:&lt;/strong&gt; tiempos de espera de alta resolución y frecuencia de tick de 1000 Hz para una programación precisa de tareas con baja fluctuación.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RCU jerárquica basada en árboles no garantizada:&lt;/strong&gt; implementación de RCU para sistemas en tiempo real.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prevención de kernel duro:&lt;/strong&gt; Prevención de kernel más agresiva antes de requerir parches en tiempo real. Garantiza un sistema receptivo en escenarios de cargas de trabajo mixtas de alta intensidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Budget Fair Queue:&lt;/strong&gt; programador de disco adecuado optimizado para el uso de escritorio, alto rendimiento / baja latencia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control de congestión TCP BBR2:&lt;/strong&gt; Control de congestión rápido, maximiza el rendimiento, garantizando velocidades más altas que Cubic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reemplazo directo del núcleo de distribución:&lt;/strong&gt; configuración de estilo de distribución adecuada que admite la selección más amplia de hardware. Opciones de paravirtualización habilitadas para reducir la sobrecarga bajo virtualización.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Depuración mínima:&lt;/strong&gt; número mínimo de opciones de depuración habilitadas para aumentar el rendimiento del kernel.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;iframe src='https://www.youtube.com/embed/OLiOcArU5fM?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Primero debemos instalar el kernel, esto lo podemos hacer con pacman o con yay de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S linux-zen linux-zen-header&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S linux-zen linux-zen-header&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Si venís de distribuciones basadas en Debian ya intentaste reiniciar, pero como se demuestra en el video no funciona asi, por lo cual es necesario actualizar el GRUB.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo update-grub&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Linux Browser OBS</title><link>https://patojad.com.ar/post/2021/05/linux-browser-obs/</link><pubDate>Wed, 26 May 2021 14:44:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/05/linux-browser-obs/</guid><description>&lt;p&gt;Lo primero obviamente es descargar la última versión disponible el cual lo podemos hacer desde el siguiente link&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bazukas/obs-linuxbrowser/releases" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Descargar linuxbrowser
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Luego nos tenemos que asegurar de crear la carpeta de plugins de OBS para dejar el plugin ahí lo cual podemos hacerlo con el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.config/obs-studio/plugins&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Después de tener la carpeta creada, procedemos a descomprimir ahi dentro lo que descargamos recientemente, podes hacerlo a manopla y si vos queres amigarte con la terminal te dejo aca el comando que tenes que usar&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar -zxvf linuxbrowser0.6.1-obs23.0.2-64bit.tgz -C &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.config/obs-studio/plugins/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://github.com/bazukas/obs-linuxbrowser/raw/master/img/obs-linuxbrowser.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Este comando está asumiendo que vos estás en la carpeta donde lo descargaste. Por ultimo tenes que asegurarte de tener estas dependencias instaladas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OBS-Studio (Mas que obvio)&lt;/li&gt;
&lt;li&gt;libgconf&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Y ya podes abrir el OBS estudio y cuando agregues una nueva Fuente va a figurar Linux Browser donde podemos agregar sitios webs.&lt;/p&gt;</description></item><item><title>eXternOS una propuesta diferente</title><link>https://patojad.com.ar/post/2021/05/externos-una-propuesta-diferente/</link><pubDate>Thu, 20 May 2021 10:05:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/05/externos-una-propuesta-diferente/</guid><description>&lt;p&gt;En esta oportunidad me dedique un poco a probar y comentar esta distro, como siempre cuento cosas que me gustan y no. Pero creo que en el video no aclaro que esta distro puede ser disruptiva en linux y puede presentar una nueva forma de ver el mundo de las PC&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/xvDjgS5WwW8?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="aplicaciones-propias"&gt;
Aplicaciones Propias
&lt;a href="#aplicaciones-propias" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://externos.io/wp-content/uploads/2017/04/4th-1920x918.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;eXtern&lt;/strong&gt; viene con software dedicado a la reproducción de video y audio. Cada software se ha ajustado para ofrecer la mejor experiencia de reproducción para el sistema operativo. Ademas incluye un poderoso navegador web con total compatibilidad con las últimas tecnologías web.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="creado-en-nwjs"&gt;
Creado en NW.js
&lt;a href="#creado-en-nwjs" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Permite una nueva forma de escribir aplicaciones con todas las tecnologías web&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://externos.io/wp-content/uploads/2017/01/devkit_reduced-1024x551.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Nuevamente vemos como las tecnologias web estan intentando salir del navegador para migrar a nuestro escritorio y consolidarse como una tecnologia mas abarcativa.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Soporte completo para las API de Node.js y todos los módulos de terceros.&lt;/li&gt;
&lt;li&gt;Llame a los módulos Node.js directamente desde DOM y Web Workers.&lt;/li&gt;
&lt;li&gt;Protección de código fuente JavaScript.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="requerimientos-mínimos"&gt;
Requerimientos mínimos
&lt;a href="#requerimientos-m%c3%adnimos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;em&gt;Estas especificaciones ya no son precisas. Espere la versión Beta 2 para ver las especificaciones revisadas.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intel® Celeron® 64-bit 1.2 GHz (or equivalent) or better.&lt;/li&gt;
&lt;li&gt;2 GiB of Ram (System Memory).&lt;/li&gt;
&lt;li&gt;VGA capable of 1366×768 screen resolution.&lt;/li&gt;
&lt;li&gt;Para esta versión beta, se recomienda tener una conexión a Internet activa para obtener las últimas actualizaciones de eXtern OS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://externos.io/latest/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Obteniendo .deb de apps instaladas</title><link>https://patojad.com.ar/post/2021/04/obteniendo-.deb-de-apps-instaladas/</link><pubDate>Fri, 23 Apr 2021 10:31:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/04/obteniendo-.deb-de-apps-instaladas/</guid><description>&lt;p&gt;Es común que muchas veces encontremos en alguna distro una app que sea única de esta distro y nos gusta mucho. En esta oportunidad vamos a portear o a recuperar los instalados en las distribuciones basadas en Debian/Ubuntu.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalando-repack"&gt;
Instalando repack
&lt;a href="#instalando-repack" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Lo primero es instalar las dependencias o mejor dicho las app necesaria para poder rearmar los paquetes .deb para poder llevarlos a otras distros. Esto lo vamos a instalar de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install dpkg-repack&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="usando-repack"&gt;
Usando Repack
&lt;a href="#usando-repack" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Realmente es muy simple, repack nos permite generar .deb desde paquetes ya instalados, lo cual nos permite acceder a cualquier app instalada esté o no en el repositorio. Si se instaló con un deb podemos volver a generar el deb&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dpkg-repack nombre-de-la-app&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>¿Como instalar Wine?</title><link>https://patojad.com.ar/post/2021/04/como-instalar-wine/</link><pubDate>Fri, 16 Apr 2021 09:36:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/04/como-instalar-wine/</guid><description>&lt;p&gt;Ya con anterioridad me consultaron de como instalar Wine en Artix, esto me llevó a armar el video y obviamente siempre a explicar mi perspectiva o punto de vista sobre el uso de wine. En esta oportunidad el video es específico de distros basadas en Arch. Sin embargo, en la parte inferior van a poder encontrar la instalación para otras distros de linux.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="pre-requisitos"&gt;
Pre requisitos
&lt;a href="#pre-requisitos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si venis por Artix o cualquier distro de Arch te recomiendo que veas de antemano las instalaciones y configuraciones de las que hago uso en el video y doy por sabido estas son&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2021/03/activar-multilib-artix/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Multilib
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2020/10/instalar-yay-en-artix-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
yay
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como siempre disfruto mucho de armar videos y dejar mi opinion asi que sin rodeos los dejo con el video&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/47A2KBLgj6I?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalar-winehq"&gt;
Instalar WineHQ
&lt;a href="#instalar-winehq" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://linuxhint.com/wp-content/uploads/2020/06/1-12.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Lo primero que debemos hacer es instalar WineHQ en nuestra distribución, para esto debemos agregar las librerías y ejecutar la instalación.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="debian"&gt;
Debian
&lt;a href="#debian" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Habilitamos los 32 bits&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dpkg --add-architecture i386&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Descargamos e instalamos a Key&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget -nc https://dl.winehq.org/wine-builds/winehq.key
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-key add winehq.key&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Agregamos el repositorio dependiendo de nuestra versión&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Version&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Agregar a /etc/apt/sources.list:&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Debian 8 (Jessie)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;deb &lt;a href="https://dl.winehq.org/wine-builds/debian/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://dl.winehq.org/wine-builds/debian/
&lt;/a&gt; jessie main&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Debian 9 (Stretch)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;deb &lt;a href="https://dl.winehq.org/wine-builds/debian/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://dl.winehq.org/wine-builds/debian/
&lt;/a&gt; stretch main&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Debian 10 (currently Testing) (Buster)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;deb &lt;a href="https://dl.winehq.org/wine-builds/debian/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://dl.winehq.org/wine-builds/debian/
&lt;/a&gt; buster main&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;Actualizamos el Sistema&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Instalamos uno de los paquetes&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;version&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;comando&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Stable branch&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;sudo apt install &amp;ndash;install-recommends winehq-stable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Development branch&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;sudo apt install &amp;ndash;install-recommends winehq-devel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Staging branch&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;sudo apt install &amp;ndash;install-recommends winehq-staging&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="fedora"&gt;
Fedora
&lt;a href="#fedora" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Agregamos los repositories&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;version&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;comando&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Fedora 29&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;dnf config-manager &amp;ndash;add-repo &lt;a href="https://dl.winehq.org/wine-builds/fedora/29/winehq.repo" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://dl.winehq.org/wine-builds/fedora/29/winehq.repo
&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Fedora 30&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;dnf config-manager &amp;ndash;add-repo &lt;a href="https://dl.winehq.org/wine-builds/fedora/30/winehq.repo" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://dl.winehq.org/wine-builds/fedora/30/winehq.repo
&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;E instalamos la version que deseamos&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;version&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;comando&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Stable branch&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;dnf install winehq-stable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Development branch&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;dnf install winehq-devel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Staging branch&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;dnf install winehq-staging&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;Para otras distribuciones o BDS o MacOS revisar en su &lt;a href="https://wiki.winehq.org/Download" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
sitio oficial
&lt;/a&gt;&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arch"&gt;
Arch
&lt;a href="#arch" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Si estás en una distro basada en arch lo que recomiendo es instalar wine-staging que es, personalmente la instalación que me dio un mejor rendimiento. En mi caso lo hice con yay pero puedes hacerlo directamente con pacman&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S wine-staging&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>¿Que es la SWAP?</title><link>https://patojad.com.ar/post/2021/04/que-es-la-swap/</link><pubDate>Mon, 12 Apr 2021 10:31:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/04/que-es-la-swap/</guid><description>&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/fRZDFyS4/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Durante las instalaciones siempre nos aparece la opción de generar una partición de SWAP. Eventualmente en linux los usuarios más nuevos suelen dejar todo tal cual viene. Por eso mismo la idea de hoy es comentar un poco como funciona este tipo de memoria, para que se utiliza y que cada uno determine si es necesario o no en su caso particular.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="como-ver-la-memoria"&gt;
¿Como ver la memoria?
&lt;a href="#como-ver-la-memoria" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/BbktH0mS/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Existen comandos que nos permiten ver la memoria disponible y/o ocupada. Así mismo recomiendo el uso de free. Gracias a la opción -h que trae disponible es mucho más simple entender los números que veremos en la terminal. El comando lo podemos usar de esta forma:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;free -h&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cuanto-debo-usar"&gt;
¿Cuanto debo usar?
&lt;a href="#cuanto-debo-usar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Y0Yj6PZQ/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La verdad este punto es muy debatido y a estas alturas ya sabemos que nadie tiene la verdad absoluta. Sin embargo cada uno puede contribuir desde su experiencia. Yo en lo personal discrepo levemente con lo que compartieron en la imagen. Si bien en panel general esta bien yo lo pondria de la siguiente forma:&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Memoria&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;SWAP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Mem =&amp;lt; 3&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Mem x 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;3 &amp;lt; Mem &amp;lt;= 8&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Mem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;8 &amp;lt; Mem&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Mem / 2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;Como podemos ver los valores son, en panel general, muy similares pero con leve modificación en los rangos. Sin embargo existen personas que no utilizan swap. Por ejemplo muchos avalan que con un SSD no es necesario tener SWAP&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No te olvides de dejar tu propia regla de SWAP en los comentarios.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-hibernación"&gt;
La Hibernación
&lt;a href="#la-hibernaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/wBwfXqmY/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La Hibernación, cuando se vuelve un caso de uso para el usuario de linux. Desacredita automáticamente cualquier tabla diseñada. Dado que si nosotros queremos hacer uso de esta función es necesario tener un tamaño de swap que soporte de forma correcta la Hibernación. Cuando hibernamos el equipo toda la RAM pasa a la SWAP y es ahí donde debemos tener como mínimo la misma cantidad. Sin embargo es recomendable tener siempre un poco más.&lt;/p&gt;</description></item><item><title>Ventoy Armando un USB MultiBoot</title><link>https://patojad.com.ar/post/2021/04/ventoy-armando-un-usb-multiboot/</link><pubDate>Mon, 05 Apr 2021 11:46:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/04/ventoy-armando-un-usb-multiboot/</guid><description>&lt;p&gt;Ventoy es una &lt;strong&gt;herramienta&lt;/strong&gt; muy útil que convierte una unidad flash USB en un sistema de &lt;strong&gt;arranque múltiple&lt;/strong&gt;, lo que permite cargar tantos sistemas operativos como ISOs tengas en el pendrive. Adicional a esto nos permite tener sistemas de forma &lt;strong&gt;persistente&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://pclosmag.com/html/Issues/202008/images/page07/VentoyBootMenu.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ventoy soporta múltiples distribuciones de Linux pero asi mismo tambien funciona con Windows y Otros sistemas operativos dado que ejecuta directamente desde la ISO. Esto se vuelve algo muy cómodo porque sólo será descargar el sistema que queramos y pasarlo al Pendrive.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="características"&gt;
Características
&lt;a href="#caracter%c3%adsticas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Podemos añadir varias ISO al mismo pendrive. Cuando añadimos más de una, al iniciar desde el USB veremos un menú que nos permitirá elegir qué ISO iniciar.&lt;/li&gt;
&lt;li&gt;Disponible para Windows y Linux.&lt;/li&gt;
&lt;li&gt;Incluye interfaz gráfica, pero sólo en Windows. Los usuarios de Linux tenemos que usar el terminal o la Web Local que trae.&lt;/li&gt;
&lt;li&gt;El USB se podrá seguir usando como un pendrive normal, lo que significa que podremos guardar documentos en el espacio libre. Si necesitamos más espacio, sólo tenemos que eliminar una o varias de las imágenes añadidas.&lt;/li&gt;
&lt;li&gt;Soporte para «Legacy» y «UEFI Secure Boot».&lt;/li&gt;
&lt;li&gt;Funciona con más de 260 imágenes, entre las que se incluyen las más populares como &lt;strong&gt;Debian/Ubuntu&lt;/strong&gt;, &lt;strong&gt;CentOS&lt;/strong&gt;, &lt;strong&gt;RHEL&lt;/strong&gt;, &lt;strong&gt;Windows 7-10&lt;/strong&gt; y otras menos populares como &lt;strong&gt;ALT Linux&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Soporte para persistencia (guarda los cambios).&lt;/li&gt;
&lt;li&gt;Soportados los archivos de inicio &lt;strong&gt;WIM&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Soporta imágenes ISO de más de 4GB.&lt;/li&gt;
&lt;li&gt;Posibilidad de actualizar la instalación de Ventoy (que recordamos que se realiza en el pendrive) sin formatear.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La idea del video es explicar un poco más sobre esta hermosa herramienta y explicar cómo instalarla desde linux con su web local para que todos los usuarios puedan hacerlo sin problemas.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/0BgO2y138oc?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;</description></item><item><title>Activar Multilib Artix</title><link>https://patojad.com.ar/post/2021/03/activar-multilib-artix/</link><pubDate>Wed, 24 Mar 2021 17:03:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/03/activar-multilib-artix/</guid><description>&lt;p&gt;En esta oportunidad volvemos con un tutorial orientado a Artix Linux o mejor dicho a Arch en general. Si bien puede que los usuarios más habituales esto lo tengan incorporado. Puede que los usuarios nuevos no lo sepan o ignoren esto por lo cual quería dejar un video conciso.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-video"&gt;
El Video
&lt;a href="#el-video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como estoy intentando actualizarse con los videos estoy intentando ser conciso y dar la información sin divagar mucho.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/OusBLacPkPA?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="adicional"&gt;
Adicional
&lt;a href="#adicional" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Les dejo los comandos que utilizo en el video y que es lo que hacen. Esto es util si no estas acostumbrado a escribir comandos en la terminal:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Si multilib&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Sirve para averiguar si se encuentra habilitado o no el repositorio.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo cat /etc/pacman.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Imprime en pantalla la configuración del archivo localizado en /etc/pacman.conf&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nano /etc/pacman.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Permite editar el archivo de configuracion&lt;/p&gt;</description></item><item><title>Reducir consumo de Steam</title><link>https://patojad.com.ar/post/2021/03/reducir-consumo-de-steam/</link><pubDate>Thu, 11 Mar 2021 09:50:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/03/reducir-consumo-de-steam/</guid><description>&lt;p&gt;Steam es una de las plataformas de videojuegos más grandes del mundo. Y los usuarios de linux contamos con esta plataforma nativa desde hace muchos años. En esta oportunidad vamos a intentar sacarle un poco más de provecho reduciendo el consumo de la plataforma para poder obtener un mejor resultado a la hora de jugar en nuestros equipos. Es posible jugar en equipos de pocos recursos y lo mejor es tratar de optimizar el consumo de todo el sistema en general.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.muycomputer.com/wp-content/uploads/2018/09/steam-portada.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente una mejor explicación requiere de un video que hable por sí solo. En esta oportunidad les dejo la explicación de como funciona esto que vamos a hacer el día de hoy.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/jZJwsmZ2t0g?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="terminal"&gt;
Terminal
&lt;a href="#terminal" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Cómo prometo en el video dejo los los comandos que vamos a estar utilizando. Recordemos que para esto es necesario tener instalado steam en nuestros dispositivos y esto es compatible con cualquier distribución de linux dado que son características propias del cliente de Steam&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;steam -no-browser +open steam://open/minigameslist&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Con este comando podemos generar lanzadores y/o abrir el juego desde la terminal de una forma más “performante” donde no se habiliten los navegadores ni muchos procesos en segundo plano que eventualmente no utilizamos&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.howtogeek.com/wp-content/uploads/2020/10/steam-small-mode.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>¿KDE? ¿Arch? ¿Problemas?</title><link>https://patojad.com.ar/post/2021/03/kde-arch-problemas/</link><pubDate>Tue, 09 Mar 2021 09:21:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/03/kde-arch-problemas/</guid><description>&lt;p&gt;Si usas KDE en Arch seguramente tras la última actualización en tu sistema (después del sábado 6 de marzo) cuando se actualizo el qt5-webengine seguramente comenzaste a experimentar problemas en tu KDE con aplicaciones como Kmail, Falkon, Konqueror, entre otras. Todas estas aplicaciones que utilizan en visualizador web de QT están simplemente no mostrando nada.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-terminal-me-confunde"&gt;
La terminal me confunde
&lt;a href="#la-terminal-me-confunde" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Actualmente estoy en un proyecto con QT5-WebEngine y experimente exactamente el mismo problema, pase horas del domingo y el inicio del lunes intentando solucionar el error en base a la información que arroja la terminal:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;88642:88642:0308/160848.959329:ERROR:network_service_instance_impl.cc&lt;span class="o"&gt;(&lt;/span&gt;286&lt;span class="o"&gt;)]&lt;/span&gt; Network service crashed, restarting service.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;88642:88642:0308/160848.964451:ERROR:network_service_instance_impl.cc&lt;span class="o"&gt;(&lt;/span&gt;286&lt;span class="o"&gt;)]&lt;/span&gt; Network service crashed, restarting service.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;88642:88642:0308/160848.969386:ERROR:network_service_instance_impl.cc&lt;span class="o"&gt;(&lt;/span&gt;286&lt;span class="o"&gt;)]&lt;/span&gt; Network service crashed, restarting service.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Podemos ver si abrimos cualquiera de estas apps, que dejaron de funcionar correctamente, por terminal el error anteriormente mencionado como un bucle infinito. Este error no daba mucha información sobre el error.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="nueva-versión-nuevo-problema"&gt;
Nueva versión nuevo problema.
&lt;a href="#nueva-versi%c3%b3n-nuevo-problema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.lancetalent.com/blog/wp-content/uploads/actualizar-wordpress.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Se me dio por revisar la paqueteria de arch, donde siempre encuentro soluciones y esto sirvió para entender que el problema era de la versión qt5-webengine-5.15.3-2 que generaba este error en general. Por lo cual la solución no depende explícitamente de mi, o al menos hasta donde entendí.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-lo-soluciono"&gt;
¿Cómo lo soluciono?
&lt;a href="#c%c3%b3mo-lo-soluciono" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/gjK49PGk/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Así como el tiempo cura todas las heridas hay que esperar a que se actualice a la nueva versión donde este error este. Ya, en lo que a Arch respecta, hay un ticket cargado y hay alguien que está llevando y esperamos que pronto obtengamos la actualización que nos permita solventar este error.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bugs.archlinux.org/index.php?do=details&amp;amp;action=details.addvote&amp;amp;task_id=69902" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Reporte del BUG
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Dia internacional de la Mujer - La lucha continua</title><link>https://patojad.com.ar/post/2021/03/dia-internacional-de-la-mujer-la-lucha-continua/</link><pubDate>Mon, 08 Mar 2021 12:10:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/03/dia-internacional-de-la-mujer-la-lucha-continua/</guid><description>&lt;p&gt;Hoy es el día internacional de la mujer, y por eso creemos que es nuestra responsabilidad hablar del tema como corresponde, puede que esto se “aleje” un poco de la temática del blog, pero es importante hablar de estos temas siempre.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/WXHezQ4khdg?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;El Día Internacional de la Mujer, también conocido como Día Internacional de la Mujer Trabajadora, conmemora la lucha de la mujer por su participación dentro de la sociedad, en pie de emancipación de la mujer y en su desarrollo íntegro como persona. Se conmemora el 8 de marzo.​ Fue institucionalizado por las Naciones Unidas en 1975 con el nombre de Día Internacional de la Mujer.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="una-lucha-que-incluye-a-todos"&gt;
Una lucha que incluye a todos
&lt;a href="#una-lucha-que-incluye-a-todos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://riod.org/wp-content/uploads/2019/03/IWD-2019_ES_InFocus-960x450.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;A lo largo de la humanidad siempre las peleas fueron en busca de la igualdad. Es un instinto en algunos seres intentar marcar superioridad. Pero hoy todos sabemos que eso no existe, no importa raza, &lt;strong&gt;género&lt;/strong&gt;, color, creencia, ni nada… Somos todos iguales y todos debemos ser tratados con igualdad.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/Iobgyyi1tvE?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Este dia, mas que nunca, todos juntos debemos pelear por la igualdad, una lucha que solo se pierde si dejamos de pelear.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="historia"&gt;
Historia
&lt;a href="#historia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.elcinco.mx/sites/default/files/2020-03/mujerhjb.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La primera propuesta para la celebración del Día Internacional de la Mujer se hizo en 1910, durante el Segundo Encuentro Internacional de las Mujeres Socialistas, donde fue planteado como un acto de solidaridad con las huelgas textiles que se celebraban en ese momento y por la promulgación del día nacional de la mujer en Estados Unidos. El hecho puntual que se conmemora ocurrió el 25 de marzo de 1911, cuando más de 100 trabajadoras textiles, mujeres inmigrantes en su mayoría, murieron en el incendio de la fábrica de Triangle Shirtwaist de Nueva York, como consecuencia de las precarias condiciones laborales de las que eran presas.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://90minutos.co/wp-content/uploads/2019/03/conmemoracion-8-de-marzo-dia-internacional-mujer-08-03-2019.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esta tragedia se conmemora el 8 de marzo porque en el marco de los movimientos en pro de la paz durante la Primera Guerra Mundial, el 8 de marzo de 1917 las trabajadoras textiles de Petrogrado (San Petesburgo) organizaron un huelga obrera que se sumó al movimiento popular que acabó con la monarquía en Rusia. El Día de la Mujer fue institucionalizado por la ONU en 1975 para conmemorar la lucha de las mujeres trabajadoras y se celebra oficialmente desde 1994 en EE UU. Este 2018 se ha convocado en 41 países una huelga feminista.&lt;/p&gt;</description></item><item><title>Las 4 Libertades del Software Libre</title><link>https://patojad.com.ar/post/2021/03/las-4-libertades-del-software-libre/</link><pubDate>Fri, 05 Mar 2021 10:10:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/03/las-4-libertades-del-software-libre/</guid><description>&lt;p&gt;El Software Libre es todo programa informático cuyo código fuente puede ser estudiado, modificado, y utilizado libremente con cualquier fin y redistribuido con o sin cambios o mejoras. De acuerdo con la definición establecida por Richard Stallman, un Software es &lt;em&gt;&amp;ldquo;libre&amp;rdquo;&lt;/em&gt; cuando garantiza las siguientes 4 libertades:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/XYKvx8xn/software-libre-competenciadigital-4-728.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Estas son las cuatro libertades esenciales de los usuarios tal y como las define la FSF:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La libertad de ejecutar el programa como se desea, con cualquier propósito (libertad 0).&lt;/li&gt;
&lt;li&gt;La libertad de estudiar cómo funciona el programa, y cambiarlo para que haga lo que usted quiera (libertad 1). El acceso al código fuente es una condición necesaria para ello.&lt;/li&gt;
&lt;li&gt;La libertad de redistribuir copias para ayudar a su prójimo (libertad 2).&lt;/li&gt;
&lt;li&gt;La libertad de distribuir copias de sus versiones modificadas a terceros (libertad 3). Esto le permite ofrecer a toda la comunidad la oportunidad de beneficiarse de las modificaciones. El acceso al código fuente es una condición necesaria para ello.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;iframe src='https://www.youtube.com/embed/psnWhp--IaI?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="libertad-de-uso"&gt;
Libertad de uso
&lt;a href="#libertad-de-uso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La primera libertad es la que nos permite darle a un programa el uso que Nosotros deseemos. Esto a lo largo de la historia muchas veces fue un arma de doble filo dado que muchos sistemas fueron utilizados con malas intenciones. Aun asi la limitación de la libertad no es la solución por eso mismo esta sigue siendo la primer libertad y una de las mas importantes.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="libertad-de-estudio"&gt;
Libertad de estudio
&lt;a href="#libertad-de-estudio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Aquí ya empezamos a hacer uso del código fuente, dado que el mismo tiene que estar disponible para su estudio, saber como funciona, que es lo que hace y que contiene dentro. Es importante en este caso aclarar que tiene que estar el 100% del código y no solo una parte (ej. Telegram que solo nos ofrece el código del cliente y no del servidor)&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="libertad-de-distribución"&gt;
Libertad de distribución
&lt;a href="#libertad-de-distribuci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Esta libertad nos permite distribuir el programa ya sea gratuitamente o de pago. Recordemos que el Software Libre no significa software gratuito. Muchas veces puede ser de pago y aun así respeta todas las libertades (Parece ser un negocio que no cierra pero esta ganando terreno).&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="libertad-de-mejora"&gt;
Libertad de mejora
&lt;a href="#libertad-de-mejora" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Cualquier miembro de la comunidad puede compartir mejoras del sistema y con ella enriquecer el proyecto.&lt;/p&gt;
&lt;p&gt;Estas son las 4 libertades que deben cumplir un sistema para ser tomado como Software Libre.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="open-source"&gt;
Open Source
&lt;a href="#open-source" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Así como la ética del Software Libre se define en cuatro puntos, la Open Source Iniciative tiene diez requisitos a cumplir por parte de un proyecto o las licencias bajo las que se publica para que pueda ser definido como de código abierto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Libre redistribución&lt;/strong&gt;: La licencia del software no debe impedir que este sea regalado o vendido libremente como parte de una distribución mayor que contenga programas de diferentes fuentes. Tampoco debe exigir un pago por hacerlo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Código fuente&lt;/strong&gt;: A la hora de publicar un programa tiene que incluirse su código fuente íntegro o permitir acceder libremente a él.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trabajos derivados&lt;/strong&gt;: Las licencias deben permitir modificaciones y trabajos derivados, y debe permitir que estos se distribuyan bajo los mismos términos que el software original.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integridad del código fuente del autor&lt;/strong&gt;: Se puede impedir la distribución de modificaciones únicamente si se permite la distribución de tales como parches. También se puede requerir que trabajos derivados cambien de nombre o número de versión.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin discriminación de personas o grupos&lt;/strong&gt;: No se puede discriminar a ninguna persona o grupo a la hora de acceder a un programa o su código.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin discriminación de áreas de iniciativa&lt;/strong&gt;: Tampoco le se puede restringir su acceso a ninguna iniciativa. Las empresas o grupos de investigación tienen tanto derecho como el resto a utilizar el software.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distribución de la licencia&lt;/strong&gt;: Los derechos asociados en las licencias de los programas deben aplicarse a todos a los que lo redistribuyan sin necesidad de pedir una licencia adicional.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La licencia no debe ser específica de un producto&lt;/strong&gt;: Un programa no puede licenciarse únicamente como parte de un software mayor. Podrá ser extraído y utilizado libremente y con todos los derechos en otras soluciones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La licencia no debe restringir otro software&lt;/strong&gt;: El hecho de que un proyecto sea de código abierto no puede obligar a que los programas en los que se incluye sean también de código abierto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La licencia debe ser tecnológicamente neutral&lt;/strong&gt;: Ninguna disposición de la licencia puede basarse en la tecnología o un estilo de interfaz, con lo que, por ejemplo, no se debe requerir su aceptación mediante gestos explícitos como clicks de ratón.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Rolling Release vs Point Release</title><link>https://patojad.com.ar/post/2021/03/rolling-release-vs-point-release/</link><pubDate>Tue, 02 Mar 2021 09:12:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/03/rolling-release-vs-point-release/</guid><description>&lt;p&gt;Esto suele ser una pregunta muy cotidiana en los grupos, &lt;strong&gt;¿Qué es mejor?&lt;/strong&gt; Siempre podemos ver a los usuarios defendiendo lo que ellos utilizan como si lo demás no diera resultado. Hoy en particular, vengo a contar mi experiencia y cuando elijo RR o PR dependiendo las necesidades.&lt;/p&gt;
&lt;p&gt;Antes de iniciar quiero aclarar que esto no es encasillado, ambos tipos de actualización sirven para todo y se puede usar perfectamente para lo que se desee, acá pretendo, con mi experiencia, ayudar a elegir a los usuarios.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="según-el-uso"&gt;
Según el uso
&lt;a href="#seg%c3%ban-el-uso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Dependiendo del uso podemos discriminar los que exigen la mayor performance en situaciones de estrés y los usuarios simples. En el primer grupo entran gamers o stremers, diseñadores y editores de videos. Estos requieren siempre ir a la impronta del kernel para poder mejorar la performance de sus procesos y por eso a este grupo le recomiendo Rolling Release.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.computerhoy.com/sites/navi.axelspringer.es/public/styles/480/public/media/image/2020/03/olvidate-comprar-silla-gaming-llegan-camas-gaming-1882221.jpg?itok=lnWK14Ov%22%3e%7d%7d" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.computerhoy.com/sites/navi.axelspringer.es/public/styles/480/public/media/image/2020/03/olvidate-comprar-silla-gaming-llegan-camas-gaming-1882221.jpg?itok=lnWK14Ov"&gt;}}
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En cambio al resto de los usuarios, internautas, jugadores casuales, etc. Pueden tranquilamente suplir todas sus necesidades con una distribución Point Release.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="según-la-máquina"&gt;
Según la máquina
&lt;a href="#seg%c3%ban-la-m%c3%a1quina" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://culturageek.com.ar/wp-content/uploads/2020/12/Culturageek.com_.ar-Corsair-05.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En caso de que nuestro equipo sea más antiguo es recomendable distribuciones Point Release. En cambio los equipos más nuevos es recomendable ir por Rolling Release dado que la sección de drivers y performance se actualiza semana a semana.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="según-el-uso-1"&gt;
Según el uso
&lt;a href="#seg%c3%ban-el-uso-1" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Hoy mucha gente relaciona Rolling Release con algo inestable, y esto no es para nada cierto sin embargo es verdad que para algunos usos no es recomendable este estilo de actualizaciones. En el caso de usuarios simples y servidores es recomendable las distribuciones Point Release. En cualquier otro caso, siempre y cuando actualices todos los dias, te recomendaria tener Rolling Release&lt;/p&gt;</description></item><item><title>Manjaro WebDad</title><link>https://patojad.com.ar/post/2021/02/manjaro-webdad/</link><pubDate>Fri, 26 Feb 2021 08:53:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/02/manjaro-webdad/</guid><description>&lt;p&gt;Hace ya un tiempo di mi opinión sobre &lt;a href="https://patojad.com.ar/instalaciones/2020/11/ubuntu-web-remix/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Ubuntu web
&lt;/a&gt;, y en los recientes días, con el aumento del uso de ChromeOS parece ser que esta distro es una excelente idea. Sin embargo, por otro camino diferente existe un joven que desarrolló un escritorio que lo podríamos definir como &amp;ldquo;Lo que Ubuntu Web no pudo&amp;rdquo; dado que es aún más embebible con esta idea.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="manjaro-webdad"&gt;
Manjaro WebDad
&lt;a href="#manjaro-webdad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Vamos a hablar de este sabor de manjaro que viene con el escritorio JADE. En particular no voy a extenderme con las novedades de su escritorio, dado que ya mucho lo hicieron en youtube. Pero si quiero plantar lo que puede llegar a significar este tipo de cambio y perspectiva.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/jGdmbYL3JB4?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Como prometí en el video voy a dejar algunos datos sobre la distro que pueden llegar a ser muy interesantes.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="su-propio-launcher"&gt;
Su propio launcher
&lt;a href="#su-propio-launcher" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://raw.githubusercontent.com/codesardine/Jadesktop/master/jade.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;JADE nos ofrece un launcher que corre nativamente en su desktop, el mismo es &lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt; y es realmente muy fluido y no consume tantos recursos como, por ejemplo, &lt;a href="https://patojad.com.ar/aplicaciones/2020/05/ulauncher/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
ulanucher
&lt;/a&gt; o &lt;a href="https://patojad.com.ar/aplicaciones/2020/05/cerebro/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
cerebro
&lt;/a&gt; que son dos grandes launchers.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="fondos-en-movimiento"&gt;
Fondos en movimiento
&lt;a href="#fondos-en-movimiento" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Adicional a esto también nos ofrece los tan populares fondos en movimiento que muchos agregan con apps como Komorebi. Pero nuevamente lo hace desde una etiqueta &lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt; lo cual es mucho menos costoso que desarrollar una app que lo haga.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="altamente-personalizable"&gt;
Altamente personalizable.
&lt;a href="#altamente-personalizable" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/MGMv0q6W/Captura-de-pantalla-de-2020-11-20-15-52-06.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Este Escritorio, al estar desarrollado en &lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt; (En lo que a su interfaz respecta) permitiría que cualquiera con un buen conocimiento en este lenguaje de etiquetas lo personalice al máximo obteniendo increíbles resultados&lt;/p&gt;</description></item><item><title>Flatpack no siempre es un enemigo</title><link>https://patojad.com.ar/post/2021/02/flatpack-no-siempre-es-un-enemigo/</link><pubDate>Mon, 22 Feb 2021 10:12:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/02/flatpack-no-siempre-es-un-enemigo/</guid><description>&lt;p&gt;Si bien muchas veces explique porque el uso de flatpack y gestores similares que empaquetan todas las librerías necesarias generando apps al mejor estilo MS-DOS no son recomendables. El hecho de que no prefiera usarlas no implica que sea un desertor de la misma, hoy pretendo explicar cuando, &lt;strong&gt;desde mi punto de vista,&lt;/strong&gt; es ideal el uso de este tipo de paqueterias.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://ubunlog.com/wp-content/uploads/2019/12/flatpak-cover.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lo-estable-vs-lo-que-necesito"&gt;
Lo estable vs lo que necesito
&lt;a href="#lo-estable-vs-lo-que-necesito" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Antes de empezar con el tema que nos compete, lo ideal es explicar porque estos estilos de paquetería &lt;strong&gt;SI&lt;/strong&gt; pueden ser una idea genial. Muchas personas siempre buscan tener una distribución estable donde no tengan que preocuparse por actualizaciones y posibles rupturas del sistema. En ese caso el precio a pagar es ver novedades en la web como las de VLC y Audacious pero saber que hay que esperar mucho para poder siquiera probarlo. Esto se volvió un gran problema viendo lo estable que se fueron poniendo las distros Rolling que traen estas novedades siempre al N+1&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://blog.desdelinux.net/wp-content/uploads/2011/10/rolling.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="flatpack-y-sus-amigos-salvando-las-distros"&gt;
Flatpack y sus amigos salvando las distros…
&lt;a href="#flatpack-y-sus-amigos-salvando-las-distros" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Gracias a este sistema de paquetería muchas veces es más simple utilizar un flatpack o appimage que intentar compilar las apps y todas sus dependencias sin romper el OS Base. En estos casos (como audacious en Debian) Flatpack permite aprovechar la experiencia estable y ligera de debian probando aplicaciones más nuevas sin dañar el sistema.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://ubunlog.com/wp-content/uploads/2019/05/Eliminar-por-completo-Flatpak-Snap-Appimage.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="un-estándar-para-todas-las-distros"&gt;
¿Un estándar para todas las distros?
&lt;a href="#un-est%c3%a1ndar-para-todas-las-distros" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Esta idea es realmente paupérrima. Si bien puede que este tipo de paqueteria sea ideal para &lt;strong&gt;SUPLIR algún defecto&lt;/strong&gt; no implica que la distro deba moverse pura y exclusivamente en estos tipos de paqueterias. Lo ideal es seguir viéndolo como un complemento para salvar algunos posibles problemas y no como una solución mágica que, como otras, terminan atentando contra el hardware y la performance.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.redd.it/81vlrnefp8e41.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="tu-opinión"&gt;
Tu opinión
&lt;a href="#tu-opini%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Cual es tu opinión sobre este tipo de paqueterias, ¿Lo usas?¿Lo usarías? ¿Qué tiene de bueno y qué tiene de malo?&lt;/p&gt;</description></item><item><title>Tilix un gran emulador de terminal</title><link>https://patojad.com.ar/post/2021/02/tilix-un-gran-emulador-de-terminal/</link><pubDate>Thu, 18 Feb 2021 09:13:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/02/tilix-un-gran-emulador-de-terminal/</guid><description>&lt;p&gt;En linux somos muchos los que usamos terminal, diría que la gran mayoría y cada uno tiene sus propias diferencias o elecciones, pero como siempre digo, esto no debería obnubilarlos para poder conocer “nuevas” apps. En este caso voy a compartir un emulador de terminal que si bien escuche hablar mucho no lo hubiera usado de no ser por Pipe que me lo recomendó fuertemente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="que-ofrece"&gt;
¿Que ofrece?
&lt;a href="#que-ofrece" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Eventualmente siempre buscamos que ofrece A o que ofrece B, muchas veces la gran lista de cosas desarrolladas no son tan importantes como las propias obtenidas por los usuarios, aun así dejamos esa lista de cosas que ofrece segun su repositorio de GIT:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://camo.githubusercontent.com/829c1c31ee4acdd88e55585d638e33202bdc3c947c9426c597d133cf7734bb95/68747470733a2f2f676e756e6e312e6769746875622e696f2f74696c69782d7765622f6173736574732f696d616765732f67616c6c6572792f74696c69782d73637265656e73686f742d312e706e67" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Diseñe los terminales de cualquier manera dividiéndolos horizontal o verticalmente&lt;/li&gt;
&lt;li&gt;Los terminales se pueden reorganizar usando arrastrar y soltar tanto dentro como entre ventanas&lt;/li&gt;
&lt;li&gt;Los terminales se pueden separar en una nueva ventana mediante arrastrar y soltar&lt;/li&gt;
&lt;li&gt;Las pestañas o la barra lateral enumeran las sesiones actuales&lt;/li&gt;
&lt;li&gt;La entrada se puede sincronizar entre terminales, por lo que los comandos escritos en un terminal se replican en los demás.&lt;/li&gt;
&lt;li&gt;La agrupación de terminales se puede guardar y cargar desde el disco&lt;/li&gt;
&lt;li&gt;Los terminales admiten títulos personalizados&lt;/li&gt;
&lt;li&gt;Los esquemas de color se almacenan en archivos y se pueden crear esquemas de color personalizados simplemente creando un nuevo archivo&lt;/li&gt;
&lt;li&gt;Fondo transparente&lt;/li&gt;
&lt;li&gt;Imágenes de fondo&lt;/li&gt;
&lt;li&gt;Soporte del modo Quake (es decir, terminal desplegable)&lt;/li&gt;
&lt;li&gt;Hipervínculos personalizados&lt;/li&gt;
&lt;li&gt;Cambios de perfil automáticos (activados) basados ​​en el nombre de host y el directorio&lt;/li&gt;
&lt;li&gt;Admite notificaciones cuando los procesos se completan fuera de la vista.&lt;/li&gt;
&lt;li&gt;Soporte de disparador experimental (requiere VTE parcheado)&lt;/li&gt;
&lt;li&gt;Soporte de insignia experimental (requiere VTE parcheado)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sin embargo como dije antes puede llegar a ser enriquecedora la experiencia de los usuarios y por eso quiero contar como me sirvio a mi esto.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-experiencia"&gt;
Mi experiencia
&lt;a href="#mi-experiencia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para empezar cuando elegí usarlo fue solo porque realmente es un emulador rápido, nunca demoró en abrir y siempre pude usarlo cómodamente. Sin embargo, en lo personal, me simplificó el trabajo con servidores. Muchas veces tuve que actualizar múltiples servidores, instalar nuevas “apps” o actualizar, quizas compilar algunas… Todo esto podía hacer escribiendo una sola vez ya que se replicaba en todas las terminales que tenía organizadas de una forma cómoda gracias a su método “tilling”.&lt;/p&gt;
&lt;p&gt;Es muy útil si trabajamos con múltiples apps locales para desarrollar también dado que elimina el número de ventanas levantadas y obviamente mantiene una excelente performance.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Esta hermosa “terminal” se encuentra en todas las distros de GNU/Linux, o al menos en la gran mayoría. Por lo cual siempre se puede instalar desde los repositorios de la siguiente forma. Recordemos que estos comandos funcionan también con las derivadas.&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="debianubuntu"&gt;
Debian/Ubuntu
&lt;a href="#debianubuntu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install tilix&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="fedora"&gt;
Fedora
&lt;a href="#fedora" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install tilix&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arch"&gt;
Arch
&lt;a href="#arch" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S tilix&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;O con yay&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yay -S tilix/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Pokemon Revolution Online</title><link>https://patojad.com.ar/post/2021/02/pokemon-revolution-online/</link><pubDate>Wed, 17 Feb 2021 08:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/02/pokemon-revolution-online/</guid><description>&lt;p&gt;Todos algunas vez jugamos al pokemon de GBA, ya sea el Amarillo, El Rojo Fuejo, el Zafari o cualquier otro. Sin embargo este juego es muy &amp;ldquo;solitario&amp;rdquo; Y muchas veces preferimos jugarlo online con amigos. En esta oportunidad vamos a conocer un servidor que nos permite jugar a este mítico juego (Claramente con modificaciones y actualizaciones constantes) con otras personas, y también con amigos.&lt;/p&gt;
&lt;p&gt;Pokemon Revolution Online viene siendo un Free to Play que soporta prácticamente una variedad de SO, desde MS Windows x86, x64, Mac, GNU/Linux y Android. Por supuesto nos interesa ¡Porque está disponible para el pingüinito!.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Cxs0Qyxd/maxresdefault-pokemon.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En este juego, puedes viajar por cuatro regiones (Kanto, Johto, Hoenn y Sinnoh) siendo Kanto la inicial en todo caso. tras pasar a otra región tus pokémons serán retirados y empezarás de nuevo hasta lograr vencer la liga pokémon y así hasta acabar con las 3 ligas, pudiendo atrapar por el camino un máximo de 721 pokémons. Hay muchos desafíos, curiosidades y lo más importante: jugadores.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://pokemonrevolution.net/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Web
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conoce-a-tus-amigos"&gt;
Conoce a tus amigos
&lt;a href="#conoce-a-tus-amigos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;PRO ofrece muchas formas de desarrollar, mantener o crear nuevas amistades con una comunidad de más de 25.000 jugadores activos cada día. Existen muchos clanes o gremios creados por miembros de la comunidad dentro del juego, donde puedes unirte libremente, o ¡puedes crear uno propio!&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://pokemonrevolution.net/img/vermillion.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Actualmente hay 4 regiones principales dentro del juego, Kanto, Johto, Hoenn y Sinnoh, también existen numerosas áreas personalizadas que puedes explorar. Pruébate a ti mismo para convertirte en campeón regional y obtener los diferentes Pokémon Legendarios y Míticos que se esconden en el universo de PRO. Encontrarás muchas opciones de personalización disponibles como; ¡ropa, sombreros y monturas!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="pvp-competitivo"&gt;
PvP Competitivo
&lt;a href="#pvp-competitivo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;PRO ofrece una gran cantidad de opciones al final del juego para los entrenadores, con un ambiente PvP competitivo, construido en base al último formato Gen-7. Las batallas en PvP competitivo te darán acceso a una lista donde podrás luchar para estar entre el Top-25 de tu servidor, la lista mencionada es mensual. Cada batalla PvP que ganes te dará una pequeña recompensa y terminar entre el Top-25 de la lista puede darte recompensas increíbles, además de tener una posición importante, tendrás una invitación a un torneo exclusivo solo para los Top-25 entrenadores de ambos servidores, para obtener ¡muchos más premios!&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://pokemonrevolution.net/img/battle.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;¡También existen muchos jefes dentro del juego distribuidos entre múltiples regiones en los cuales podrás intentar superarlos en la mayor dificultad de batallas PvE! Cada jefe tiene composiciones diferentes con equipos de Pokémon únicos y requerimientos distintos, los cuales otorgarán ¡grandes recompensas si los derrotas!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="eventos-personalizados"&gt;
Eventos Personalizados
&lt;a href="#eventos-personalizados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://pokemonrevolution.net/img/event.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El equipo encargado del contenido de PRO está siempre trabajando para crear e implementar nuevas aventuras y áreas para que los jugadores accedan y exploren; ¡con mapas especiales y misiones únicas del universo de PRO! Además de actualizaciones y eventos de contenido base, PRO también ofrece muchos eventos oficiales organizados por el staff, y no oficiales organizados por jugadores para todo tipo de entrenadores; ¡amantes del PvP, cazadores, coleccionistas y más!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="descargas"&gt;
Descargas
&lt;a href="#descargas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Dejo a continuación el link de descarga por MediaFire (La versión de linux), también puedes ver todas las opciones en la página web. Y obviamente registrarte para comenzar tu Aventura Pokemon Online.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mediafire.com/file/8lmzq2sz06trgq8/PROClient_linux.zip/file" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descarga por MediaFire
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Privacidad ¿Cuál es el verdadero problema?</title><link>https://patojad.com.ar/post/2021/01/privacidad-cu%C3%A1l-es-el-verdadero-problema/</link><pubDate>Tue, 12 Jan 2021 08:51:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/01/privacidad-cu%C3%A1l-es-el-verdadero-problema/</guid><description>&lt;p&gt;La noticia reciente sobre los cambios de políticas de whatsapp que nos obligan a confirmar el cruce de datos para mantener la aplicación activa generó una gran repercusión en general. En esta oportunidad voy a utilizar como disparador este evento para indagar un poco dónde está realmente el problema de privacidad.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como dicho tema se volvió extenso para escribir tomé la decisión de plasmarlo en un video donde tocaré el tema desde mi experiencia y punto de vista.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/5Gcq9q4nu-I?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
¿Conclusión?
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Desde mi perspectiva creo que el problema radica en que esos datos existan, no solo en el hecho de que vayan a juntarse para obtener información más precisa de nosotros, el problema siempre parte desde el punto de que la información existe, y ellos la guardan y como tal, cada vez que obtienen un poco mas de informacion nos hacen un poco mas vulnerables.&lt;/p&gt;</description></item><item><title>Cambiando los permisos de un archivo</title><link>https://patojad.com.ar/post/2021/01/cambiando-los-permisos-de-un-archivo/</link><pubDate>Mon, 11 Jan 2021 09:20:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/01/cambiando-los-permisos-de-un-archivo/</guid><description>&lt;p&gt;Para cambiar el modo (los permisos) de un archivo o un directorio, se utiliza el comando chmod. chmod soporta dos formas distintas de especificar los cambios de permisos: representación en números octales o representación simbólica.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="números-octales"&gt;
Números octales
&lt;a href="#n%c3%bameros-octales" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Con la notación octal usamos números octales para especificar el patrón de los permisos que queremos. Como cada dígito en un número octal representa tres dígitos binarios, esto coincide muy bien con la forma de almacenar los permisos de archivo. Esta tabla muestra lo que queremos decir:&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Octal&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Binario&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Permisos de archivo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;0&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;000&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;&amp;mdash;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;1&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;001&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;&amp;ndash;x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;2&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;010&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;-w-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;3&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;011&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;-wx&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;4&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;100&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;r&amp;ndash;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;5&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;101&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;r-x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;6&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;110&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;rw-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;7&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;111&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;rwx&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;Usando tres dígitos octales, podemos establecer los permisos de archivo para el propietario, el grupo propietario y el mundo:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt; foo.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls -l foo.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-rw-r-- &lt;span class="m"&gt;1&lt;/span&gt; me me &lt;span class="m"&gt;0&lt;/span&gt; 2008-03-06 14:52 foo.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;600&lt;/span&gt; foo.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls -l foo.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw------- &lt;span class="m"&gt;1&lt;/span&gt; me me &lt;span class="m"&gt;0&lt;/span&gt; 2008-03-06 14:52 foo.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Pasándole el argumento “600”, podemos establecer los permisos del propietario para leer y escribir mientras borramos todos los permisos para el grupo propietario y el mundo. Aunque recordar la correspondencia entre octal y binario puede parecer un inconveniente, normalmente sólo tendrás que usar algunos muy comunes: 7(rwx), 6(rw-), 5(r-x), 4(r&amp;ndash;), y 0(&amp;mdash;).&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="notación-simbólica"&gt;
Notación simbólica
&lt;a href="#notaci%c3%b3n-simb%c3%b3lica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;chmod también soporta notación simbólica para especificar los permisos de archivo. La notación simbólica se divide en tres partes: a quién afecta el cambio, qué operaciónes se realizarán, y qué permisos se establecerán. Para especificar quién se ve afectado se usa una combinación de los caracteres “u”, “g”, “o” y “a” de la siguiente manera:&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Símbolo&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Significado&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;u&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Abreviatura de “usuario” pero significa el propietario del archivo o el directorio.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;g&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;El grupo propietario.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;o&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Abreviatura de “otros”, pero se refiere al mundo.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;a&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Abreviatura de “all” (todos). Es la combinación de “u”, “g” y “o”&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;Si no se especifica ningún carácter, se asume “all”. La operación puede ser un “+” indicando que un permiso ha de ser añadido, un “-” indicando que un permiso ha de ser retirado, o un “=” indicando que sólo los permisos especificados deben ser aplicados y todos los demás han de ser eliminados.&lt;/p&gt;
&lt;p&gt;Los permisos se especifican con los caracteres “r”, “w” y “x”. Aquí tenemos algunos ejemplos de la notación simbólica:&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Notación&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Significado&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;u+x&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Añade permisos de ejecución para el propietario&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;u-x&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Elimina permisos de ejecución del propietario&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;+x&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Añade permisos de ejecución para el propietario, el grupo y el mundo. Equivalente a a+x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;o-rw&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Elimina los permisos de lectura y escritura para cualquier persona, que no sea el propietario ni el grupo propietario.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;go=rw&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Configura al grupo propietario y a cualquier persona, que no sea el propietario, para que tengan permisos de lectura y escritura. Si el grupo propietario o el mundo previamente tenían permisos de ejecución, los elimina.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;u+x, go=rx&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Añade permisos de ejecución para el propietario y establece los permisos para el grupo y para otros de lectura y ejecución. Múltiples especificaciones pueden ser separadas por comas.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;Algunos prefieren usar la notación octal, otros prefieren la simbólica. La notación simbólica ofrece la ventaja de permitirte establecer un atributo individual sin molestar a los otros.&lt;/p&gt;
&lt;p&gt;Échale un vistazo a la &lt;a href="https://patojad.com.ar/post/2019/01/man-tu-manual-para-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
man page
&lt;/a&gt; de chmod para más detalles y una lista de opciones. Una advertencia con respecto a la opción “&amp;ndash;recursive”: actúa tanto en archivos como en directorios, así que no es tan útil como uno esperaría, rara vez queremos que archivos y directorios tengan los mismos permisos.&lt;/p&gt;</description></item><item><title>¿Realmente Deepin arruinó todo?</title><link>https://patojad.com.ar/post/2021/01/realmente-deepin-arruin%C3%B3-todo/</link><pubDate>Wed, 06 Jan 2021 10:50:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/01/realmente-deepin-arruin%C3%B3-todo/</guid><description>&lt;p&gt;Dada mi última publicación sobre esta distro muchos preguntaron porque digo que “deepin arruino todo”. Entiendo que hay muchos puntos de vista opuestos y por eso quiero aclarar que el siguiente punto de vista es nada más ni nada menos que mi punto de vista y no una verdad absoluta.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="busca-ofrecer-algo-que-no-ofrece"&gt;
Busca ofrecer algo que no Ofrece
&lt;a href="#busca-ofrecer-algo-que-no-ofrece" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Deepin es una distribución que busca resaltar entre todas las demás, esto lo busca hacer con su propio ecosistema de aplicaciones. Así mismo busca ser la distro definitiva que tras instalarla no requieres nada mas de ninguna distro. Esto parece ser algo que Deepin suele cumplir si omitimos muchas cosas, sin embargo existen cosas básicas que Deepin no le ofrece a los usuarios y vamos a ir viéndolas una a una.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="estabilidad"&gt;
Estabilidad
&lt;a href="#estabilidad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Deepin es la Distro más inestable de todas las no Roling release, Cada actualización estabiliza una porción de la distro y desestabiliza otra, y cada salto de versión tiene 3 cambios de look 2 apps nuevas y rompe todo lo que medianamente funcionaba. Esto es algo que puede pasar, y a muchas distros les pasó en algún momento. Pero eventualmente esto pasa durante el inicio de las distribuciones. En cambio en Deepin es una forma de vida. Podríamos decir que es una distro perfecta para el que quiera emoción en su vida.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="come-mucho-ofrece-poco"&gt;
Come mucho ofrece poco
&lt;a href="#come-mucho-ofrece-poco" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Si bien Deepin es una distro que en consumo asemeja a Gnome ofrece menos que el mismo Gnome (y hay que ofrecer menos que Gnome). Deepin se integra perfectamente con sus propias apps pero deja excluidas a las demás apps en cuanto a visualización. También caemos en la cuenta de que es muy poco personalizable… Y ahí es donde nos preguntamos ¿Para qué queres tantos recursos si sos básicamente una foto? Todos los #viernesDeEscritorios de Deepin son iguales, solo cambio el lado de la barra los iconos y algunos usan conky&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalación-única"&gt;
Instalación Única
&lt;a href="#instalaci%c3%b3n-%c3%banica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Deepin al dia de la fecha sigue siendo incapaz de ofrecer una instalación única, ¿Que quiero decir? Que cada cambio de versión no solo implica desestabilizar todo lo que venías usando, adicionalmente a esto tenes que reinstalar de 0. Si bien Deepin ofrece la posibilidad de upgradear como cualquier distro cada versión inicia con una base diferente y eso implica que todo quede obsoleto y difícil de actualizar. Y seamos realistas, ningún usuario final (Pensando en doña maria que quiere hablar con sus nietos) quiere reinstalar cada x tiempo el S.O.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="no-le-puede-pasar-a-cualquiera"&gt;
¿No le puede pasar a cualquiera?
&lt;a href="#no-le-puede-pasar-a-cualquiera" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente todo lo que dije antes a todos, incluso a mi, me parece que no es algo tan grave cuando lo comparamos con todo lo que desarrollaron. Sin embargo hay un &lt;strong&gt;agravante&lt;/strong&gt; que hace todo esto mucho más repudiable. Y si, el agravante de todo esto es que Deepin está siendo desarrollado por una empresa, no por una comunidad. Si bien el modelo es igual al de RHEL(Tema del que tengo pendiente hablar), Deepin escucha mucho menos a su comunidad y sigue sacando cosas deplorables para su versión community.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="entonces-no-tengo-que-usar-deepin"&gt;
Entonces… ¿No tengo que usar Deepin?
&lt;a href="#entonces-no-tengo-que-usar-deepin" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente no digo esto, tampoco digo que es una mala distribución, la prefiero antes que a Ubuntu. Sin embargo, mi “molestia” con deepin es que dice ser mucho más de lo que es, y eso no esta mal si cada actualización buscará ser más como dice que es, pero cada update (Que demora más de 6 meses) no suma nada a las problemáticas. En vez de corregir un bug cambian un icono. No es algo que me gustaría para mi distribución main.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Deepin 20.1 ¿Renace?</title><link>https://patojad.com.ar/post/2021/01/deepin-20.1-renace/</link><pubDate>Mon, 04 Jan 2021 09:10:00 +0000</pubDate><guid>https://patojad.com.ar/post/2021/01/deepin-20.1-renace/</guid><description>&lt;p&gt;Deepin fue una distribución que cumplía los requisitos para derrocar efectivamente a Ubuntu como la primera distro de medio mundo. Sin embargo, el pasaje de su versión 15 a 20 destruyó lo que con tanto empeño habían logrado los desarrolladores en mucho tiempo de desarrollo.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Gt9MRY4z/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Sin embargo, el lanzamiento de la versión 20.1 parece ser lo que esta distro necesitaba para demostrar que encontró el camino y que está luchando por la supremacía…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="una-versión-que-entendió-el-punto"&gt;
Una versión que entendió el punto.
&lt;a href="#una-versi%c3%b3n-que-entendi%c3%b3-el-punto" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/QCBDHFBx/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si bien podemos recalcar muchas cosas nuevas en esta nueva versión es importante recalcar que hay un arduo trabajo en corregir errores y mejorar la performance. Algo que a Deepin le hacía muchísima falta porque se estaba volviendo muy pesado y tampoco ofrece mucho como para consumir todo eso.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="las-novedades-avanzan"&gt;
Las novedades avanzan
&lt;a href="#las-novedades-avanzan" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Podría tirarme horas comentando los errores de performance que corrigieron o los que faltan corregir pero esta actualización trae muchísimas novedades en cuanto a software que vale la pena resaltar.&lt;/p&gt;
&lt;p&gt;A partir de ahora Deepin cuenta con su propio navegador en lugar de Firefox que era el que venía por defecto. Este navegador se integra mucho más con el escritorio en cuanto estética que es lo que están intentando lograr.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/4yGMTnzS/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;También reemplaza Cheese por Camera su propia app para sacar fotos, Si bien deepin tiene algunas apps que no parecen ser necesarias porque no agregan mucho valor, en principio esta es una, entendamos que esto lo hacen para mejorar la integración de las apps usadas con su entorno/ecosistema.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/dttHRbnr/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Thunderbird es otra de las aplicaciones que son reemplazadas por el ya anunciado deepin email que a diferencia de la aplicación de la cámara su integración con el escritorio es su valor agregado, no porque los otros no se integren, sino porque sería una de las apps con una estética pulida y cuidada, sin embargo tendríamos que probarla más a fondo.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/vZKNZ0r9/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Y también Gparted es una app que ya tiene su reemplazo, y la versión de deepin procura, según ellos, ser más simple de usar y mucho más intuitivo. Pero nuevamente recalcamos que estas apps buscan, ante nada, concretar el ecosistema Deepin.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/XJfHx3Tc/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="actualizar"&gt;
Actualizar
&lt;a href="#actualizar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si queres actualizar para disfrutar de la nueva versión ya podes hacerlo por la terminal o el centro de control. Sin embargo si fuiste de los precavidos que no upgradeaste a la v20 porque era una basofia podes saltar a la v20.1 con un hermoso script que sugiere la misma web de deepin (En el caso de pedir contraseña es “deepin”)&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/htV2KKGF/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://wws.lanzous.com/ikMmqjmhtif" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar Script
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="descargar"&gt;
Descargar
&lt;a href="#descargar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si no tenes deepin y queres descargar la v20.1 para ver su novedades puedes descargarlo desde los siguientes links.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/v8pT5yGS/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cdimage.deepin.com/releases/20.1/deepin-desktop-community-1010-amd64.iso" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar Oficial
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://osdn.net/projects/deepin/storage/20.1_1010/deepin-desktop-community-1010-amd64.iso" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar OSDN
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sourceforge.net/projects/deepin/files/20.1/deepin-desktop-community-1010-amd64.iso" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar SourceForge
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://drive.google.com/drive/folders/1KKgXS24v2ty5pUbo-qbn9IePtTzblGzr?usp=sharing" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar Google Drive
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mediafire.com/folder/e2ohh529vlmcj/deepin_20.1%281010%29" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar BT (MF)
&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Controlar tu Celular por Wi-Fi</title><link>https://patojad.com.ar/post/2020/12/controlar-tu-celular-por-wi-fi/</link><pubDate>Mon, 21 Dec 2020 12:44:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/12/controlar-tu-celular-por-wi-fi/</guid><description>&lt;p&gt;Anteriormente hablamos de &lt;a href="https://patojad.com.ar/posts/2020/11/scrcpy/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
como utilizar nuestro celular con android desde nuestra PC
&lt;/a&gt;, aunque en este tutorial solo hablamos de como usarlo cuando nuestro celular esta conectado via USB. Sin embargo este método puede no ser el más cómodo en todos los casos y por eso un miembro de la comunidad nos facilitó el método para poder usarlo de la misma forma pero vía Wi-Fi. Es importante recalcar que &lt;strong&gt;tanto la PC como el dispositivo móvil tienen que estar en la misma red Wi-Fi.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="usarlo-por-wi-fi"&gt;
Usarlo por Wi-Fi
&lt;a href="#usarlo-por-wi-fi" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como dije de entrada este artículo le corresponde 100% a un usuario de la comunidad que me tiró un super mensaje para aclararme esto. Vale aclarar que esto está muy demorado ya que quise dejar pasar un tiempo para no ser tan repetitivo con los temas.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/BZzC6LnL/Captura-de-pantalla-de-2020-11-13-08-49-00.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Para poder hacer eso es importante habilitar ADB para poder utilizarlo por Wi-Fi por eso vamos a dejar a continuación toda la información necesaria que fue facilitado por Javier.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="habilitando-adb-sobre-wifi-en-android"&gt;
Habilitando ADB sobre Wifi en Android
&lt;a href="#habilitando-adb-sobre-wifi-en-android" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Paso 1:&lt;/strong&gt; Habilite la depuración de USB (Configuración de Android&amp;gt; Opciones de desarrollador&amp;gt; Marque Habilitar depuración de USB). Si ya venías usando este paso no es necesario dado que ya está habilitado&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paso 2:&lt;/strong&gt; Conecte su dispositivo a la PC a través de USB. Si bien vamos a usarlo vía Wi-Fi es necesario configurarlo por cable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paso 3:&lt;/strong&gt; Abrimos la terminal teniendo ADB instalado y vamos a poner los siguientes comandos:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb tcpip &lt;span class="m"&gt;5555&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Esto te dará un resultado:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restarting in TCP mode port: &lt;span class="m"&gt;5555&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Paso 4:&lt;/strong&gt; Ahora encuentra la dirección IP de tu Android en Configuración&amp;gt; Wifi&amp;gt; Avanzado. Anote su dirección IP. En algunas versiones de Android se encuentra dentro de Preferencias de Wi-Fi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paso 5:&lt;/strong&gt; En terminal escribimos:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb connect &amp;lt;dirección IP&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Reemplazando &amp;lt;dirección IP&amp;gt; con la que apuntamos anteriormente. Esto te daría un resultado:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;connected to &amp;lt;dirección IP&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Paso 6:&lt;/strong&gt; Ahora, para verificar si está conectado a ADB a través de WiFi, desconecte su dispositivo de USB y escriba:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb devices&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Esto debería darte un resultado:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;192.168.1.192:5555 device&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Has habilitado exitosamente la conexión a ADB a través de la red WiFi de tu Android.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="usando-scrcpy"&gt;
Usando Scrcpy
&lt;a href="#usando-scrcpy" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/7YTnTH5B/Captura-de-pantalla-de-2020-11-13-09-15-56.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Una vez que tenemos el dispositivo conectado correctamente (Sugiero mantener la ip estática para evitar tener que reconectar cuando nuestro dispositivo se reconecte a la red) También recuerden que es estrictamente necesario verificar la &lt;a href="https://patojad.com.ar/aplicaciones/2020/11/scrcpy/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
instalación que vimos en la publicación anterior
&lt;/a&gt;. Si todo lo anterior está OK vamos a poder usar el comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scrcpy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Edge en Linux</title><link>https://patojad.com.ar/post/2020/12/edge-en-linux/</link><pubDate>Fri, 18 Dec 2020 09:06:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/12/edge-en-linux/</guid><description>&lt;p&gt;Hace ya un tiempo arribó a las distros de linux el nuevo MS Edge que no es más que un chromiun modificado… Esto implicó entre los usuarios fuertes disputas y opiniones muy abruptas… Para no perder la costumbre hablamos de este tema hoy, cuando todos se olvidaron…&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/7af0a9/microsoft-edge-segundo-navegador-mas-usado-mundo/1366_2000.jpeg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como no podía ser menos, todo tema que demora mucho va a parar a youtube, ¿Por qué? nunca lo sabremos pero te dejamos este hermoso video para que vos también des tu opinión.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/peCck-Rg3To?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalar"&gt;
Instalar
&lt;a href="#instalar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://blog.desdelinux.net/wp-content/uploads/2020/09/edge-on-linux.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Seguramente sos una persona sensata que sabe que para opinar tenes que instalarlo, o simplemente quieres tenerlo en tu PC. Por esto mismo te dejo los pasos de instalación para que sea mucho más simple!&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="debianubuntu-y-derivados"&gt;
Debian/Ubuntu y derivados
&lt;a href="#debianubuntu-y-derivados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Basta con agregar los repositorios y la llave para asegurarnos de que sean los correctos, luego lo instalamos con nuestro amigo APT como siempre.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl https://packages.microsoft.com/keys/microsoft.asc &lt;span class="p"&gt;|&lt;/span&gt; gpg –dearmor &amp;gt; microsoft.gpg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo install -o root -g root -m &lt;span class="m"&gt;644&lt;/span&gt; microsoft.gpg /etc/apt/trusted.gpg.d/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sh -c ‘echo «deb &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;arch&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;amd64&lt;span class="o"&gt;]&lt;/span&gt; https://packages.microsoft.com/repos/edge stable main» &amp;gt; /etc/apt/sources.list.d/microsoft-edge-dev.list’
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rm microsoft.gpg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install microsoft-edge-dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalación-en-fedora-y-derivados"&gt;
Instalación en Fedora y derivados
&lt;a href="#instalaci%c3%b3n-en-fedora-y-derivados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Al igual que ubuntu y amigas es necesario agregar los repos, las llaves e instalarlo de la siguiente forma.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rpm –import https://packages.microsoft.com/keys/microsoft.asc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf config-manager –add-repo https://packages.microsoft.com/yumrepos/edge
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mv /etc/yum.repos.d/packages.microsoft.com_yumrepos_edge.repo /etc/yum.repos.d/microsoft-edge-dev.repo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install microsoft-edge-dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalación-en-opensuse-y-derivadas"&gt;
Instalación en openSUSE y derivadas
&lt;a href="#instalaci%c3%b3n-en-opensuse-y-derivadas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;El proceso es similar a los anteriores pero con los comandos correspondientes a esta distribución&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rpm –import https://packages.microsoft.com/keys/microsoft.asc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo zypper ar https://packages.microsoft.com/yumrepos/edge microsoft-edge-dev
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo zypper update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo zypper install microsoft-edge-dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arch-linux"&gt;
Arch Linux
&lt;a href="#arch-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Aca como siempre juega un papel enorme la comunidad ya que MS ni se molestó en armar un paquete pero por suerte existe yay y podemos hacer simplemente:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S microsoft-edge-dev-bin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>¿Como instalar Hamachi?</title><link>https://patojad.com.ar/post/2020/12/como-instalar-hamachi/</link><pubDate>Fri, 11 Dec 2020 09:13:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/12/como-instalar-hamachi/</guid><description>&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/2yhM8CmK/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Hamachi es una app que nos permite generar una red privada virtual, de esta forma podemos compartir recursos, jugar en “LAN”, y muchas cosas más con personas que no se encuentran en la misma red, o en el mismo país…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="debian-based"&gt;
Debian Based
&lt;a href="#debian-based" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para instalarlo en cualquier debian based tenemos que descargar el .deb e instalarlo, a continuación dejo los comandos actualizados al dia de la fecha.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://www.vpn.net/installers/logmein-hamachi_2.1.0.203-1_amd64.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dpkg -i logmein-hamachi_2.1.0.203-1_amd64.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install -f&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;En el caso de que tengas una pc 32 bits, tranca palanca que estos ñatos tienen los 32 bits a manopla:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://www.vpn.net/installers/logmein-hamachi_2.1.0.203-1_i386.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dpkg -i logmein-hamachi_2.1.0.203-1_i386.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install -f&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="fedora-y-similares"&gt;
Fedora (y Similares)
&lt;a href="#fedora-y-similares" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;También puede ser que tengas por ahi Fedora, CentOS o RHEL y quieras tener hamachi, no hay drama la instalación es asi de simple.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://www.vpn.net/installers/logmein-hamachi-2.1.0.203-1.x86_64.rpm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rpm –i logmein-hamachi-2.1.0.203-1.x86_64.rpm&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Y si tu pc es 32 bits seria algo asi:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://www.vpn.net/installers/logmein-hamachi-2.1.0.203-1.i486.rpm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rpm –i logmein-hamachi-2.1.0.203-1.i486.rpm&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cualquier-otra-distro"&gt;
Cualquier otra distro
&lt;a href="#cualquier-otra-distro" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Existe una forma de instalarlo independientemente de la distro que estemos usando. Para esto debemos seguir los siguientes pasos:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://www.vpn.net/installers/logmein-hamachi-2.1.0.203-x64.tgz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar -xvzf logmein-hamachi-2.1.0.203-x64.tgz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; logmein-hamachi-2.1.0.203-x64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./install.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Y en el caso de tener un Linux con 32 Bits podemos hacerlo de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://www.vpn.net/installers/logmein-hamachi-2.1.0.203-x86.tgz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar -xvzf logmein-hamachi-2.1.0.203-x86.tgz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; logmein-hamachi-2.1.0.203-x86
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./install.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="arm"&gt;
ARM
&lt;a href="#arm" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Existen unos compilados en BETA para esta arquitectura, a continuación dejo la web oficial de descarga donde no solo podrán obtener los ARM sino también podrán comprobar que la versión que puse sea la más actualizada.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.vpn.net/linux" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
ARM en Linux
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="windows"&gt;
Windows
&lt;a href="#windows" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://imag.malavida.com/mvimgbig/download-fs/hamachi-1410-1.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En el caso de que uses Windows bastará con descargar el archivo .msi (Que veran a continuacion) e instalarlo con un doble click. Es importante recalcar que la descarga es directamente de la página oficial, no está alojado por este blog ni ningún otro&lt;/p&gt;
&lt;p&gt;&lt;a href="https://secure.logmein.com/hamachi.msi" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar Para Windows
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="macos"&gt;
MacOS
&lt;a href="#macos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://images.sftcdn.net/images/t_app-cover-m,f_auto/p/2bea4bde-96d7-11e6-878e-00163ed833e7/2690128288/logmein-hamachi-screenshot.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En el caso de usar el sistema de la manzanita me cuesta un poco más poder definir correctamente el procedimiento porque no uso este sistema pero si puedo facilitarte la descarga oficial de su sitio y de ahi calculo que no debe ser muy complejo&lt;/p&gt;
&lt;p&gt;&lt;a href="https://secure.logmein.com/LogMeInHamachi.zip" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar para MacOS
&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Trucos para la terminal</title><link>https://patojad.com.ar/post/2020/12/trucos-para-la-terminal/</link><pubDate>Thu, 10 Dec 2020 10:50:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/12/trucos-para-la-terminal/</guid><description>&lt;p&gt;Bash usa una biblioteca (una colección compartida de rutinas que pueden utilizar diferentes programas) llamada Readline para implementar la edición de la línea de comandos. Ya hemos visto algo de esto. Sabemos, por ejemplo, que las teclas de las flechas mueven el cursor, pero hay muchas más características. Piensa en ello como herramientas adicionales que podemos emplear en nuestro trabajo. No es importante aprenderlo todo sobre ellas, pero muchas son muy útiles. Cógelas y elígelas como quieras.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="movimiento-del-cursor"&gt;
Movimiento del cursor
&lt;a href="#movimiento-del-cursor" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La siguiente lista muestra las teclas usadas para mover el cursor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ctrl-a&lt;/strong&gt;: Mueve el cursor al principio de la línea.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl-e&lt;/strong&gt;: Mueve el cursor al final de la línea.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl-f&lt;/strong&gt;: Mueve el cursor un carácter hacia delante; igual que la flecha derecha.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl-b&lt;/strong&gt;: Mueve el cursor un carácter hacia atrás; igual que la flecha izquierda.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt-f&lt;/strong&gt;: Mueve el cursor hacia delante una palabra.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt-b&lt;/strong&gt;: Mueve el cursor hacia atrás una palabra.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl-l&lt;/strong&gt;: Borra la pantalla y mueve el cursor a la esquina superior izquierda. El comando clear hace lo mismo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="modificando-el-texto"&gt;
Modificando el texto
&lt;a href="#modificando-el-texto" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La lista a continuacion muestra los comandos de teclado que se usan para editar caracteres en la línea de comandos.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ctrl -d&lt;/strong&gt;: Borra un carácter en la localización del cursor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl -t&lt;/strong&gt;: Traspasa (intercambia) el carácter en la localización del cursor con el que le precede&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt -t&lt;/strong&gt;: Traspasa la palabra en la localización del cursor con la que le precede&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt -l&lt;/strong&gt;: Convierte los caracteres desde la localización del cursor hasta el final de la palabra a minúsculas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt -u&lt;/strong&gt;: Convierte los caracteres desde la localización del cursor hasta el final de la palabra a mayúsculas&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-meta-tecla"&gt;
La Meta tecla
&lt;a href="#la-meta-tecla" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si te aventuras en la documentación Readline, que puedes encontrar en la sección READLINE de la man page de bash, encontrarás el término “meta key”. En los teclados modernos se asigna a la tecla Alt pero no siempre fue así.&lt;/p&gt;
&lt;p&gt;Volviendo a los tiempos oscuros (antes de los Pcs pero después de Unix) no todo el mundo tenía su propio ordenador. Lo que podían tener era un dispositivo llamado terminal. Un terminal era un dispositivo de comunicación que contaba con una pantalla para mostrar texto y un teclado, y dentro la suficiente electrónica para mostrar caracteres de texto y mover el cursor. Estaba conectado (normalmente con un cable serie) a una computadora mayor o a la red de comunicación de una computadora mayor. Había muchas marcas diferentes de terminales y todas tenían configuraciones de pantalla y teclado diferentes. Como todas tendían al menos a entender ASCII, los desarrolladores de software querían escribir aplicaciones portables reducidas al mínimo común denominador. Los sistemas Unix tienen una forma muy elaborada de tratar con los terminales y sus pantallas. Como los desarrolladores de Readline no podían estar seguros de la presencia de una tecla de control extra, se inventaron una y la llamaron “meta”. Igual que la tecla Alt sirve como tecla meta en los teclados modernos, puedes también pulsar y soltar la tecla Esc para tener el mismo efecto que pulsando la tecla Alt si todavía estás usando un terminal (¡Lo que aún puedes hacer en Linux!).&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="completado"&gt;
Completado
&lt;a href="#completado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Otra forma en que el shell puede ayudarte es mediante un mecanismo llamado completado. El completado ocurre cuando presionas la tecla tabulador mientras escribes un comando. Veamos como funciona. Dado un directorio home que aparece así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[VasakOS@PatoJAD ~]$ ls
Desktop ls-output.txt Pictures Templates Videos
Documents Music Public
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Prueba escribiendo lo siguiente pero no pulses la tecla Enter:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[VasakOS@PatoJAD ~]$ ls l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora pulsa la tecla tabulador:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[VasakOS@PatoJAD ~]$ ls ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;¿Ves cómo el shell completa la línea por tí? Probemos otra vez. De nuevo, no pulses Enter:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[VasakOS@PatoJAD ~]$ ls D
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pulsa tab:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[VasakOS@PatoJAD ~]$ ls D
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No completa, sólo da un pitido. Esto ocurre porque “D” coincide con más de una entrada en el directorio. Para que el completado funcione, el “indicio” que le des no debe ser ambiguo. Si seguimos:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[VasakOS@PatoJAD ~]$ ls Do
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y pulsamos tab:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[VasakOS@PatoJAD ~]$ ls Documents
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El completado funciona.&lt;/p&gt;
&lt;p&gt;Aunque este ejemplo muestra el completado de nombres de archivo, que es su uso más común, el completado también funciona con variables (si el principio de la palabra es un “$”), nombres de usuario (si la palabra empieza con “~”), comandos (si la palabra es la primera en la línea.) y nombres de equipo (si la palabra empieza con “@”). El completado de nombres de equipo sólo funciona para los nombres de equipo listados en /etc/hosts.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="script"&gt;
script
&lt;a href="#script" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Además de la función del historial de comandos en bash, la mayoría de las distribuciones Linux incluyen un programa llamado script que se puede utilizar para grabar una sesión de shell completa y almacenarla en un archivo. La sintaxis básica del comando es:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;script [archivo]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;donde archivo es el nombre del archivo utilizado para almacenar la grabación. Si no se especifica ningún archivo, se usa el archivo typescript. Mira la man page de script para ver una lista completa de las opciones y funciones del programa.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>StreamLabels en Arch Linux</title><link>https://patojad.com.ar/post/2020/12/streamlabels-en-arch-linux/</link><pubDate>Wed, 09 Dec 2020 08:44:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/12/streamlabels-en-arch-linux/</guid><description>&lt;p&gt;Hace un tiempo hablamos de &lt;a href="https://patojad.com.ar/aplicaciones/2020/11/streamlabs-en-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
StreamLabs
&lt;/a&gt; y de como este nos puede servir para realizar streamings en GNU/Linux. También hablamos de su herramienta Stream Labels la cual tiene como disponible un .deb para que lo utilicemos en linux. Lamentablemente los .deb solo funcionan en distribuciones basadas en Debian/Ubuntu y eso no suele ser compatible con todos los que intentamos realizar Streaming dado que los que jugamos sabemos que el mejor rendimiento está en Arch Linux.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="una-explicación-no-basta"&gt;
Una explicación no basta
&lt;a href="#una-explicaci%c3%b3n-no-basta" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/W4mRQDLy/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si bien en aquel &lt;a href="https://patojad.com.ar/aplicaciones/2020/11/streamlabs-en-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
artículo
&lt;/a&gt; explique cómo debería realizarse la conversión para utilizarlo en Arch no creo que todo el mundo tenga que ponerse a ver estas cosas. Por lo cual decidí subirlo a AUR para que todo aquel que desee utilizarlo pueda hacerlo sin ningún problema. por lo cual, a partir de hoy si queremos utilizarlo basta con un solo comando para utilizarlo.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;Shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Shell" data-lang="Shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S streamlabels&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-funciona-aures-difícil-subir-mi-paquete"&gt;
¿Cómo funciona AUR?¿Es difícil subir mi paquete?
&lt;a href="#c%c3%b3mo-funciona-aures-dif%c3%adcil-subir-mi-paquete" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/tCpSktNL/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Realmente es muy sencillo, aunque vale aclarar que puede costar identificar bien en un inicio como hacerlo correctamente. Por lo cual a modo de muestra en esta oportunidad voy a dejar como está construido este repositorio de Stream Labels para que logren imaginarse como es. Todo el proceso del registro en AUR y demás confío en que pueden…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="pkgbuild"&gt;
PKGBUILD
&lt;a href="#pkgbuild" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Esta es la magia de AUR, con este archivo basta para subir un repo que esté disponible para todo el mundo. En este archivo vamos a encontrar, las sumas md5 de todos los archivos utilizados, el nombre del paquete, la versión, la descarga, el proceso de instalación, dependencias, descripción, etc…&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/QCbqwwJv/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;Shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Shell" data-lang="Shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Maintainer: Joaquin (Pato) Decima &amp;lt;https://patojad.com.ar/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;pkgname&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;streamlabels
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;pkgver&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0.3.8
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;pkgrel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;pkgdesc&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Stream Labels is an application that runs on your computer that generates text files. These text files contain stats, including your top donor for the day, your most recent follower, and many others.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;arch&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;x86_64&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://patojad.com.ar/aplicaciones/2020/12/streamlabels-en-arch-linux/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;license&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;GPL&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;source&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://s3-us-west-2.amazonaws.com/streamlabs-electron/streamlabels_0.3.8_amd64.deb&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;pjadalien.py&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;md5sums&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ade077aa9baf135de156b169d8d4ecd8&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;8b65bd2668e7b7acc0768e16841130bc&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;package&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$_pkgbase&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; python &lt;span class="nv"&gt;$srcdir&lt;/span&gt;/pjadalien.py &lt;span class="nv"&gt;$srcdir&lt;/span&gt;/streamlabels_0.3.8_amd64.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sudo pacman -U &lt;span class="nv"&gt;$srcdir&lt;/span&gt;/streamlabels-0.3.8-1-x86_64.pkg.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Como podemos ver este archivo usa 2 source, una que lo descarga desde la url y otro que se encuentra el en mismo repositorio, en este caso es un pjadalien.py que es nada más ni nada menos que archalien con una modificación para poder funcionar correctamente con el .deb que estamos utilizando.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;python&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt; 10
&lt;/span&gt;&lt;span class="lnt"&gt; 11
&lt;/span&gt;&lt;span class="lnt"&gt; 12
&lt;/span&gt;&lt;span class="lnt"&gt; 13
&lt;/span&gt;&lt;span class="lnt"&gt; 14
&lt;/span&gt;&lt;span class="lnt"&gt; 15
&lt;/span&gt;&lt;span class="lnt"&gt; 16
&lt;/span&gt;&lt;span class="lnt"&gt; 17
&lt;/span&gt;&lt;span class="lnt"&gt; 18
&lt;/span&gt;&lt;span class="lnt"&gt; 19
&lt;/span&gt;&lt;span class="lnt"&gt; 20
&lt;/span&gt;&lt;span class="lnt"&gt; 21
&lt;/span&gt;&lt;span class="lnt"&gt; 22
&lt;/span&gt;&lt;span class="lnt"&gt; 23
&lt;/span&gt;&lt;span class="lnt"&gt; 24
&lt;/span&gt;&lt;span class="lnt"&gt; 25
&lt;/span&gt;&lt;span class="lnt"&gt; 26
&lt;/span&gt;&lt;span class="lnt"&gt; 27
&lt;/span&gt;&lt;span class="lnt"&gt; 28
&lt;/span&gt;&lt;span class="lnt"&gt; 29
&lt;/span&gt;&lt;span class="lnt"&gt; 30
&lt;/span&gt;&lt;span class="lnt"&gt; 31
&lt;/span&gt;&lt;span class="lnt"&gt; 32
&lt;/span&gt;&lt;span class="lnt"&gt; 33
&lt;/span&gt;&lt;span class="lnt"&gt; 34
&lt;/span&gt;&lt;span class="lnt"&gt; 35
&lt;/span&gt;&lt;span class="lnt"&gt; 36
&lt;/span&gt;&lt;span class="lnt"&gt; 37
&lt;/span&gt;&lt;span class="lnt"&gt; 38
&lt;/span&gt;&lt;span class="lnt"&gt; 39
&lt;/span&gt;&lt;span class="lnt"&gt; 40
&lt;/span&gt;&lt;span class="lnt"&gt; 41
&lt;/span&gt;&lt;span class="lnt"&gt; 42
&lt;/span&gt;&lt;span class="lnt"&gt; 43
&lt;/span&gt;&lt;span class="lnt"&gt; 44
&lt;/span&gt;&lt;span class="lnt"&gt; 45
&lt;/span&gt;&lt;span class="lnt"&gt; 46
&lt;/span&gt;&lt;span class="lnt"&gt; 47
&lt;/span&gt;&lt;span class="lnt"&gt; 48
&lt;/span&gt;&lt;span class="lnt"&gt; 49
&lt;/span&gt;&lt;span class="lnt"&gt; 50
&lt;/span&gt;&lt;span class="lnt"&gt; 51
&lt;/span&gt;&lt;span class="lnt"&gt; 52
&lt;/span&gt;&lt;span class="lnt"&gt; 53
&lt;/span&gt;&lt;span class="lnt"&gt; 54
&lt;/span&gt;&lt;span class="lnt"&gt; 55
&lt;/span&gt;&lt;span class="lnt"&gt; 56
&lt;/span&gt;&lt;span class="lnt"&gt; 57
&lt;/span&gt;&lt;span class="lnt"&gt; 58
&lt;/span&gt;&lt;span class="lnt"&gt; 59
&lt;/span&gt;&lt;span class="lnt"&gt; 60
&lt;/span&gt;&lt;span class="lnt"&gt; 61
&lt;/span&gt;&lt;span class="lnt"&gt; 62
&lt;/span&gt;&lt;span class="lnt"&gt; 63
&lt;/span&gt;&lt;span class="lnt"&gt; 64
&lt;/span&gt;&lt;span class="lnt"&gt; 65
&lt;/span&gt;&lt;span class="lnt"&gt; 66
&lt;/span&gt;&lt;span class="lnt"&gt; 67
&lt;/span&gt;&lt;span class="lnt"&gt; 68
&lt;/span&gt;&lt;span class="lnt"&gt; 69
&lt;/span&gt;&lt;span class="lnt"&gt; 70
&lt;/span&gt;&lt;span class="lnt"&gt; 71
&lt;/span&gt;&lt;span class="lnt"&gt; 72
&lt;/span&gt;&lt;span class="lnt"&gt; 73
&lt;/span&gt;&lt;span class="lnt"&gt; 74
&lt;/span&gt;&lt;span class="lnt"&gt; 75
&lt;/span&gt;&lt;span class="lnt"&gt; 76
&lt;/span&gt;&lt;span class="lnt"&gt; 77
&lt;/span&gt;&lt;span class="lnt"&gt; 78
&lt;/span&gt;&lt;span class="lnt"&gt; 79
&lt;/span&gt;&lt;span class="lnt"&gt; 80
&lt;/span&gt;&lt;span class="lnt"&gt; 81
&lt;/span&gt;&lt;span class="lnt"&gt; 82
&lt;/span&gt;&lt;span class="lnt"&gt; 83
&lt;/span&gt;&lt;span class="lnt"&gt; 84
&lt;/span&gt;&lt;span class="lnt"&gt; 85
&lt;/span&gt;&lt;span class="lnt"&gt; 86
&lt;/span&gt;&lt;span class="lnt"&gt; 87
&lt;/span&gt;&lt;span class="lnt"&gt; 88
&lt;/span&gt;&lt;span class="lnt"&gt; 89
&lt;/span&gt;&lt;span class="lnt"&gt; 90
&lt;/span&gt;&lt;span class="lnt"&gt; 91
&lt;/span&gt;&lt;span class="lnt"&gt; 92
&lt;/span&gt;&lt;span class="lnt"&gt; 93
&lt;/span&gt;&lt;span class="lnt"&gt; 94
&lt;/span&gt;&lt;span class="lnt"&gt; 95
&lt;/span&gt;&lt;span class="lnt"&gt; 96
&lt;/span&gt;&lt;span class="lnt"&gt; 97
&lt;/span&gt;&lt;span class="lnt"&gt; 98
&lt;/span&gt;&lt;span class="lnt"&gt; 99
&lt;/span&gt;&lt;span class="lnt"&gt;100
&lt;/span&gt;&lt;span class="lnt"&gt;101
&lt;/span&gt;&lt;span class="lnt"&gt;102
&lt;/span&gt;&lt;span class="lnt"&gt;103
&lt;/span&gt;&lt;span class="lnt"&gt;104
&lt;/span&gt;&lt;span class="lnt"&gt;105
&lt;/span&gt;&lt;span class="lnt"&gt;106
&lt;/span&gt;&lt;span class="lnt"&gt;107
&lt;/span&gt;&lt;span class="lnt"&gt;108
&lt;/span&gt;&lt;span class="lnt"&gt;109
&lt;/span&gt;&lt;span class="lnt"&gt;110
&lt;/span&gt;&lt;span class="lnt"&gt;111
&lt;/span&gt;&lt;span class="lnt"&gt;112
&lt;/span&gt;&lt;span class="lnt"&gt;113
&lt;/span&gt;&lt;span class="lnt"&gt;114
&lt;/span&gt;&lt;span class="lnt"&gt;115
&lt;/span&gt;&lt;span class="lnt"&gt;116
&lt;/span&gt;&lt;span class="lnt"&gt;117
&lt;/span&gt;&lt;span class="lnt"&gt;118
&lt;/span&gt;&lt;span class="lnt"&gt;119
&lt;/span&gt;&lt;span class="lnt"&gt;120
&lt;/span&gt;&lt;span class="lnt"&gt;121
&lt;/span&gt;&lt;span class="lnt"&gt;122
&lt;/span&gt;&lt;span class="lnt"&gt;123
&lt;/span&gt;&lt;span class="lnt"&gt;124
&lt;/span&gt;&lt;span class="lnt"&gt;125
&lt;/span&gt;&lt;span class="lnt"&gt;126
&lt;/span&gt;&lt;span class="lnt"&gt;127
&lt;/span&gt;&lt;span class="lnt"&gt;128
&lt;/span&gt;&lt;span class="lnt"&gt;129
&lt;/span&gt;&lt;span class="lnt"&gt;130
&lt;/span&gt;&lt;span class="lnt"&gt;131
&lt;/span&gt;&lt;span class="lnt"&gt;132
&lt;/span&gt;&lt;span class="lnt"&gt;133
&lt;/span&gt;&lt;span class="lnt"&gt;134
&lt;/span&gt;&lt;span class="lnt"&gt;135
&lt;/span&gt;&lt;span class="lnt"&gt;136
&lt;/span&gt;&lt;span class="lnt"&gt;137
&lt;/span&gt;&lt;span class="lnt"&gt;138
&lt;/span&gt;&lt;span class="lnt"&gt;139
&lt;/span&gt;&lt;span class="lnt"&gt;140
&lt;/span&gt;&lt;span class="lnt"&gt;141
&lt;/span&gt;&lt;span class="lnt"&gt;142
&lt;/span&gt;&lt;span class="lnt"&gt;143
&lt;/span&gt;&lt;span class="lnt"&gt;144
&lt;/span&gt;&lt;span class="lnt"&gt;145
&lt;/span&gt;&lt;span class="lnt"&gt;146
&lt;/span&gt;&lt;span class="lnt"&gt;147
&lt;/span&gt;&lt;span class="lnt"&gt;148
&lt;/span&gt;&lt;span class="lnt"&gt;149
&lt;/span&gt;&lt;span class="lnt"&gt;150
&lt;/span&gt;&lt;span class="lnt"&gt;151
&lt;/span&gt;&lt;span class="lnt"&gt;152
&lt;/span&gt;&lt;span class="lnt"&gt;153
&lt;/span&gt;&lt;span class="lnt"&gt;154
&lt;/span&gt;&lt;span class="lnt"&gt;155
&lt;/span&gt;&lt;span class="lnt"&gt;156
&lt;/span&gt;&lt;span class="lnt"&gt;157
&lt;/span&gt;&lt;span class="lnt"&gt;158
&lt;/span&gt;&lt;span class="lnt"&gt;159
&lt;/span&gt;&lt;span class="lnt"&gt;160
&lt;/span&gt;&lt;span class="lnt"&gt;161
&lt;/span&gt;&lt;span class="lnt"&gt;162
&lt;/span&gt;&lt;span class="lnt"&gt;163
&lt;/span&gt;&lt;span class="lnt"&gt;164
&lt;/span&gt;&lt;span class="lnt"&gt;165
&lt;/span&gt;&lt;span class="lnt"&gt;166
&lt;/span&gt;&lt;span class="lnt"&gt;167
&lt;/span&gt;&lt;span class="lnt"&gt;168
&lt;/span&gt;&lt;span class="lnt"&gt;169
&lt;/span&gt;&lt;span class="lnt"&gt;170
&lt;/span&gt;&lt;span class="lnt"&gt;171
&lt;/span&gt;&lt;span class="lnt"&gt;172
&lt;/span&gt;&lt;span class="lnt"&gt;173
&lt;/span&gt;&lt;span class="lnt"&gt;174
&lt;/span&gt;&lt;span class="lnt"&gt;175
&lt;/span&gt;&lt;span class="lnt"&gt;176
&lt;/span&gt;&lt;span class="lnt"&gt;177
&lt;/span&gt;&lt;span class="lnt"&gt;178
&lt;/span&gt;&lt;span class="lnt"&gt;179
&lt;/span&gt;&lt;span class="lnt"&gt;180
&lt;/span&gt;&lt;span class="lnt"&gt;181
&lt;/span&gt;&lt;span class="lnt"&gt;182
&lt;/span&gt;&lt;span class="lnt"&gt;183
&lt;/span&gt;&lt;span class="lnt"&gt;184
&lt;/span&gt;&lt;span class="lnt"&gt;185
&lt;/span&gt;&lt;span class="lnt"&gt;186
&lt;/span&gt;&lt;span class="lnt"&gt;187
&lt;/span&gt;&lt;span class="lnt"&gt;188
&lt;/span&gt;&lt;span class="lnt"&gt;189
&lt;/span&gt;&lt;span class="lnt"&gt;190
&lt;/span&gt;&lt;span class="lnt"&gt;191
&lt;/span&gt;&lt;span class="lnt"&gt;192
&lt;/span&gt;&lt;span class="lnt"&gt;193
&lt;/span&gt;&lt;span class="lnt"&gt;194
&lt;/span&gt;&lt;span class="lnt"&gt;195
&lt;/span&gt;&lt;span class="lnt"&gt;196
&lt;/span&gt;&lt;span class="lnt"&gt;197
&lt;/span&gt;&lt;span class="lnt"&gt;198
&lt;/span&gt;&lt;span class="lnt"&gt;199
&lt;/span&gt;&lt;span class="lnt"&gt;200
&lt;/span&gt;&lt;span class="lnt"&gt;201
&lt;/span&gt;&lt;span class="lnt"&gt;202
&lt;/span&gt;&lt;span class="lnt"&gt;203
&lt;/span&gt;&lt;span class="lnt"&gt;204
&lt;/span&gt;&lt;span class="lnt"&gt;205
&lt;/span&gt;&lt;span class="lnt"&gt;206
&lt;/span&gt;&lt;span class="lnt"&gt;207
&lt;/span&gt;&lt;span class="lnt"&gt;208
&lt;/span&gt;&lt;span class="lnt"&gt;209
&lt;/span&gt;&lt;span class="lnt"&gt;210
&lt;/span&gt;&lt;span class="lnt"&gt;211
&lt;/span&gt;&lt;span class="lnt"&gt;212
&lt;/span&gt;&lt;span class="lnt"&gt;213
&lt;/span&gt;&lt;span class="lnt"&gt;214
&lt;/span&gt;&lt;span class="lnt"&gt;215
&lt;/span&gt;&lt;span class="lnt"&gt;216
&lt;/span&gt;&lt;span class="lnt"&gt;217
&lt;/span&gt;&lt;span class="lnt"&gt;218
&lt;/span&gt;&lt;span class="lnt"&gt;219
&lt;/span&gt;&lt;span class="lnt"&gt;220
&lt;/span&gt;&lt;span class="lnt"&gt;221
&lt;/span&gt;&lt;span class="lnt"&gt;222
&lt;/span&gt;&lt;span class="lnt"&gt;223
&lt;/span&gt;&lt;span class="lnt"&gt;224
&lt;/span&gt;&lt;span class="lnt"&gt;225
&lt;/span&gt;&lt;span class="lnt"&gt;226
&lt;/span&gt;&lt;span class="lnt"&gt;227
&lt;/span&gt;&lt;span class="lnt"&gt;228
&lt;/span&gt;&lt;span class="lnt"&gt;229
&lt;/span&gt;&lt;span class="lnt"&gt;230
&lt;/span&gt;&lt;span class="lnt"&gt;231
&lt;/span&gt;&lt;span class="lnt"&gt;232
&lt;/span&gt;&lt;span class="lnt"&gt;233
&lt;/span&gt;&lt;span class="lnt"&gt;234
&lt;/span&gt;&lt;span class="lnt"&gt;235
&lt;/span&gt;&lt;span class="lnt"&gt;236
&lt;/span&gt;&lt;span class="lnt"&gt;237
&lt;/span&gt;&lt;span class="lnt"&gt;238
&lt;/span&gt;&lt;span class="lnt"&gt;239
&lt;/span&gt;&lt;span class="lnt"&gt;240
&lt;/span&gt;&lt;span class="lnt"&gt;241
&lt;/span&gt;&lt;span class="lnt"&gt;242
&lt;/span&gt;&lt;span class="lnt"&gt;243
&lt;/span&gt;&lt;span class="lnt"&gt;244
&lt;/span&gt;&lt;span class="lnt"&gt;245
&lt;/span&gt;&lt;span class="lnt"&gt;246
&lt;/span&gt;&lt;span class="lnt"&gt;247
&lt;/span&gt;&lt;span class="lnt"&gt;248
&lt;/span&gt;&lt;span class="lnt"&gt;249
&lt;/span&gt;&lt;span class="lnt"&gt;250
&lt;/span&gt;&lt;span class="lnt"&gt;251
&lt;/span&gt;&lt;span class="lnt"&gt;252
&lt;/span&gt;&lt;span class="lnt"&gt;253
&lt;/span&gt;&lt;span class="lnt"&gt;254
&lt;/span&gt;&lt;span class="lnt"&gt;255
&lt;/span&gt;&lt;span class="lnt"&gt;256
&lt;/span&gt;&lt;span class="lnt"&gt;257
&lt;/span&gt;&lt;span class="lnt"&gt;258
&lt;/span&gt;&lt;span class="lnt"&gt;259
&lt;/span&gt;&lt;span class="lnt"&gt;260
&lt;/span&gt;&lt;span class="lnt"&gt;261
&lt;/span&gt;&lt;span class="lnt"&gt;262
&lt;/span&gt;&lt;span class="lnt"&gt;263
&lt;/span&gt;&lt;span class="lnt"&gt;264
&lt;/span&gt;&lt;span class="lnt"&gt;265
&lt;/span&gt;&lt;span class="lnt"&gt;266
&lt;/span&gt;&lt;span class="lnt"&gt;267
&lt;/span&gt;&lt;span class="lnt"&gt;268
&lt;/span&gt;&lt;span class="lnt"&gt;269
&lt;/span&gt;&lt;span class="lnt"&gt;270
&lt;/span&gt;&lt;span class="lnt"&gt;271
&lt;/span&gt;&lt;span class="lnt"&gt;272
&lt;/span&gt;&lt;span class="lnt"&gt;273
&lt;/span&gt;&lt;span class="lnt"&gt;274
&lt;/span&gt;&lt;span class="lnt"&gt;275
&lt;/span&gt;&lt;span class="lnt"&gt;276
&lt;/span&gt;&lt;span class="lnt"&gt;277
&lt;/span&gt;&lt;span class="lnt"&gt;278
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;__future__&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;print_function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;__future__&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;division&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;__future__&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;absolute_import&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;sys&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;shutil&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;rmtree&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;tempfile&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;mkdtemp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;getopt&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;gnu_getopt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;GetoptError&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pkgrel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;command_required&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;cmd_list&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;Check if the commands exist.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;PATH&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;path_list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pathsep&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;The environment variable PATH is not defined.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;cmd_list&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;path_list&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;command_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;access&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;command_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;X_OK&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;The command &lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt; is not found.&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;fix_input_pkg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;Verify and fix the input package path.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; It returns the input package, modified.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isfile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt; doesn&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt;t exist.&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;access&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;R_OK&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt; is not accessible in reading.&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;input_ext&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;splitext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;input_ext&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;.deb&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;The extension of &lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt; must be *.deb.&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Convert to the absolute path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;input_pkg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;abspath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;input_pkg&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;Called when the user uses --help.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Convert a Debian or an RPM Package into an Arch Linux package&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39; (and vice-versa).&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Usage: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s1"&gt; [OPTIONS] debian_package.deb [arch_package.pkg.tar.gz]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;basename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;OPTIONS :&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34; -h, --help Show this help&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;more_informations&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;Asks the user to use --help.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;--help for more informations.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;handle_arguments&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;Handle all options in the arguments.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; This function returns a dictionary that contain
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#39;input_pkg&amp;#39; and &amp;#39;output_pkg&amp;#39; keywords.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;input_pkg&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;output_pkg&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;args&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;optlist&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gnu_getopt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;h&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;help&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;GetoptError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Error when parsing arguments.&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;more_informations&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;No input file.&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;more_informations&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;option&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;optlist&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;option&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;-h&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;--help&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;input_pkg&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;optlist&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;output_pkg&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;optlist&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;read_debcontrol&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;Read some informations from debian/control.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;maintainer&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;version&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;description&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;size&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;architecture&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;filedesc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;r&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;IOError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Cannot read debian package informations from &lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt;.&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;filedesc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;readlines&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rstrip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;splited&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;splited&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;:&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;variable&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;package&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;variable&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;installed-size&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;size&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;variable&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;version&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;before&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;after&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;:&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;after&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;-&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;_&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;variable&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;maintainer&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;version&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;description&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;variable&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;architecture&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;amd64&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;architecture&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;x86_64&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;i386&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;architecture&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;i686&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# on Arch Linux, i686 only&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;i686&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;architecture&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;i686&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;architecture&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;all&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;filedesc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;()):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;size&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;The debian package doesn&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt;t &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;contain all needed informations.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;The variable &lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt; is empty.&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;##sys.exit(1)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;write_archcontrol&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pkginfo&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;Write an Arch Linux PKGINFO in &amp;#39;path&amp;#39;.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#39;pkginfo&amp;#39; is a dictionary that contain some informations
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; returned by read_debcontrol().
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;filedesc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;IOError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt; is not accessible in writing.&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;filedesc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;# Generated by Alien Arch&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;filedesc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pkgname = &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;pkginfo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;filedesc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pkgver = &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pkginfo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;version&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;pkgrel&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;filedesc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pkgdesc = &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;pkginfo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;description&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;filedesc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;packager = Arch Linux, Alien Arch &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;(http://www.archlinux.org)&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;filedesc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;size = &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;pkginfo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;size&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;filedesc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;arch = &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;pkginfo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;architecture&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;filedesc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;license =&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# filedesc.write(&amp;#39;url =\n&amp;#39;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# filedesc.write(&amp;#39;builddate =\n&amp;#39;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# filedesc.write(&amp;#39;depend =\n&amp;#39;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;filedesc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;convert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;output_pkg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;Convert a Debian package to an Arch Linux package.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; input_pkg contains the input package, with *.deb extension.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; output_pkg contains the output package, with *.pkg.tar.gz extension. This
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; argument is not obligatory.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_tmpd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;output_tmpd&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mkdtemp&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;mkdtemp&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;input_pkg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fix_input_pkg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Conversion of &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s1"&gt;...&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;basename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;chdir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;Change the directory.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chdir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;OSError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Cannot chdir to &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s1"&gt;.&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;chdir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_tmpd&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Extraction of the deb archive&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ar x &lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;data.tar.gz&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;data_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;data.tar.gz&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;found_data_path&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;listdir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;found_data_path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;data.tar&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;data_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;found_data_path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;data_path&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;The data archive wasn&amp;#39;t found inside &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Extraction of control.tar.gz and data.tar.x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;tar xf &lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt; -C &lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_tmpd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data_path&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;output_tmpd&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;tar xf &lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_tmpd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;control.tar.gz&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Reading &amp;#39;control&amp;#39; file, from the deb archive&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;deb_info&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;read_debcontrol&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_tmpd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;control&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# If the output filename is not specified, it will be created&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;output_pkg&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;output_pkg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dirname&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_pkg&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#39;.pkg.tar.gz&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;deb_info&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;deb_info&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;version&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;pkgrel&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;deb_info&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;architecture&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Creating Arch Linux package&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;chdir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output_tmpd&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;find . -type f | sed -e &lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt;s/^&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s1"&gt;.&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s1"&gt;///&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt; &amp;gt; .FILELIST&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;write_archcontrol&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.PKGINFO&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;deb_info&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;tar zcf &lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt; * .PKGINFO .FILELIST&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;output_pkg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;done.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;The Arch Linux package:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;output_pkg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;finally&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rmtree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_tmpd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rmtree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output_tmpd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;command_required&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ar&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tar&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;find&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sed&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;DATA&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;handle_arguments&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;convert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DATA&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;input_pkg&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;DATA&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;output_pkg&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;KeyboardInterrupt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Interrupted.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# vim:ai:et:sw=4:ts=4:sts=4:tw=78:fenc=utf-8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="srcinfo"&gt;
.SRCINFO
&lt;a href="#srcinfo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Este es un archivo que si lo olvidamos solo trae problemas por lo cual yo tengo como regla personal siempre antes de hacer un commit a un repositorio AUR ejecutar este pequeño comando que se encarga nada más ni nada menos de actualizar este archivo el cual es necesario para que el commit sea aceptado.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;Shell&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Shell" data-lang="Shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;makepkg --printsrcinfo &amp;gt; .SRCINFO&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Password Cracking</title><link>https://patojad.com.ar/post/2020/12/password-cracking/</link><pubDate>Sat, 05 Dec 2020 09:28:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/12/password-cracking/</guid><description>&lt;iframe src='https://www.youtube.com/embed/vqmMbVblovE?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;Password Cracking&lt;/strong&gt; es el proceso de recuperación de contraseñas a partir de datos que han sido transmitidos por un sistema informático o almacenados en el. El propósito es ayudar al usuario a &lt;strong&gt;recuperar una contraseña olvidada o perdida&lt;/strong&gt;, aunque también puede ser utilizada como medida &lt;strong&gt;preventiva por los administradores de sistemas&lt;/strong&gt; para corroborar la seguridad de los usuarios y así poder evitar el ingreso de no autorizado.&lt;/p&gt;
&lt;p&gt;Estos tipos de ataques tienen formas técnicas que son las que eventualmente utilizan los administradores de sistemas o pentesters para probar la seguridad de sus usuarios. Sin embargo existen muchas otras formas de intentar “dar” con la contraseña correcta, que pueden ser menos técnicas, en esta oportunidad vamos a intentar pasar por todas estas con una breve repasada.&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Ataques no Técnicos&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Ataques Técnicos&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Shoulder Surfing&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Ataque de fuerza bruta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Ingeniería Social&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Ataque de diccionario&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Dumpster Diving&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Ataque híbrido&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Rainbow Tables&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Troyano&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Man-In-The-Middle&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ataques-no-técnicos"&gt;
Ataques no Técnicos
&lt;a href="#ataques-no-t%c3%a9cnicos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://alpinesecurity.com/wp-content/uploads/2017/03/online-password-cracking.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Estos “ataques” son realizados sin necesidad de tener una preparación técnica y suelen estar guiados por el “azar” o el conocimiento sobre el usuario afectado. Eventualmente puede estar involucrada la ingeniería social o el poco cuidado de los usuarios para con su información.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="shoulder-surfing"&gt;
Shoulder Surfing
&lt;a href="#shoulder-surfing" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://miro.medium.com/max/1003/1*oK1M8qrk-ETnmJNNAnaNng.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Como su nombre lo indica, consiste literalmente en mirar por encima del hombro sin que el objetivo se de cuenta, para tratar de conseguir información. Pero a pesar de que parezca una idea producto de Hollywood, existen numerosos casos en los que este método ha sido efectivo. Las empresas más pequeñas son quizás las que corren mayor riesgo de sufrir esto, dado que no pueden controlar sus sitios con la misma eficacia que una organización más grande. Los expertos en seguridad advirtieron recientemente sobre una vulnerabilidad en el proceso de autenticación utilizado por WhatsApp. Los usuarios que intentan usar WhatsApp en un dispositivo nuevo primero deben ingresar un código único que se envía a través de un mensaje de texto, que se puede usar para restaurar la cuenta de un usuario y el historial de chat desde una copia de seguridad. Se descubrió que si un pirata informático pudo obtener el número de teléfono de un usuario, puede descargar la aplicación en un dispositivo limpio y emitir un mensaje para un nuevo código, que, si está a distancia de espionaje, podría copiarlo. llega al propio dispositivo del usuario.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ingeniería-social"&gt;
Ingeniería Social
&lt;a href="#ingenier%c3%ada-social" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/RFThqTTS/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La Ingeniería Social es una de las mejores técnicas que ofrece la rama de los ataques no técnicos. La Ingeniería Social consiste en recopilar cada vez más información sobre una persona mediante técnicas psicológicas y el engaño. Muchas veces aplica convertirse en parte de un círculo medianamente cercano de la persona objetivo, conociendo así sus gustos, patrones, información, historia y datos; esto acompañado de información que se puede sacar de internet, como por ejemplo sus redes sociales, historial de navegación, y más; puede permitirnos descubrir las contraseñas que utiliza.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="dumpster-diving"&gt;
Dumpster Diving
&lt;a href="#dumpster-diving" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Hsn0DJpc/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En la técnica de buceo en el contenedor, tratamos de recopilar todo tipo de información revisando contenedores de basura, estos pueden encontrarse en espacios públicos o áreas de acceso restringido que requieran de una entrada no autorizada. El buceo en basureros depende de una debilidad humana: la falta de conocimientos sobre seguridad. Es por esto que se pueden encontrar muchas cosas buceando en contenedores de basura (por ejemplo, CDs, DVDs, discos duros, documentos de empresas, etc.), tales elementos pueden ser de gran utilidad al momento de descifrar contraseñas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ataques-técnicos"&gt;
Ataques Técnicos
&lt;a href="#ataques-t%c3%a9cnicos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://assets.skyfilabs.com/images/blog/password-cracker-using-python.webp" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La diferentes técnicas que existen en el mercado son muchas, por la cual se han tomado algunas para ser analizadas, dependiendo de sus diferentes procesos a realizar.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ataque-de-fuerza-bruta"&gt;
Ataque de Fuerza Bruta
&lt;a href="#ataque-de-fuerza-bruta" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;El ataque por &lt;strong&gt;fuerza bruta&lt;/strong&gt; es el método para averiguar una contraseña probando todas las posibles cadenas, que cuentan con determinada longitud y están compuestas por un conjunto de caracteres específico, hasta dar con la correcta. Dicho ataque, La teoría garantiza una &lt;strong&gt;tasa de éxito del 100%&lt;/strong&gt;. Sin embargo, al intentar un ataque de fuerza bruta a una contraseña de más de 8 caracteres, el tiempo necesario para realizarlo se vuelve inviable debido al crecimiento exponencial de posibles cadenas con la adición de cada carácter extra. Hydra, Medusa y Ncrack, pueden ser una de las variadas herramientas que performan ataques a servicios activos cliente/servidor (como ftp, http, mysql, ssh, etc) utilizando esta técnica.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://1.bp.blogspot.com/-s8qbBu1e8FA/XufVG8vcGyI/AAAAAAAAHBs/BOES6gu9WsoJTcKj2A721P2-MMEUM2WuQCNcBGAsYHQ/s1600/2_hydra-fuerza-bruta-wordlist-ftp.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Por último, los ataques de fuerza bruta son una de las &lt;strong&gt;técnicas más habituales&lt;/strong&gt; de robo de contraseñas en Internet dado que &lt;strong&gt;no es necesario tener grandes conocimientos&lt;/strong&gt;. En contrapartida, este tipo de ataque es extremadamente ineficiente porque intenta muchas cadenas que es poco probable que produzcan una coincidencia.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ataque-con-diccionario"&gt;
Ataque Con Diccionario
&lt;a href="#ataque-con-diccionario" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;El ataque por diccionario es el siguiente mejor ataque para vulnerar una contraseña. Este, utiliza un diccionario de palabras para llevar a cabo su cometido. Los diccionarios son básicamente archivos de texto cuyo contenido es una palabra o frase por línea, cada línea es una posible versión de la contraseña. La diferencia entre un diccionario y un ataque de fuerza bruta es que un diccionario contiene una lista de coincidencias probables en lugar de todas las posibles combinaciones, logrando así una mejor optimización. Además, un diccionario debe estar bien elaborado, de lo contrario si se incluye cualquier combinación se corre el riesgo de convertirse en un ataque de fuerza bruta y pierde su eficacia.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.arstechnica.net/wp-content/uploads/2013/03/IMG_1667.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Las listas de palabras con la mejor tasa de éxito son las que se componen de contraseñas reales tomadas de diferentes fuentes públicas o bases de datos divulgadas previamente. &lt;strong&gt;Una lista de palabras bien optimizada&lt;/strong&gt; puede marcar la diferencia respecto a todos los ataques descritos. Hay muchos lugares donde se pueden descargar diccionarios genéricos o temáticos y una breve búsqueda en internet revelará estas fuentes. Sin embargo, cuando se precisa de un diccionario más específico, las cosas se vuelven un poco más difíciles y es necesario un proceso de investigación, para elaborarlo. Un diccionario se puede generar a partir de cualquier cosa, se puede generar a partir de artículos, noticias, búsqueda de Google, resultados, contenido del sitio web, registros y cualquier cosa que esté formada por &amp;ldquo;palabras&amp;rdquo;. Entonces, si quisiéramos agregar ahora un conjunto de palabras específicas a nuestro Diccionario, buscaríamos en Google a nuestra víctima, tomaríamos los resultados y los agregamos. También nos interesa todo el texto de cada enlace devuelto. También se puede tratar de encontrar documentos o registros en el servidor de las víctimas y agregarlas. Cuanta más información tengamos, más grande será el Diccionario.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ataque-híbrido"&gt;
Ataque Híbrido
&lt;a href="#ataque-h%c3%adbrido" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Un ataque híbrido es una combinación de un ataque de fuerza bruta y un ataque de diccionario. este tipo de ataques, toma un Diccionario como entrada y agrega cadenas mediante fuerza bruta, a cada entrada del diccionario. Por lo tanto, para cada cadena en el Diccionario, este ataque produce varias otras cadenas. Por ejemplo si nuestra cadena original en el diccionario es &amp;ldquo;apple&amp;rdquo;, se termina produciendo &amp;ldquo;111apple&amp;rdquo;, &amp;ldquo;112apple&amp;rdquo; hasta &amp;ldquo;999apple&amp;rdquo;, si es que estamos utilizando una fuerza bruta que antepone tres números a cada entrada.&lt;/p&gt;
&lt;p&gt;Un ataque de diccionario híbrido también resulta en un aumento exponencial de los cálculos y el tiempo en función de la cantidad de caracteres que se concatenan con cada entrada de diccionario.&lt;/p&gt;
&lt;p&gt;También cabe destacar, que su principal diferencia con el ataque de diccionario basado en reglas es que este otro, en lugar de agregar, mediante fuerza bruta, una cadena con todas sus combinaciones posibles, usa reglas para transformar cada entrada del Diccionario o concatenarla con prefijos y sufijos, lo que termina traduciéndose como menos tiempo de ejecución.&lt;/p&gt;</description></item><item><title>Cibercrimen</title><link>https://patojad.com.ar/post/2020/12/cibercrimen/</link><pubDate>Tue, 01 Dec 2020 08:13:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/12/cibercrimen/</guid><description>&lt;p&gt;Vamos a hablar un poco del cibercrimen, que es realmente y cómo se moviliza este mundo del cibercrimen. Para entender esto debemos comprender cómo funciona y cómo piensan estos cibercriminales, sus motivaciones y perspectivas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="premisas-del-ciberdelincuente"&gt;
Premisas del Ciberdelincuente
&lt;a href="#premisas-del-ciberdelincuente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://newsbook.es/wp-content/uploads/2020/03/phishing-1068x580.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Busca dinero:&lt;/strong&gt; Esto lo comparte realmente con todos los delincuentes, la meta es obtener alguna ganancia y como tal todo lo que ellos buscan tiene de alguna forma u otra algún Valor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El dinero está en la gente y las empresas:&lt;/strong&gt; Claramente esto, que suena lógico, es una premisa, entender que el dinero (fácil) se encuentra en las personas que ya lo ganaron por nosotros o en las empresas que lo generan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El Usuario es el eslabón más débil:&lt;/strong&gt; Ya sea a nivel empresa o personal el eslabón que se prefiere atacar es a la persona, muchos sistemas son seguros y difíciles de sobrepasar, pero las personas suelen ser distraídas o arrebatadas y es la oportunidad para el ciberdelincuente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="dónde-está-la-gente"&gt;
¿Dónde está la gente?
&lt;a href="#d%c3%b3nde-est%c3%a1-la-gente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como dijimos antes el dinero está donde está la gente, y estos lugares/medios son los utilizados para realizar ataques, ya que por ahí el índice de éxito es más alto:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://accolombianlawyers.com/noticias/wp-content/uploads/2019/03/DATOS-PERSONALES-1024x849.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Email&lt;/li&gt;
&lt;li&gt;Redes sociales&lt;/li&gt;
&lt;li&gt;Comunidades y Foros (Si gente, nuestra comunidad vale Oro)&lt;/li&gt;
&lt;li&gt;Servicios de mensajería instantánea (Por eso debemos cuidar lo que pasa en nuestro Telegram)&lt;/li&gt;
&lt;li&gt;Home Banking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En este tipo de obtención de datos podemos discriminar 2 formas, una un poco más obvia donde &lt;strong&gt;el delincuente va hacia las personas&lt;/strong&gt; y otra un poco más peculiar pero no menos común en la que &lt;strong&gt;las personas van hacia los delincuentes&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El delincuente va hacia las personas:&lt;/strong&gt; En este caso se realizan técnicas activas, el envío de un mensaje por ejemplo, que dispare la interacción con una página web. Estas técnicas suelen dejar rastros que sirven para mitigar el ataque. Las técnicas de defensa en este caso son más simples.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Las personas van hacia los delincuentes:&lt;/strong&gt; Son mucho más creíbles que lo cuál hace más difícil la sospecha. El tipo de protección es mucho más difícil porque requiere un usuario mucho más entrenado. Son realmente mucho más sigilosos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-hacen-esto"&gt;
¿Cómo hacen esto?
&lt;a href="#c%c3%b3mo-hacen-esto" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Realmente existen muchas formas de hacer esto y todas se encuentran activas en la actualidad dado que los usuarios siguen cayendo en las trampas, como mencionamos antes esto se suele deber a la falta de atención o no conocer estas técnicas.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.redeszone.net/app/uploads-redeszone.net/2020/01/phishing-apertura.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Email:&lt;/strong&gt; Esto suele darse mediante links o adjuntos en correos que dan acceso parcial o total al ciberdelincuente sobre nuestros datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reemplazo de sitios webs:&lt;/strong&gt; Se suele copiar sitios webs para ser idénticos y de esta forma el usuario confundido ingresa sus datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impersonalización de Usuarios&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impersonalización de Dominio&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Link Falsos&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="dónde-está-el-dinero-en-todo-esto"&gt;
¿Dónde está el dinero en todo esto?
&lt;a href="#d%c3%b3nde-est%c3%a1-el-dinero-en-todo-esto" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ya hablamos de cómo lo hacen y que hacen, pero en todo esto nos olvidamos de hablar dónde está el dinero. La ciberdelincuencia va más allá de lo que imaginamos que es sacarle la plata a una persona de su cuenta, si bien esto forma parte existe muchas cosas más interesantes que tiene un alto valor más allá de que no nos demos cuenta por ejemplo:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://blog.dataprius.com/wp-content/uploads/2019/09/secuestro-de-datos-wanna-cry.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Robo de servicios que manipulan dinero:&lt;/strong&gt; Tal vez el más obvio y el que todos imaginamos, robando cuentas de home banking o de servicios como mercadopago y paypal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Robo de identidad:&lt;/strong&gt; No solo tu dinero es el importante, tu identidad tiene mucho valor dado que existe mucho que se puede hacer con ella&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Robo de Tarjetas de crédito:&lt;/strong&gt; Muchas veces las roban para venderlas o simplemente para uso personal, pero suelen ser cautelosos con el uso que le dan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Venta de Productos:&lt;/strong&gt; Esto lo hacen incluso algunas empresas, pero muchas veces utilizan el spam como medio cautivador para vender algún producto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hackeo de cuentas a pedido:&lt;/strong&gt; Muchas veces piden el hackeo de una cuenta y esa puede ser la tuya por eso mismo debemos tener cuidado con los datos que damos. Nunca falta el novio tóxico que quiere entrar en instagram de su pareja.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secuestro extorsivo de la información:&lt;/strong&gt; Cuantas veces salieron publicadas fotos íntimas de personas que previamente fueron extorsionadas, y muchas tantas no nos enteramos. El secuestro extorsivo de la información suele ser muy rentable para aquellos que inician.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Venta de Software y contenido ilegal:&lt;/strong&gt; Suele venderse licencias piratas, películas, o cualquier tipo de contenido ilegalmente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Venta de información confidencial:&lt;/strong&gt; Esto es común entre empresas o gente que manipula información sensible.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>¿Como jugar al WoW en Linux?</title><link>https://patojad.com.ar/post/2020/11/como-jugar-al-wow-en-linux/</link><pubDate>Mon, 30 Nov 2020 11:29:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/11/como-jugar-al-wow-en-linux/</guid><description>&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cadenaser00.epimg.net/ser/imagenes/2019/08/27/ser_madrid_sur/1566920041_790600_1566920146_noticia_normal.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Todos conocemos este gran juego o la gran mayoría, yo creo que junto al &lt;strong&gt;Lineage 2&lt;/strong&gt; y el &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2019/05/como-instalar-mu-online-en-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
MU
&lt;/a&gt;&lt;/strong&gt; son los &lt;em&gt;MMORPG&lt;/em&gt; que marcaron mi infancia, y hoy por hoy sigue siendo uno de los juegos que nos sorprenden y nos dan mucha emoción a cambio de horas de nuestra vida.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="hasta-donde-llego"&gt;
¿Hasta donde llego?
&lt;a href="#hasta-donde-llego" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Actualmente existen muchas versiones del WoW pero no todas podemos jugarla en linux, en mi basta experiencia (Aunque muchos me puedan contradecir y eso me gustaria) el soporte de Wine para 64bits es deplorable. Al punto tal de que solo podemos correr perfectamente aplicaciones de 32bits y este es nuestro limitante.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/QVLFXMzs/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Desde la versión del WoW conocida como &lt;strong&gt;Battle of Azeroth&lt;/strong&gt; se eliminó completamente el soporte para 32bits por lo cual no podemos avanzar hasta que wine no mejore su compatibilidad con 64bits. Esto nos impide, de momento, jugar en el servidor oficial de blizzard.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://gamedustria.com/wp-content/uploads/2016/09/WoWLEgion.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En esta oportunidad voy a explicar como utilizar este magnifico juego pero obviamente desde un servidor privado con una de las últimas versiones que nos soportan los 32bits que no es nada más ni nada menos que &lt;strong&gt;Legion&lt;/strong&gt; donde podemos disfrutar la historia de Illidan.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTtPtNMJoMaEVWXxKzq-lzloVmnrJ7C_FGrLAlIAB4GiRJYQ2lvT7_kVj4-9_pk1Bb4bDmA9lFPTTxk3-IzmIwCT9rosCDkxcA&amp;amp;usqp=CAU&amp;amp;ec=45732302%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTtPtNMJoMaEVWXxKzq-lzloVmnrJ7C_FGrLAlIAB4GiRJYQ2lvT7_kVj4-9_pk1Bb4bDmA9lFPTTxk3-IzmIwCT9rosCDkxcA&amp;usqp=CAU&amp;ec=45732302"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ATENCIÓN: Si bien existen videos de como instalar el original con Lutris esto crashea muchísimo en raids y situaciones específicas por lo cual no recomiendo pagar una suscripción hasta que no esté mejorado el soporte a 64 bits para evitar golpes de ira&lt;/strong&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-maquina-se-lo-banca"&gt;
¿Mi maquina se lo banca?
&lt;a href="#mi-maquina-se-lo-banca" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Por suerte el Wow es un juego que no requiere mucho hardware para jugar, poniendo todo al minimo (low). Y existe una gran diferencia con jugarlo todo en “ultra” pero este “sacrificio” de estética nos permite disfrutarlo en equipos que no sean meramente gamers.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CPU (Procesador):&lt;/strong&gt; Intel Core2 Duo E8500 o AMD Phenom II X3 720&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPU (Gráficos):&lt;/strong&gt; NVIDIA GeForce GT 440 – AMD Radeon HD 5670 – Intel HD Graphics 5000&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memoria RAM:&lt;/strong&gt; 2GB&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Espacio en el Disco Duro:&lt;/strong&gt; 45GB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.guiaswow.com/wp-content/uploads/2016/02/Zu7dsO3.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Como vemos es realmente poco lo que pide y seguramente nosotros cumplamos estos requisitos, pero vale aclarar que si lo que vamos a usar es la placa de video integrada recomiendo tener un mínimo de 4GB de ram dado que la integrada utiliza nuestra ram como VRAM.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalar-winehq"&gt;
Instalar WineHQ
&lt;a href="#instalar-winehq" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://linuxhint.com/wp-content/uploads/2020/06/1-12.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Lo primero que debemos hacer es instalar WineHQ en nuestra distribución, para esto debemos agregar las librerías y ejecutar la instalación.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="debian"&gt;
Debian
&lt;a href="#debian" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Habilitamos los 32 bits&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo dpkg --add-architecture i386
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descargamos e instalamos a Key&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget -nc https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Agregamos el repositorio dependiendo de nuestra versión&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Version&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Agregar a /etc/apt/sources.list:&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Debian 8 (Jessie)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;deb &lt;a href="https://dl.winehq.org/wine-builds/debian/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://dl.winehq.org/wine-builds/debian/
&lt;/a&gt; jessie main&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Debian 9 (Stretch)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;deb &lt;a href="https://dl.winehq.org/wine-builds/debian/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://dl.winehq.org/wine-builds/debian/
&lt;/a&gt; stretch main&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Debian 10 (currently Testing) (Buster)&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;deb &lt;a href="https://dl.winehq.org/wine-builds/debian/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://dl.winehq.org/wine-builds/debian/
&lt;/a&gt; buster main&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;Actualizamos el Sistema&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instalamos uno de los paquetes&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;version&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;comando&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Stable branch&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;sudo apt install &amp;ndash;install-recommends winehq-stable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Development branch&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;sudo apt install &amp;ndash;install-recommends winehq-devel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Staging branch&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;sudo apt install &amp;ndash;install-recommends winehq-staging&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="fedora"&gt;
Fedora
&lt;a href="#fedora" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Agregamos los repositories&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;version&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;comando&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Fedora 29&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;dnf config-manager &amp;ndash;add-repo &lt;a href="https://dl.winehq.org/wine-builds/fedora/29/winehq.repo" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://dl.winehq.org/wine-builds/fedora/29/winehq.repo
&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Fedora 30&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;dnf config-manager &amp;ndash;add-repo &lt;a href="https://dl.winehq.org/wine-builds/fedora/30/winehq.repo" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://dl.winehq.org/wine-builds/fedora/30/winehq.repo
&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;E instalamos la version que deseamos&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;version&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;comando&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Stable branch&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;dnf install winehq-stable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Development branch&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;dnf install winehq-devel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;Staging branch&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;dnf install winehq-staging&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;Para otras distribuciones o BDS o MacOS revisar en su &lt;a href="https://wiki.winehq.org/Download" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
sitio oficial
&lt;/a&gt;&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arch"&gt;
Arch
&lt;a href="#arch" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Si estás en una distro basada en arch lo que recomiendo es instalar wine-staging que es, personalmente la instalación que me dio un mejor rendimiento. En mi caso lo hice con yay pero puedes hacerlo directamente con pacman&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yay -S wine-staging
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="volviendo-al-wow"&gt;
Volviendo al WoW
&lt;a href="#volviendo-al-wow" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ytimg.com/vi/XwkaeAQcWRw/maxresdefault.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Volviendo al juego, en mi caso elegí un servidor especifico, conocido como &lt;a href="https://www.wow-freakz.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Freakz
&lt;/a&gt; que no es un paytowin y en el cual no hay colas largas para jugar. Una vez descargado lo descomprimimos en la carpeta que querramos en mi caso utilizo el directorio&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;~/Juegos/WoW
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y una vez ahí ejecutamos el launcher. La primera vez que lo ejecutemos tardará bastante en configurar wine y algunas cosas del juego, también puede tirar el épico error de “dejo de funcionar” pero al abrirlo nuevamente ya podemos entrar sin problemas. Si elegimos la opción minimalista que descarga el juego mientras jugamos puede ser un poco más lento pero nos permite jugar desde el momento 0 es perfecto para impacientes.&lt;/p&gt;</description></item><item><title>Vulnerability Research</title><link>https://patojad.com.ar/post/2020/11/vulnerability-research/</link><pubDate>Thu, 26 Nov 2020 08:22:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/11/vulnerability-research/</guid><description>&lt;p&gt;Antes de arrancar vamos a ir con 2 definiciones que podríamos decir que son &lt;em&gt;de manual&lt;/em&gt; pero nos permitirán de acá en adelante saber de qué estamos hablando.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vulnerabilidades:&lt;/strong&gt; La entendemos como una ausencia de un control o una falla o debilidad en un control.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exploit:&lt;/strong&gt; Es un software que tiene la capacidad de explotar una Vulnerabilidad. Entendemos que un exploit explota solo una vulnerabilidad.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="entre-lo-bueno-y-lo-malo"&gt;
Entre lo bueno y lo malo
&lt;a href="#entre-lo-bueno-y-lo-malo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Cada exploit existente o cada app que es utilizada para realizar pruebas de seguridad está disponible para quien la quiera usar. Indiferentemente de si sos un Hacker Chino (y cuando hablamos de hacker lo hacemos de verdad no de gente que usa Kali para lo cual te recomiendo leer &lt;a href="https://patojad.com.ar/posts/2020/09/que-es-un-hacker/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
¿qué es un hacker?
&lt;/a&gt;), un empleado de seguridad defensiva, o un ciberdelincuente de la DeepWeb. Lo cual hace que el trabajo, al ser mayormente colaborativo, se vea reflejado para todos los “bandos”.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-vulnerability-research"&gt;
¿Qué es Vulnerability Research?
&lt;a href="#qu%c3%a9-es-vulnerability-research" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Usar una traducción literal acá nos alejaría del significado real. Básicamente Vulnerability Research es la búsqueda (o también llamado investigación) de vulnerabilidades. Estas búsquedas suelen extenderse mucho más allá de lo que nosotros creemos. Se suelen hacer en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Software:&lt;/strong&gt; Aplicaciones, programas de uso diario, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dispositivos:&lt;/strong&gt; Celulares, computadores, routers, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Procesos:&lt;/strong&gt; Esto se ve mayormente en empresas, aceptación de pagos, o formas de verificar, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entornos Físicos:&lt;/strong&gt; Alarmas, cerraduras electrónicas, una puerta que no cierre bien, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Y más allá de estos tipos de vulnerabilidades que debemos investigar existe una forma de clasificarlos y estas formas son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Explotabilidad&lt;/li&gt;
&lt;li&gt;Impacto&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Veremos más adelante en profundidad estos dos tipos. Lo interesante de Vulnerability Research es que más allá de las conocidas que podemos encontrar en los exploit o en las listas, al encontrar nuevas vulnerabilidades marcan hacia donde moverse la industria en el dia a dia.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="quienes-hacen-esto"&gt;
¿Quienes hacen esto?
&lt;a href="#quienes-hacen-esto" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente los profesionales no son los únicos que se dedican a esto. Existen muchas personas independientes o entusiastas que se dedican a esto por diversos motivos, los cuales pueden ser, diversión, curiosidad, dinero, autosuperación, etc. Muchas herramientas son libre, gratuitas o estan a disponibilidad de todos. Por ejemplo podemos encontrar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kali Linux:&lt;/strong&gt; Una distro basada en Debian que busca posicionarse como la más importante en seguridad, desde mi punto de vista es que su comunidad está llena de gente que se cree hacker por usar &lt;code&gt;nmap&lt;/code&gt; o &lt;code&gt;airodump-ng&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ReadOS:&lt;/strong&gt; Una distro basada en Arch que contiene todo lo necesario para iniciarnos en el mundo de la seguridad informática&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ciclo-de-vida-de-una-vulnerabilidad"&gt;
Ciclo de vida de una Vulnerabilidad
&lt;a href="#ciclo-de-vida-de-una-vulnerabilidad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Las vulnerabilidades tienen un ciclo de vida &lt;em&gt;definido&lt;/em&gt; en cuanto a proceso o método, sin embargo el tiempo en que cada etapa existe es completamente diferente en cada caso y así mismo su resolución final.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Aplicación liberada al mercado:&lt;/strong&gt; Si bien decimos &lt;em&gt;la aplicación&lt;/em&gt; puede deberse a un producto (hardware, como los populares intel que les encanta tener vulnerabilidades) y no necesariamente es durante el lanzamiento puede estar relacionado también a una actualización.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Descubrimiento de vulnerabilidad:&lt;/strong&gt; El descubrimiento puede darse por parte de la misma empresa o por un tercero. Si bien muchas veces es público, algunas veces deciden mantener el exploit en privado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conocimiento del fabricante:&lt;/strong&gt; En caso de que no lo haya descubierto el mismo fabricante, esta etapa lleva un tiempo adicional que está relacionado a cuánto tarda en enterarse de dicha vulnerabilidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Liberación de la solución:&lt;/strong&gt; La solución está desarrollada y liberada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestión de la actualización:&lt;/strong&gt; Se gestiona y distribuye la actualización con el parche correspondiente.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Double Action: Boogaloo</title><link>https://patojad.com.ar/post/2020/11/double-action-boogaloo/</link><pubDate>Thu, 19 Nov 2020 08:19:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/11/double-action-boogaloo/</guid><description>&lt;p&gt;Double Action es un elegante juego multijugador gratuito sobre bucear, voltear y deslizarse hacia el caos de las películas de acción.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.cloudflare.steamstatic.com/steam/apps/317360/ss_39480620e2bdffe9e354143bab51403417d7d5df.600x338.jpg?t=1447363023%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.cloudflare.steamstatic.com/steam/apps/317360/ss_39480620e2bdffe9e354143bab51403417d7d5df.600x338.jpg?t=1447363023"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-es-la-doble-acción"&gt;
¿Cómo es la doble acción?
&lt;a href="#c%c3%b3mo-es-la-doble-acci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Imagínese haciendo una voltereta hacia atrás en la cara de un tipo y luego zambulléndose a través de una ventana, con pistolas chapadas en oro disparando a cámara lenta. Hay una explosión detrás de ti y alguien ha robado tu maletín lleno de dinero.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/317360/ss_226821a1200b41a01e21241a696a6de4d8ca4528.600x338.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;¿Es suficiente acción para ti? Multiplíquelo por dos para obtener doble acción.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cual-es-el-objetivo"&gt;
¿Cual es el objetivo?
&lt;a href="#cual-es-el-objetivo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Double Action es una batalla real sin límites intercalados con objetivos para sobrevivir a los puntos de control, capturar el maletín lleno de dinero y cazar al criminal buscado.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/317360/ss_eb0ff5103793ea8e3985c769066bf7f78fa24f14.600x338.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="me-gustan-las-armas"&gt;
Me gustan las armas
&lt;a href="#me-gustan-las-armas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/317360/ss_446d33ec3a1ae51f9b8cf328d474084e3553b443.600x338.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The Sentinel 9&lt;/strong&gt; - Una (o dos) pistola(s) de 9 mm&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Stallion .45&lt;/strong&gt; - Una (o dos) pistola(s) calibre .45&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Undertaker&lt;/strong&gt; - Una metralleta de 9 mm&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Mac Daddy&lt;/strong&gt; - Una ametralladora calibre .45&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Persuader&lt;/strong&gt; - Una escopeta de combate&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Vindicator&lt;/strong&gt; - Un rifle completamente automático&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Black Magic&lt;/strong&gt; - Un rifle de ráfaga&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your Fists&lt;/strong&gt; - Tienen un gran impacto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The High Explosive Grenade&lt;/strong&gt; - Para cuando todo lo demás falla&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="corre-en-mi-tostadora"&gt;
¿Corre en mi tostadora?
&lt;a href="#corre-en-mi-tostadora" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Procesador:&lt;/strong&gt; 1.7 GHz&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memoria:&lt;/strong&gt; 512 MB de RAM&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red:&lt;/strong&gt; Conexión de banda ancha a Internet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Almacenamiento:&lt;/strong&gt; 5 GB de espacio disponible&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="text-center"&gt;
&lt;iframe
src='https://store.steampowered.com/widget/317360/'
width="646"
height="190"
title="Juego en Steam"
style="border-radius:20px;"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Si estas interesado en jugarlo no te olvides de meterte en nuestros grupos para que juguemos juntos! Podemos incluso hacer algun Stream&lt;/p&gt;
&lt;p&gt;&lt;a href="https://discord.gg/n8XtgN3" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-discord" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Discord
&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Control de Expansión</title><link>https://patojad.com.ar/post/2020/11/control-de-expansi%C3%B3n/</link><pubDate>Mon, 16 Nov 2020 08:37:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/11/control-de-expansi%C3%B3n/</guid><description>&lt;p&gt;Ya logramos ver como funcionan las expansiones, sin embargo muchas veces las mismas expansiones nos jugaran en contra y por lo cual lo mejor es aprender a controlarlas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sustitución-de-comandos"&gt;
Sustitución de comandos
&lt;a href="#sustituci%c3%b3n-de-comandos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La sustitución de comandos nos permite usar la salida de un comando como una expansión:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="k"&gt;$(&lt;/span&gt;ls&lt;span class="k"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Generando una salida tal como:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Desktop Documents ls-output.txt Music Pictures Public Templates Videos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/m2s8v8BZ/Captura-de-pantalla-de-2020-11-16-08-42-15.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;También es posible hacer algo como esto:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls -l &lt;span class="k"&gt;$(&lt;/span&gt;which cp&lt;span class="k"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rwxr-xr-x &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;71516&lt;/span&gt; 2007-12-05 08:58 /bin/cp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/2872rhSQ/Captura-de-pantalla-de-2020-11-16-08-42-48.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Aquí hemos pasado el resultado de which cp como un argumento para el comando ls, de esta forma obtenemos el listado del programa cp sin tener que saber su ruta completa. No estamos limitados sólo a comandos simples. Se pueden usar tuberías enteras (sólo se muestra una salida parcial)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="entrecomillado"&gt;
Entrecomillado
&lt;a href="#entrecomillado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ahora que hemos visto de cuántas formas el shell puede realizar expansiones, es hora de aprender cómo podemos controlarlas. Tomemos un ejemplo:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; this is a &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; The total is &lt;span class="nv"&gt;$100&lt;/span&gt;.00&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Generando como salida correspondientemente:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;this is a &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;The total is 00.00&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/7ZB9T47b/Captura-de-pantalla-de-2020-11-16-08-44-40.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En el primer ejemplo, la separación de palabras del shell ha eliminado el espacio en blanco adicional de la lista de argumentos del comando echo. En el segundo ejemplo, la expansión con parámetros sustituyó con una cadena vacía el valor de “$1” porque era una variable indefinida. El shell proporciona un mecanismo llamado quoting (entrecomillado) para suprimir selectivamente expansiones no deseadas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comillas-dobles"&gt;
Comillas dobles
&lt;a href="#comillas-dobles" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El primer tipo de entrecomillado que vamos a ver son las comillas dobles. Si colocas un texto dentro de comillas dobles, todos los caracteres especiales utilizados por el shell perderán su significado especial y serán tratados como caracteres ordinarios. Las excepciones son “$”, “\” (barra invertida), y “`” (tilde invertida). Esto significa que la separación de palabras, expansión de nombres de archivo, expansión de la tilde de la ñ y la expansión con llaves están suprimidas, pero la expansión con parámetros, la expansión aritmética y la sustitución de comandos sí que funcionarán. Usando comillas dobles, podemos manejar nombres de archivo que contengan espacios en blanco. Digamos que somos la desafortunada víctima de un archivo llamado two words.txt. Si tratáramos de usarlo en la línea de comandos, la separación de palabras haría que fuera tratado como dos argumentos separados en lugar del único argumento que queremos:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls -l two words.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls: cannot access two: No such file or directory
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls: cannot access words.txt: No such file or directory&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Recuerda, la expansión con parámetros, la expansión aritmética y la sustitución de comandos siguen funcionando dentro de las comillas dobles:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;cal&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/mgZVDkP0/Captura-de-pantalla-de-2020-11-16-08-44-59.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;me &lt;span class="m"&gt;4&lt;/span&gt; February &lt;span class="m"&gt;2008&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Su Mo Tu We Th Fr Sa
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="m"&gt;3&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="m"&gt;6&lt;/span&gt; &lt;span class="m"&gt;7&lt;/span&gt; &lt;span class="m"&gt;8&lt;/span&gt; &lt;span class="m"&gt;9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;10&lt;/span&gt; &lt;span class="m"&gt;11&lt;/span&gt; &lt;span class="m"&gt;12&lt;/span&gt; &lt;span class="m"&gt;13&lt;/span&gt; &lt;span class="m"&gt;14&lt;/span&gt; &lt;span class="m"&gt;15&lt;/span&gt; &lt;span class="m"&gt;16&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;17&lt;/span&gt; &lt;span class="m"&gt;18&lt;/span&gt; &lt;span class="m"&gt;19&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt; &lt;span class="m"&gt;21&lt;/span&gt; &lt;span class="m"&gt;22&lt;/span&gt; &lt;span class="m"&gt;23&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;24&lt;/span&gt; &lt;span class="m"&gt;25&lt;/span&gt; &lt;span class="m"&gt;26&lt;/span&gt; &lt;span class="m"&gt;27&lt;/span&gt; &lt;span class="m"&gt;28&lt;/span&gt; &lt;span class="m"&gt;29&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comillas-simples"&gt;
Comillas simples
&lt;a href="#comillas-simples" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si necesitamos suprimir todas las expansiones, usamos comillas simples. A continuación vemos una comparación entre sin comillas, comillas dobles y comillas simples:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; text ~/*.txt &lt;span class="o"&gt;{&lt;/span&gt;a,b&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; foo&lt;span class="k"&gt;)&lt;/span&gt; &lt;span class="k"&gt;$((&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt; &lt;span class="nv"&gt;$USER&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;text ~/*.txt {a,b} &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; foo&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Generando como salida correspondientemente&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;text /home/me/ls-output.txt a b foo &lt;span class="m"&gt;4&lt;/span&gt; me
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;text ~/*.txt &lt;span class="o"&gt;{&lt;/span&gt;a,b&lt;span class="o"&gt;}&lt;/span&gt; foo &lt;span class="m"&gt;4&lt;/span&gt; me
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;text ~/*.txt &lt;span class="o"&gt;{&lt;/span&gt;a,b&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; foo&lt;span class="k"&gt;)&lt;/span&gt; &lt;span class="k"&gt;$((&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt; &lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Dz8grNd6/Captura-de-pantalla-de-2020-11-16-08-46-57.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Como podemos ver, con cada nivel sucesivo de entrecomillado, se van suprimiendo más expansiones.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="caracteres-de-escape"&gt;
Caracteres de escape
&lt;a href="#caracteres-de-escape" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Algunas veces sólo queremos entrecomillar un único carácter. Para hacerlo, podemos preceder un carácter con una barra invertida, que en este contexto se llama carácter de escape. A menudo se hace dentro de las comillas dobles para prevenir selectivamente una expansión:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;The balance for user &lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="s2"&gt; is: &lt;/span&gt;&lt;span class="nv"&gt;$5&lt;/span&gt;&lt;span class="s2"&gt;.00&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;The balance &lt;span class="k"&gt;for&lt;/span&gt; user me is: &lt;span class="nv"&gt;$5&lt;/span&gt;.00&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;También es común usar caracteres de escape para eliminar el significado especial de un carácter en un nombre de archivo. Por ejemplo, es posible usar caracteres en nombres de archivo que normalmente tienen un significado especial para el shell. Esto incluye “$”, “!”, “&amp;amp;”, “ “, y otros. Para incluir un carácter especial en un nombre de archivo puedes hacer esto:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mv bad&lt;span class="se"&gt;\&amp;amp;&lt;/span&gt;filename good_filename&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Para permitir que la barra invertida aparezca, la “escapamos” escribiendo “\\”. Fíjate que dentro de las comillas simples, la barra invertida pierde su significado especial y se trata como un carácter ordinario.&lt;/p&gt;</description></item><item><title>Scrcpy</title><link>https://patojad.com.ar/post/2020/11/scrcpy/</link><pubDate>Fri, 13 Nov 2020 09:32:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/11/scrcpy/</guid><description>&lt;p&gt;En lo personal soy una persona que dependo mucho de mi dispositivo celular para poder trabajar, ya que en el tengo apps relacionadas con 2FA y varios y realmente no es cómodo estar cambiando de dispositivo todo el tiempo, y más cuando olvidamos cargar el celular y no tiene la batería suficiente.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/BZzC6LnL/Captura-de-pantalla-de-2020-11-13-08-49-00.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esta aplicación que estamos mostrando hoy es una solución para la gente como yo, que les gusta dejar el Celular conectado por USB y seguirlo usando sin sacar las manos del teclado.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Esta aplicación puede ser realmente útil dependiendo el usuario, por lo cual vamos a ir viendo el proceso de instalación para las diferentes distros.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="debianubuntu"&gt;
Debian/Ubuntu
&lt;a href="#debianubuntu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;En este caso vamos a encontrarlo en debian sid o testing y en ubuntu 20.04 (Antix lo tiene desde la versión 19) en adelante. De no tener estos repositorios lo más probable es que no lo encuentres para su uso. La instalación se hace mediante apt de la siguiente forma:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install scrcpy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arch-y-derivadas"&gt;
Arch y derivadas
&lt;a href="#arch-y-derivadas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;En este caso vamos a hacer uso de los repositorios de la comunidad conocidos como AUR en esta oportunidad vamos a tener las últimas versiones. Para esto vamos a hacer uso de YAY de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S scrcpy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="otras-bases-y-distros"&gt;
Otras bases y distros
&lt;a href="#otras-bases-y-distros" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Podemos encontrar esta hermosa app en todas las distros de GNU/Linux pero puede que en algunos casos tengamos algún problema de dependencia, o simplemente el hecho de que queramos tener una versión actual nos puede empujar a cosas buenas (como instalar Arch) o cosas malas (como usar Snap). En fin, hay que saber que tenemos a disponibilidad el Snap para simplificar la instalación en diferentes distros.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;snap install scrcpy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="windows"&gt;
Windows
&lt;a href="#windows" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;En windows tenemos muchas posibilidades de instalarlo, como descargar el zip desde su git, sin embargo es importante mantener todo bien organizado y con buen funcionamiento, para lo cual recomiendo instalar Chocolatey&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;cmd&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;choco install scrcpy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;choco install adb&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="usando-la-app"&gt;
Usando la app
&lt;a href="#usando-la-app" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En mi caso al instalarlo por AUR no me creo ningun icono entre mis apps pero podía ejecutarlo simplemente por la terminal de la siguiente forma:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scrcpy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Luego cree mi propio icono en el menú, pero bastará con ejecutarlo y tener nuestro celular conectado por usb. Es importante recordar que el celular tiene que tener el modo desarrollador y el USB debug. Para chequearlo podemos ver que lo reconozca adb de la siguiente manera.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb devices&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/7YTnTH5B/Captura-de-pantalla-de-2020-11-13-09-15-56.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En caso de tener algún error o necesitar ayuda no te olvides que estamos disponibles en el grupo de Telegram para todos ustedes!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://t.me/PatoJADCommunity" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-telegram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Unite a nuestra comunidad
&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Expansión con llaves</title><link>https://patojad.com.ar/post/2020/11/expansi%C3%B3n-con-llaves/</link><pubDate>Wed, 11 Nov 2020 08:54:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/11/expansi%C3%B3n-con-llaves/</guid><description>&lt;p&gt;Quizás la expansión más extraña es la llamada &lt;strong&gt;expansión con llaves&lt;/strong&gt;. Con ella, puedes crear múltiples cadenas de texto a partir de un patrón que contenga llaves. Aquí tienes un ejemplo:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; Front-&lt;span class="o"&gt;{&lt;/span&gt;A,B,C&lt;span class="o"&gt;}&lt;/span&gt;-Back&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Nos daría una salida tal como:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Front-A-Back Front-B-Back Front-C-Back&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/kgchWZSV/Captura-de-pantalla-de-2020-11-11-08-46-15.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Los patrones a expandir con llaves pueden contener un prefijo llamado preamble (preámbulo) y un sufijo llamado postcript (postdata). La expresión entre llaves puede contener una lista de cadenas separadas por comas o un rango de números enteros o caracteres individuales. El patrón no debe contener espacios en blanco. Aquí hay un ejemplo usando un rango de números enteros:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; Number_&lt;span class="o"&gt;{&lt;/span&gt;1..5&lt;span class="o"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Que imprime la siguiente salida&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Number_1 Number_2 Number_3 Number_4 Number_5&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Ls8QDTkx/Captura-de-pantalla-de-2020-11-11-08-46-38.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Los números enteros también pueden tener ceros a la izquierda así:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;01..15&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;001..15&lt;span class="o"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Imprimiendo como salidas respectivamente:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;01&lt;/span&gt; &lt;span class="m"&gt;02&lt;/span&gt; &lt;span class="m"&gt;03&lt;/span&gt; &lt;span class="m"&gt;04&lt;/span&gt; &lt;span class="m"&gt;05&lt;/span&gt; &lt;span class="m"&gt;06&lt;/span&gt; &lt;span class="m"&gt;07&lt;/span&gt; &lt;span class="m"&gt;08&lt;/span&gt; &lt;span class="m"&gt;09&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt; &lt;span class="m"&gt;11&lt;/span&gt; &lt;span class="m"&gt;12&lt;/span&gt; &lt;span class="m"&gt;13&lt;/span&gt; &lt;span class="m"&gt;14&lt;/span&gt; &lt;span class="m"&gt;15&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;001&lt;/span&gt; &lt;span class="m"&gt;002&lt;/span&gt; &lt;span class="m"&gt;003&lt;/span&gt; &lt;span class="m"&gt;004&lt;/span&gt; &lt;span class="m"&gt;005&lt;/span&gt; &lt;span class="m"&gt;006&lt;/span&gt; &lt;span class="m"&gt;007&lt;/span&gt; &lt;span class="m"&gt;008&lt;/span&gt; &lt;span class="m"&gt;009&lt;/span&gt; &lt;span class="m"&gt;010&lt;/span&gt; &lt;span class="m"&gt;011&lt;/span&gt; &lt;span class="m"&gt;012&lt;/span&gt; &lt;span class="m"&gt;013&lt;/span&gt; &lt;span class="m"&gt;014&lt;/span&gt; &lt;span class="m"&gt;015&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/2yh0yXmS/Captura-de-pantalla-de-2020-11-11-08-47-42.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Un rango de letras en orden inverso:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;Z..A&lt;span class="o"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Mostrando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Z Y X W V U T S R Q P O N M L K J I H G F E D C B A&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/qRtbVv5n/Captura-de-pantalla-de-2020-11-11-08-47-59.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Las expansiones con llaves pueden ser anidadas:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; a&lt;span class="o"&gt;{&lt;/span&gt;A&lt;span class="o"&gt;{&lt;/span&gt;1,2&lt;span class="o"&gt;}&lt;/span&gt;,B&lt;span class="o"&gt;{&lt;/span&gt;3,4&lt;span class="o"&gt;}}&lt;/span&gt;b&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Lo que daría una salida tal como:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aA1b aA2b aB3b aB4b&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Bv7YVKM4/Captura-de-pantalla-de-2020-11-11-08-48-14.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;¿Y para qué sirve esto? La aplicación más común es hacer listas de archivos o directorios a crear. Por ejemplo, si fuésemos fotógrafos con una gran colección de imágenes que queremos organizar en años y meses, la primera cosa que deberíamos hacer es crear una serie de directorios nombrados en formato numérico “Año-Mes”. De esta forma, los directorios se ordenarán cronológicamente. Podríamos escribir la lista completa de directorios, pero sería un montón de trabajo y sería muy fácil equivocarnos. En lugar de eso, podríamos hacer esto:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir Fotos
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; Fotos
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir &lt;span class="o"&gt;{&lt;/span&gt;2007..2009&lt;span class="o"&gt;}&lt;/span&gt;-&lt;span class="o"&gt;{&lt;/span&gt;01..12&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Nos mostraría lo siguiente:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2007-01 2007-07 2008-01 2008-07 2009-01 2009-07
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2007-02 2007-08 2008-02 2008-08 2009-02 2009-08
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2007-03 2007-09 2008-03 2008-09 2009-03 2009-09
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2007-04 2007-10 2008-04 2008-10 2009-04 2009-10
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2007-05 2007-11 2008-05 2008-11 2009-05 2009-11
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2007-06 2007-12 2008-06 2008-12 2009-06 2009-12&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/gJfMYbC7/Captura-de-pantalla-de-2020-11-11-08-49-23.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>Expansión</title><link>https://patojad.com.ar/post/2020/11/expansi%C3%B3n/</link><pubDate>Mon, 09 Nov 2020 10:12:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/11/expansi%C3%B3n/</guid><description>&lt;p&gt;Cada vez que escribes un comando y presionas la tecla enter, bash realiza varios procesos sobre el texto antes de llevar a cabo el comando. Hemos visto un par de casos de cómo una simple secuencia de caracteres, por ejemplo “*”, puede tener mucho significado para el shell. El proceso que hace que esto ocurra se llama expansión. Con la expansión, introduces algo y se expande en otra cosa antes de que el shell actúe sobre ello. Para demostrar qué queremos decir con esto, echemos un vistazo al comando echo. echo es un shell builtin que realiza una tarea muy simple. Muestra sus argumentos de texto en la salida estándar:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/QMJHF4VH/Captura-de-pantalla-de-2020-11-09-09-57-43.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo PatoJAD el mejor Blog
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Veremos una salida tal como:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PatoJAD el mejor Blog
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Es muy sencillo. Cualquier argumento que pasemos a echo se muestra. Probemos otro ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo *
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Muestra una salida como:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Desktop Documents ls-output.txt Music Pictures Public Templates Videos
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/V67vRJqw/Captura-de-pantalla-de-2020-11-09-09-58-46.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Pero, ¿qué ha pasado? ¿por qué echo no ha escrito “*”? Como recordarás de nuestro trabajo con comodines, el carácter “*” significa coincidencia con cualquier carácter en el nombre de archivo, pero lo que no hemos visto en nuestra conversación original es cómo hace eso el shell. La respuesta sencilla es que el shell expande el “*” en algo más (en este ejemplo, los nombres de los archivos que se encuentran en el directorio de trabajo actual) antes de que el comando echo se ejecute. Cuando presionamos la tecla enter, el shell automáticamente expande todos los caracteres en la línea de comandos antes de que el comando sea ejecutado, por lo que el comando echo no ve el “*”, sólo su resultado expandido. Sabiendo esto, podemos ver que echo se ha comportado como se esperaba.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="expansión-de-nombres-de-archivo"&gt;
Expansión de nombres de archivo
&lt;a href="#expansi%c3%b3n-de-nombres-de-archivo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El mecanismo según el cual trabajan los comodines se llama expansión de nombres de archivo. Si probamos algunas de las técnicas que hemos empleado en nuestros capítulos anteriores, veremos que son realmente expansiones. Tomemos un directorio home que aparezca de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls
Desktop ls-output.txt Pictures Templates
Documents Music Public Videos
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;podríamos llevar a cabo las siguientes expansiones:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/nrCzwn2D/Captura-de-pantalla-de-2020-11-09-09-59-49.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo D*
Desktop Documents
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;y:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo *s
Documents Pictures Templates Videos
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/XJNXdfyx/Captura-de-pantalla-de-2020-11-09-10-00-11.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="expansión-de-nombres-de-archivos-ocultos"&gt;
Expansión de nombres de archivos ocultos
&lt;a href="#expansi%c3%b3n-de-nombres-de-archivos-ocultos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como sabemos, los nombres de archivo que empiezan por un punto están ocultos. La expansión de nombres de archivo también respeta este comportamiento. Una expansión como:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo *
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;no revela los archivos ocultos. Podría parecer a primera vista que podríamos incluir archivos ocultos en una expansión comenzando el patrón con un punto, así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo .*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Casi funciona. De todas formas, si examinamos los resultados atentamente, veremos que los nombres “.” y “..” también aparecen en los resultados. Como estos nombres se refieren al directorio actual y su directorio padre, usar este patrón probablemente producirá un resultado incorrecto. Podemos verlo si probamos el comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -d .* | less
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para ejecutar mejor una expansión de nombres de archivo en esta situación, tenemos que emplear un patrón más específico:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo .[!.]*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este patrón se expande en todos los nombres de archivo que empiecen con un punto, no incluye un segundo punto, seguido de cualquier otro carácter. Esto funcionará correctamente con la mayoría de archivos ocultos (aunque no incluirá archivos con varios puntos al comienzo de su nombre). El comando ls con la opción -A (“almost all” o “casi todo”) proporcionará un listado correcto de los archivos ocultos:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -A
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="expansión-aritmética"&gt;
Expansión aritmética
&lt;a href="#expansi%c3%b3n-aritm%c3%a9tica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El shell permite realizar aritmética mediante la expansión. Esto nos permite usar el prompt del shell como una calculadora:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/MHNGCg3r/Captura-de-pantalla-de-2020-11-09-10-00-41.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo $((2 + 2))
4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La expansión aritmética usa la forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$((expresión))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Donde &lt;em&gt;expresión&lt;/em&gt; es una expresión aritmética consistente en valores y operadores aritméticos. La expansión aritmética sólo soporta enteros (números enteros sin decimales), pero puede realizar un buen número de operaciones diferentes.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Tuberias un poco mas a fondo</title><link>https://patojad.com.ar/post/2020/11/tuberias-un-poco-mas-a-fondo/</link><pubDate>Wed, 04 Nov 2020 09:24:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/11/tuberias-un-poco-mas-a-fondo/</guid><description>&lt;p&gt;Ya vimos en la publicación anterior sobre tuberías y ahora vamos a darle un poco más de uso y vamos a ir viendo algunos ejemplos. Recuerde que todo lo que aprendamos puede irse combinando en cuanto a lo lógico sea.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-diferencia-entre--y-"&gt;
La diferencia entre &amp;gt; y |
&lt;a href="#la-diferencia-entre--y-" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A primera vista, podría ser difícil de comprender la redirección realizada por el operador tubería (pipeline) | frente a la del operador de redirección &amp;gt;. Simplificando, el operador de redirección conecta un comando con un archivo mientras que el operador tubería conecta la salida de un comando con la entrada de un segundo comando.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;comando1 &amp;gt; archivo1
comando1 | comando2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mucha gente intentará lo siguiente cuando estén aprendiendo las tuberías, “sólo para ver lo que sucede.”&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;comando1 &amp;gt; comando2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Respuesta: A veces algo realmente malo.&lt;/p&gt;
&lt;p&gt;Aquí tenemos un ejemplo real enviado por un lector que estaba administrando un servidor basado en Linux. Como superusuario, hizo esto:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /usr/bin
ls &amp;gt; less
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El primer comando le colocó en el directorio donde están almacenados la mayoría de los programas y el segundo comando le dijo al shell que sobrescriba el archivo less con la salida del comando ls. Como el directorio /usr/bin ya contenía un archivo llamado “less” (el programa less), el segundo comando sobrescribió el archivo del programa less con el texto de ls y en consecuencia destruyó el programa less en su sistema.&lt;/p&gt;
&lt;p&gt;La lección aquí es que el operador de redirección crea o sobrescribe archivos silenciosamente, así que necesitas tratarlo con mucho respeto.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="filtros"&gt;
Filtros
&lt;a href="#filtros" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Las tuberías a menudo se usan para realizar complejas operaciones con datos. Es posible poner varios comandos juntos en una tubería. Con frecuencia, a los comandos usados de esta forma se les llama filtros. Los filtros toman entradas, las cambian de alguna manera y las mandan a la salida. El primero que probaremos es sort. Imagina que queremos hacer una lista combinada de todos los programas ejecutables en /bin y en /usr/bin, que los ponga en orden y los veamos:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls /bin /usr/bin | sort | less
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como hemos especificado dos directorios (/bin y /usr/bin), la salida de ls debería haber consistido en dos listas ordenadas, una para cada directorio. Pero incluyendo sort, en nuestra tubería, hemos cambiado los datos para producir una única lista ordenada.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="uniq--muestra-u-omite-líneas-repetidas"&gt;
uniq – Muestra u omite líneas repetidas
&lt;a href="#uniq--muestra-u-omite-l%c3%adneas-repetidas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando uniq a menudo se usa junto con sort. uniq acepta una lista ordenada de datos de la entrada estándar o de un argumento que sea un nombre de archivo (mira la man page de uniq para saber más detalles) y, por defecto, elimina los duplicados de la lista. Así, que para estar seguro de que nuestra lista no tiene duplicados (ya sabes, algunos programas con el mismo nombre pueden aparecer tanto en el directorio /bin como en /usr/bin) añadiremos uniq a nuestra tubería:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls /bin /usr/bin | sort | uniq | less
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En este ejemplo, usamos uniq para eliminar duplicados de la salida del comando sort. Si, en lugar de eso, queremos ver la lista de duplicados, añadiremos la opción “-d” a uniq así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls /bin /usr/bin | sort | uniq -d | less
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="wc--muestra-el-número-de-líneas-palabras-y-bytes"&gt;
wc – Muestra el número de líneas, palabras y bytes
&lt;a href="#wc--muestra-el-n%c3%bamero-de-l%c3%adneas-palabras-y-bytes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando wc (word count – contador de palabras) se usa para mostrar el número de líneas, palabras y bytes contenidos en un archivo. Por ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wc ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Viendo una salida como esta:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;7902 64566 503634 ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En este caso muestra tres números: líneas, palabras y bytes contenidos en ls-output.txt. Como nuestros anteriores comandos, si lo ejecutamos sin argumentos, wc acepta la entrada estándar. La opción “-l” limita su salida para mostrar sólo el número de líneas. Añadirlo a una tubería es una forma útil de contar cosas. Para ver el número de elementos que tenemos en nuestra lista ordenada, podemos hacer esto:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls /bin /usr/bin | sort | uniq | wc -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Viendo una salida como esta:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;2728
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="grep--imprime-líneas-que-coinciden-con-un-patrón"&gt;
grep – Imprime líneas que coinciden con un patrón
&lt;a href="#grep--imprime-l%c3%adneas-que-coinciden-con-un-patr%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;grep es un programa poderoso utilizado para encontrar patrones de texto en los archivos. Se usa así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;grep patrón [archivo...]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cuando grep encuentra un “patrón” en el archivo, muestra las líneas que lo contienen. El patrón que grep puede encontrar puede ser muy complejo, pero por ahora nos concentraremos en simples coincidencias de texto. Trataremos patrones avanzados, llamados expresiones regulares en un capítulo posterior.&lt;/p&gt;
&lt;p&gt;Digamos que queremos encontrar todos los archivos, en nuestra lista de programas, que tengan la palabra “zip” incluida en el nombre. Una búsqueda así debería darnos una idea de algunos de los programas en nuestro sistema que tienen algo que ver con la compresión de archivos. Haríamos esto:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls /bin /usr/bin | sort | uniq | grep zip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mostrando una salida como la siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bunzip2
bzip2
gunzip
gzip
unzip
zip
zipcloak
zipgrep
zipinfo
zipnote
zipsplit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hay un par de opciones útiles para grep: “-i” que hace que grep no diferencie entre mayúsculas y minúsculas cuando haga la búsqueda (normalmente las búsquedas distinguen entre mayúsculas y minúsculas) y “-v” que le dice a grep que sólo muestre las líneas que no coincidan con el patrón.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="head--tail--muestra-la-primeraúltima-parte-de-los-archivos"&gt;
head / tail – Muestra la primera/última parte de los archivos
&lt;a href="#head--tail--muestra-la-primera%c3%baltima-parte-de-los-archivos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Algunas veces no quieres toda la salida de un comando. Podrías querer sólo las primeras o las últimas líneas. El comando head muestra las primeras diez líneas de un archivo y el comando tail muestras las diez últimas. Por defecto, ambos comandos muestran diez líneas de texto, pero esto puede ajustarse con la opción “-n”:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;head -n 5 ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mostrando una salida:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;total 343496
-rwxr-xr-x 1 root root 31316 2007-12-05 08:58 [
-rwxr-xr-x 1 root root 8240 2007-12-09 13:39 411toppm
-rwxr-xr-x 1 root root 111276 2007-11-26 14:27 a2p
-rwxr-xr-x 1 root root 25368 2006-10-06 20:16 a52dec
tail -n 5 ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mostrando la siguiente salida:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-rwxr-xr-x 1 root root 5234 2007-06-27 10:56 znew
-rwxr-xr-x 1 root root 691 2005-09-10 04:21 zonetab2pot.py
-rw-r--r-- 1 root root 930 2007-11-01 12:23 zonetab2pot.pyc
-rw-r--r-- 1 root root 930 2007-11-01 12:23 zonetab2pot.pyo
lrwxrwxrwx 1 root root 6 2008-01-31 05:22 zsoelim -&amp;gt; soelim
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;También se pueden usar en tuberías:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls /usr/bin | tail -n 5
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mostrando la siguiente salida:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;znew
zonetab2pot.py
zonetab2pot.pyc
zonetab2pot.pyo
zsoelim
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;tail tiene una opción que nos permite ver los archivos en tiempo real. Esto es útil para ver el progreso de los archivos de logs tal como se van escribiendo. En el siguiente ejemplo, veremos el archivo messages en /var/log (o el archivo /var/log/syslog si messages no existe). Se requieren privilegios de superusuario para hacerlo en algunas distribuciones Linux, ya que el archivo /var/log/messages podría contener información de seguridad:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tail -f /var/log/messages
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mostrando la siguiente salida:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Feb 8 13:40:05 twin4 dhclient: DHCPACK from 192.168.1.1
Feb 8 13:40:05 twin4 dhclient: bound to 192.168.1.4 -- renewal in 1652 seconds.
Feb 8 13:55:32 twin4 mountd[3953]: /var/NFSv4/musicbox exported to both 192.168.1.0/24 and twin7.localdomain in 192.168.1.0/24,twin7.localdomain
Feb 8 14:07:37 twin4 dhclient: DHCPREQUEST on eth0 to 192.168.1.1 port 67
Feb 8 14:07:37 twin4 dhclient: DHCPACK from 192.168.1.1
Feb 8 14:07:37 twin4 dhclient: bound to 192.168.1.4 -- renewal in 1771 seconds.
Feb 8 14:09:56 twin4 smartd[3468]: Device: /dev/hda, SMART Prefailure Attribute: 8 Seek_Time_Performance changed from 237 to 236
Feb 8 14:10:37 twin4 mountd[3953]: /var/NFSv4/musicbox exported to both 192.168.1.0/24 and twin7.localdomain in 192.168.1.0/24,twin7.localdomain
Feb 8 14:25:07 twin4 sshd(pam_unix)[29234]: session opened for user me by (uid=0)
Feb 8 14:25:36 twin4 su(pam_unix)[29279]: session opened for user root by me(uid=500)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Usando la opción “-f”, tail continuará monitorizando el archivo y cuando se le añaden nuevas líneas, inmediatamente aparecen en la pantalla. Esto continúa hasta que pulses Ctrl-c.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="tee--lee-de-stdin-y-lo-pasa-a-stdout-y-a-archivos"&gt;
Tee – Lee de stdin y lo pasa a stdout y a archivos
&lt;a href="#tee--lee-de-stdin-y-lo-pasa-a-stdout-y-a-archivos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Siguiendo con nuestra metáfora de fontanería, Linux proporciona un comando llamado tee que crea una unión con forma de “T” en nuestra tubería. El programa tee lee la entrada estándar y la copia a la salida estándar (permitiendo que los datos continúen bajando por la tubería) y a uno o más archivos. Esto es útil para capturar el contenido de una tubería en una fase intermedia del procesamiento. Repetiremos uno de nuestros anteriores ejemplos, esta vez incluyendo tee para capturar el listado completo del directorio al archivo ls.txt antes de que grep filtre el contenido de la tubería:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls /usr/bin | tee ls.txt | grep zip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mostrando la siguiente salida:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bunzip2
bzip2
gunzip
gzip
unzip
zip
zipcloak
zipgrep
zipinfo
zipnote
zipsplit
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Pacman conflicto de Archivos al Actualizar</title><link>https://patojad.com.ar/post/2020/11/pacman-conflicto-de-archivos-al-actualizar/</link><pubDate>Tue, 03 Nov 2020 08:40:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/11/pacman-conflicto-de-archivos-al-actualizar/</guid><description>&lt;p&gt;Dentro de todas las distribuciones basadas en Arch Linux siempre existe la posibilidad de tener errores al actualizar, mas que nada cuando se juntan muchas actualizaciones por periodos realmente largos. En estos casos las posibilidades de errores aumentan y es preciso buscar una solución.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-caso-de-artix-linux"&gt;
El caso de Artix Linux
&lt;a href="#el-caso-de-artix-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Artix es una distribución muy buena de la que &lt;a href="https://patojad.com.ar/post/2020/08/artix-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
ya hablamos antes
&lt;/a&gt;, incluso en el canal de youtube le dedique un saga, un poco corta, a la cual el dia de hoy sumo un video mas. Los sabores oficiales de artix, al dia de la fecha, tienen este problema de actualizaciones acumuladas, el cual da el error:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;error: no se pudo realizar la operación &lt;span class="o"&gt;(&lt;/span&gt;archivos en conflicto&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nss: /usr/lib/p11-kit-trust.so existe en el sistema de archivos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Este error puede pasarnos con cualquier librería o archivo y ahora vamos a darle una solución simple!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lo-utilizado"&gt;
Lo utilizado
&lt;a href="#lo-utilizado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien como se aclara en el video podemos usar &lt;a href="https://patojad.com.ar/post/2020/09/manipulando-archivos-y-directorios/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
comodines
&lt;/a&gt;. En este caso vamos a dejar el comando específico y cada uno lo modifica de la forma que crea conveniente. El patrón a seguir es el siguiente:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;error: no se pudo realizar la operación &lt;span class="o"&gt;(&lt;/span&gt;archivos en conflicto&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nss: x existe en el sistema de archivos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Para el error que figura arriba el comando es:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Syu --overwrite x&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="w-full rounded-xl bg-yellow-600/75 text-yellow-950 p-3 flex flex-row justify-center content-between"&gt;
&lt;span class="fa fa-warning fa-5x p-3"&gt;&lt;/span&gt;
&lt;p class="no-margin"&gt;**ATENCIÓN:** En mi caso uso -Syu porque estoy actualizando, pero lo mismo seria si estamos instalando un paquete&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S nombreDelPaquete --overwrite x&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Ahora les dejo el caso específico del video para que vean como seria esto implementado.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;error: no se pudo realizar la operación &lt;span class="o"&gt;(&lt;/span&gt;archivos en conflicto&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nss: /usr/lib/p11-kit-trust.so existe en el sistema de archivos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Y la solución (para la actualización) es:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sudo pacman -Syu --overwrite /usr/lib/p11-kit-trust.so&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>7 errores comunes de ciberseguridad</title><link>https://patojad.com.ar/post/2020/10/7-errores-comunes-de-ciberseguridad/</link><pubDate>Fri, 30 Oct 2020 10:44:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/7-errores-comunes-de-ciberseguridad/</guid><description>&lt;p&gt;Como es de “común conocimiento” siempre una cadena se rompe por el eslabón más débil. En pleno siglo XXI la tecnología avanza a grandes pasos y cada vez el usuario es este eslabón fácil de romper. Una de las propuestas de este blog es intentar mejorar el día a día de sus lectores, ya sean recurrentes o casuales. Y muchas veces esto lo hacemos, como en este caso, replicando información realmente útil. Por lo cual hoy vamos a compartir información brindada por &lt;strong&gt;CSIRT-CV&lt;/strong&gt; de España. Sin más preámbulo veamos estos 7 errores comunes que debemos evitar.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-1-tienes-la-misma-contraseña-para-todas-tus-cuentas"&gt;
ERROR 1: ¿Tienes la misma contraseña para todas tus cuentas?
&lt;a href="#error-1-tienes-la-misma-contrase%c3%b1a-para-todas-tus-cuentas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.lavanguardia.com/r/GODO/LV/p6/WebSite/2019/06/04/Recortada/img_ppons_20190604-103420_imagenes_lv_colaboradores_istock-921526892-kWCH-U462671425033IgG-992x558@LaVanguardia-Web.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Usar la misma contraseña para acceder a tus redes sociales y a tu cuenta de banco no es una buena idea. Serás un blanco muy fácil para cualquier ciberdelincuente o persona malintencionada con la que te cruces en la Red.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Acá es donde todos dicen “Pero Pato, con suerte me acuerdo la fecha de mi cumpleaños como voy a manejar todas estas contraseñas” Bueno yo pensaba exactamente lo mismo y si bien la respuesta es fácil me la tuvo que decir un grande de la seguridad informática para que comience a aplicar esta maravilla. &lt;strong&gt;Usa un gestor de contraseñas&lt;/strong&gt; solo vas a tener que acordarte 1 contraseña y ahí adentro el programa solo se va a acordar de todas las demás…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-2-te-conectas-a-redes-wifi-públicas"&gt;
ERROR 2: ¿Te conectas a redes WIFI públicas?
&lt;a href="#error-2-te-conectas-a-redes-wifi-p%c3%bablicas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://jefflovesjessica.com/images/best-vpn-for-public-wifi-hotspots.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Evita conectarte a redes WIFI públicas, sobre todo, si vas a realizar operaciones bancarias. En estas redes abiertas, cualquier ciberdelincuente podría estar espiando la red y robarte contraseñas tan importantes como la de acceso a tu cuenta bancaria.&lt;/p&gt;
&lt;p&gt;Si aún así lo haces, fíjate que sea siempre a través de HTTPS (busca el candado cerrado) para que la información vaya cifrada.&lt;/p&gt;
&lt;p&gt;Ya lo sabes, la próxima vez, antes de engancharte a un wifi público, piénsatelo dos veces.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Entonces después de leer esto vos me decis “Pato los datos no son gratis y hay muchas redes abiertas que dan diferentes instituciones” Bueno yo hable anteriormente de la importancia de los datos. El uso de redes abiertas deberíamos hacerlo teniendo en cuenta el cifrado de las aplicaciones que usemos, o la baja importancia de un dato (No me molesta que me roben un meme, pero si me molesta que me roben el texto plano con mis futuras publicaciones, si existiera)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-3-usas-contraseñas-inseguras"&gt;
ERROR 3: ¿Usas contraseñas inseguras?
&lt;a href="#error-3-usas-contrase%c3%b1as-inseguras" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.pandasecurity.com/es/mediacenter/src/uploads/2016/11/pandasecurity-gestor-contrase%C3%B1as-1024x683.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Parece increíble que una de las contraseñas más frecuentes siga siendo 123456. Es un error muy habitual utilizar nombre y año de nacimiento e incluso el nombre de una mascota.&lt;/p&gt;
&lt;p&gt;Una contraseña robusta tiene que tener 8 o más caracteres, mayúsculas y minúsculas, signos de puntuación y caracteres especiales (%, $, &amp;amp;,…) y sobre todo, cámbialas periódicamente y así tus cuentas estarán siempre seguras.&lt;/p&gt;
&lt;p&gt;No se lo pongas fácil a los ciberdelincuentes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;“Pato, otra vez con esto, no me voy a acordar de esas contraseñas” Si estás pensando eso te recomiendo releer el error 1, acordate que solo 1 contraseña (Una que debería ser bastante compleja como T0d05!L05_D145@L330_3l_Bl0G@P4t0J4D) y todas las demás pueden ser hashes o cosas raras que tu gestor de contraseñas pueden guardarlas tranquilamente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-4-cuidado-con-los-adjuntos-que-recibes-por-email"&gt;
ERROR 4: ¡Cuidado con los adjuntos que recibes por email!
&lt;a href="#error-4-cuidado-con-los-adjuntos-que-recibes-por-email" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://blog.ida.cl/wp-content/uploads/sites/5/2019/05/email_internet-655x470.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Si recibes un fichero adjunto desde una cuenta desconocida ¡no lo abras nunca! Probablemente sea malicioso.&lt;/p&gt;
&lt;p&gt;Si te lo envía un conocido pero te parece “extraño”, consúltale antes de abrirlo. ¡No seas víctima del phishing!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hoy en día no somos muchos quienes seguimos usando el email activamente (La mayoría solo tiene uno porque es requisito para registrarse) Pero aun así muchos caen en estas trampas que apelan al apuro y al poco recaudo de las personas. Tomate un tiempo y chequea las cosas solo eso basta…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-5-denuncia-si-eres-víctima-de-un-ciberdelito"&gt;
ERROR 5: ¡Denuncia si eres víctima de un ciberdelito!
&lt;a href="#error-5-denuncia-si-eres-v%c3%adctima-de-un-ciberdelito" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;![](&lt;a href="https://i1.wp.com/aldiaargentina.microjuris.com/wp-content/uploads/2020/06/shutterstock_1354181000-1.jpg?fit=800%2C421&amp;amp;ssl=1%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://i1.wp.com/aldiaargentina.microjuris.com/wp-content/uploads/2020/06/shutterstock_1354181000-1.jpg?fit=800%2C421&amp;ssl=1"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No pienses que no se puede hacer nada. Si han suplantado tu identidad en Redes Sociales, denúncialo cuanto antes.&lt;/p&gt;
&lt;p&gt;Tampoco pagues el rescate a los secuestradores para recuperar tu información si eres víctima de un ransomware, DENÚNCIALO. ¡No lo olvides!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Parece que no, pero es realmente denunciar esto, o hacer denuncias masivas impulsadas por la comunidad (Sólo en casos reales) Para no dejar impune a estos delincuentes&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-6-recuerda-mantener-la-privacidad"&gt;
ERROR 6: ¡Recuerda mantener la privacidad!
&lt;a href="#error-6-recuerda-mantener-la-privacidad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.consolidatedcredit.org/es/wp-content/uploads/2019/02/Fotolia_180085577_Subscription_Monthly_M-Privacidad-de-Datos.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Un error muy común es no ser cuidadosos con la información que manejamos en nuestro lugar de trabajo y es algo que te puede traer consecuencias nefastas en cualquier carrera profesional.&lt;/p&gt;
&lt;p&gt;Toma ciertas precauciones como cerrar siempre todas las sesiones de tus cuentas de redes sociales o de cualquier otro servicio y si te ausentas un momento, recuerda bloquear siempre tu equipo.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Creo que es algo que todos sabemos pero nunca está de más repetirlo (Nunca está demás repetirlo). No hay mucho para agregar dado que es muy claro con lo que dice.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-7-contraseñas-por-defecto"&gt;
ERROR 7: ¿Contraseñas por defecto?
&lt;a href="#error-7-contrase%c3%b1as-por-defecto" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://aurora.com.gt/wp-content/uploads/2015/06/ip-router-nexxt-aurora.com_.gt_.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;¿Has cambiado la contraseña que viene por defecto en el router de tu casa o negocio?&lt;/p&gt;
&lt;p&gt;Si la respuesta es no, cámbiala lo antes posible y te ahorrarás muchos quebraderos de cabeza en el caso de que ciberdelincuentes consigan acceder a la información de la compañía a la que pertenece tu dispositivo.&lt;/p&gt;
&lt;p&gt;Además, recuerda mantener siempre actualizado su firmware. Tanto el cambio de contraseña como la actualización del firmware lo deberías hacer en cualquier dispositivo IoT que tengas en casa.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;No sé si es peor que esto siga pasando o que también pase en grandes empresas… Esta clase de cosas puede hacer que nuestro wifi quede inaccesible lo cual es realmente molesto… Siempre se deben cambiar las contraseñas por defecto (Se los digo yo que deje la contraseña del wifi que venía en el equipo)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Redirección algunos usos</title><link>https://patojad.com.ar/post/2020/10/redirecci%C3%B3n-algunos-usos/</link><pubDate>Thu, 29 Oct 2020 09:04:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/redirecci%C3%B3n-algunos-usos/</guid><description>&lt;p&gt;Seguimos con el tema de la terminal y las salidas de las mismas. Te recomiendo personalmente leer la publicación anterior para poder aprovechar al máximo esta información.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="eliminando-salidas-innecesarias"&gt;
Eliminando salidas innecesarias
&lt;a href="#eliminando-salidas-innecesarias" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Algunas veces “el silencio es oro”, y no queremos la salida de un comando, sólo queremos ignorarla. Esto se aplica particularmente a los mensajes de estado y de error. El sistema proporciona una forma de hacerlo redireccionando la salida a un archivo especial llamado “dev/null” (del cual hablamos anteriormente). Este archivo es un dispositivo del sistema llamado un cubo de bits (bit bucket) que acepta entradas y no hace nada con ellas. Para suprimir los mensajes de error de un comando, hacemos esto:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -l /bin/usr 2&amp;gt; /dev/null
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="devnull-en-la-cultura-unix"&gt;
/dev/null en la cultura Unix
&lt;a href="#devnull-en-la-cultura-unix" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El cubo de bits es un antiguo concepto de Unix y, debido a su universalidad, ha aparecido en muchas partes de la cultura Unix. Cuando alguien dice que está enviando tus comentarios a /dev/null, ahora ya sabes lo que significa.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="redireccionando-la-entrada-estándar"&gt;
Redireccionando la entrada estándar
&lt;a href="#redireccionando-la-entrada-est%c3%a1ndar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Hasta ahora, no hemos encontrado ningún comando que haga uso de la entrada estándar en la saga de publicaciones sobre la terminal (en realidad sí lo hemos hecho, pero revelaremos la sorpresa un poco más adelante), así que necesitamos presentar uno.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cat--concatenando-archivos"&gt;
cat – Concatenando archivos
&lt;a href="#cat--concatenando-archivos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando cat lee uno o más archivos y los copia a la salida estándar de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat [archivo...]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En la mayoría de los casos, puedes usarlo para mostrar archivos sin paginar, por ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mostrará el contenido del archivo ls-output.txt. cat a menudo se usa para mostrar archivos de texto cortos. Como cat puede aceptar más de un archivo como argumento, también se puede usar para unir archivos. Imagina que hemos descargado un gran archivo que ha sido dividido en múltiples partes (los archivos multimedia a menudo están divididos de esta forma en Usenet), y queremos unirlos de nuevo. Si los archivos se llamarán:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;movie.mpeg.001 movie.mpeg.002 ... movie.mpeg.099
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;podríamos unirlos de nuevo con este comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat movie.mpeg.0* &amp;gt; movie.mpeg
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como los comodines siempre expanden sus resultados en orden, los argumentos se distribuirán en el orden correcto.&lt;/p&gt;
&lt;p&gt;Todo esto está muy bien, pero ¿qué tiene esto que ver con la entrada estándar? Nada todavía, pero probamos algo más. Qué pasa si usamos “cat” sin argumentos:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No ocurre nada, sólo se queda quieto como si se hubiera quedado colgado. Podría parecer eso, pero realmente está haciendo lo que se supone que debe hacer.&lt;/p&gt;
&lt;p&gt;Si no le damos argumentos a cat, lee de la entrada estándar y como la entrada estándar está, por defecto, asignada al teclado, ¡está esperando a que tecleemos algo! Prueba a añadir el siguiente texto y pulsa Enter:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat
PatoJAD mi blog favorito https://patojad.com.ar/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, pulsa Ctrl-d (es decir, mantén pulsada la tecla Ctrl y luego pulsa “d”) para decirle a cat que ha alcanzado el final del archivo (EOF – end of file) en la entrada estándar:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat
PatoJAD mi blog favorito https://patojad.com.ar/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Obteniendo una salida similar a:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PatoJAD mi blog favorito https://patojad.com.ar/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En ausencia de nombres de archivo como argumentos, cat copia la entrada estándar a la salida estándar, así que vemos nuestra línea de texto repetida. Podemos usar este comportamiento para crear archivos de texto cortos. Digamos que queremos crear un archivo llamado “lazy_dog.txt” conteniendo el texto de nuestro ejemplo. Podríamos hacer esto:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;gt; lazy_dog.txt
PatoJAD mi blog favorito https://patojad.com.ar/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Escribe el comando seguido del texto que queremos colocar en el archivo. Recuerda pulsar Ctrl-d al final. Usando la línea de comandos, ¡hemos implementado el procesador de texto más tonto del mundo! Para ver nuestros resultados, podemos usar cat para copiar de nuevo el archivo a stdout:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat lazy_dog.txt
PatoJAD mi blog favorito https://patojad.com.ar/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora que sabemos cómo cat acepta la entrada estándar, además de nombres de archivo como argumentos, probemos redirigiendo la entrada estándar:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;lt; lazy_dog.txt
PatoJAD mi blog favorito https://patojad.com.ar/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Usando el operador de redirección “&amp;lt;”, hemos cambiado el origen de la entrada estándar del teclado al archivo lazy_dog.txt. Vemos que el resultado es el mismo que pasarle un nombre de archivo como argumento. Esto no es particularmente útil en comparación con pasar un nombre de archivo como argumento, pero sirve para demostrar el uso de un archivo como fuente de la entrada estándar. Otros comandos hacen un mejor uso de la entrada estándar, como veremos pronto.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="tuberías-pipelines"&gt;
Tuberías (Pipelines)
&lt;a href="#tuber%c3%adas-pipelines" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La capacidad de los comandos de leer datos de la entrada estándar y mandarlos a la salida estándar la utiliza una característica del shell llamada tubería (pipeline). Usando el operador tubería “|” (la barra vertical), la salida estándar de un comando puede ser entubada o canalizada hacia la entrada estándar de otro:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;comando1 | comando2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para demostrarlo plenamente, vamos a necesitar algunos comandos. ¿Recuerdas que dijimos que había uno que ya conocíamos que acepta entrada estándar? Es less. Podemos usar less para mostrar, página a página, la salida de cualquier comando que mande sus resultados a la salida estándar:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -l /usr/bin | less
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;¡Esto es extremadamente útil! Usando esta técnica, podemos examinar convenientemente la salida de cualquier comando que produzca salida estándar.&lt;/p&gt;</description></item><item><title>Genshin Impact en Linux</title><link>https://patojad.com.ar/post/2020/10/genshin-impact-en-linux/</link><pubDate>Tue, 27 Oct 2020 09:11:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/genshin-impact-en-linux/</guid><description>&lt;p&gt;Ya hace un tiempo comenzó a resonar este magnífico juego en nuestros oídos. Como siempre existe una hermosa comunidad de Linuxnautas que se esfuerzan por traerte todas las soluciones que las empresas no quieren darte y en este caso es nuestro amigo Diego Pardo el Gran Youtuber estrella que nos trae la guía definitiva para poder jugarlo en linux.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-juego"&gt;
El Juego
&lt;a href="#el-juego" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Genshin Impact es un juego de acción RPG de mundo abierto con mecánica de monetización Gacha para conseguir elementos adicionales como armas y otros recursos.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://blog.latam.playstation.com/tachyon/sites/3/2020/09/50382753728_4bd6b35aa4_ka.jpg?resize=1088,612&amp;amp;crop_strategy=smart%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://blog.latam.playstation.com/tachyon/sites/3/2020/09/50382753728_4bd6b35aa4_ka.jpg?resize=1088,612&amp;crop_strategy=smart"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Está ambientado en un mundo llamado &amp;ldquo;Teyvat&amp;rdquo;, donde las personas elegidas por los dioses recibirán el poder elemental otorgado por &amp;ldquo;Ojo de dios&amp;rdquo;. En Teyvat, los jugadores se embarcarán en varias aventuras como forasteros y viajarán con diferentes personajes con habilidades únicas que van encontrando en el camino para explorar lo desconocido y descubrir los secretos de Genshin en esta tierra. Los jugadores, al comienzo del juego, pueden elegir ser un hermano o una hermana que se adentra en la aventura en búsqueda de su familia.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="parecido-con-zelda"&gt;
Parecido con Zelda
&lt;a href="#parecido-con-zelda" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Lo primero que salta a la vista al jugar este juego es el extremo parecido que tiene con el exitoso “Legend of Zelda: Breath of the Wild”, debido principalmente a su estilo, ambos juegos destacan por su animación caricaturesca pero realista, y donde se sitúa la historia, un mundo fantástico y extremadamente amplio.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://blog.latam.playstation.com/tachyon/sites/3/2019/08/48424849972_628c19f246_oa.jpg?resize=1088,612&amp;amp;crop_strategy=smart%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://blog.latam.playstation.com/tachyon/sites/3/2019/08/48424849972_628c19f246_oa.jpg?resize=1088,612&amp;crop_strategy=smart"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Si a eso se le suma el hecho de que su mapa, Genshin Impact es un juego de “mundo abierto” donde se puede explorar sin tener que seguir una línea argumental, es extremadamente grande y variado, se entiende por qué consiguió tantas descargas a pesar de haber salido hace poco menos de un mes.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://media.ambito.com/adjuntos/239/imagenes/038/128/0038128173.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="requisitos"&gt;
Requisitos
&lt;a href="#requisitos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PROCESADOR:&lt;/strong&gt; Intel Core i5 y superior o similar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MEMORIA RAM:&lt;/strong&gt; 8 GB&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TARJETA GRÁFICA:&lt;/strong&gt; GeForce GT 1030 y superior o similar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DISCO DURO:&lt;/strong&gt; 30 GB&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;iframe src='https://www.youtube.com/embed/ZHh4Zpr59aU?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;</description></item><item><title>Redirección: El secreto de la terminal</title><link>https://patojad.com.ar/post/2020/10/redirecci%C3%B3n-el-secreto-de-la-terminal/</link><pubDate>Thu, 22 Oct 2020 09:13:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/redirecci%C3%B3n-el-secreto-de-la-terminal/</guid><description>&lt;p&gt;En esta lección vamos a desvelar la que podría ser la mejor característica de la línea de comandos. Se llama redirección I/O. I/O significa input/output y con esta característica puedes redirigir la salida y entrada de los comandos hacia o desde archivos, así como conectar múltiples comandos juntos con poderosos “conductos” o pipelines (Tuberías) de comandos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="entrada-salida-y-error-estándar"&gt;
Entrada, salida y error estándar
&lt;a href="#entrada-salida-y-error-est%c3%a1ndar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Muchos de los programas que hemos usado hasta ahora producen algún tipo de salida. Esta salida, a menudo es de dos tipos. Primero, tenemos los resultados del programa; es decir, los datos que el programa está diseñado para producir, y segundo, tenemos mensajes de estado y de error que nos dicen cómo va el programa. Si observamos un comando como ls, podemos ver que muestra sus resultados y sus mensajes de error en la pantalla.&lt;/p&gt;
&lt;p&gt;Siguiendo con el tema Unix de “todo es un archivo”, programas como ls en realidad mandan sus resultados a un archivo especial llamado standard output o salida estándar (a menudo expresado como stdout) y sus mensajes de estado a otro archivo llamado standard error o error estándar (stderr). Por defecto, tanto la salida estándar como el error estándar están vinculados a la pantalla y no se guardan en un archivo en el disco.&lt;/p&gt;
&lt;p&gt;Además muchos programas toman la entrada de una característica llamada standard input o entrada estándar (stdin) que está, por defecto, asociada al teclado.&lt;/p&gt;
&lt;p&gt;La redirección I/O nos permite cambiar dónde va la salida y de dónde viene la entrada. Normalmente, la salida va a la pantalla y la entrada viene del teclado, pero con la redirección I/O, podemos cambiarlo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="redirigiendo-la-salida-estándar"&gt;
Redirigiendo la salida estándar
&lt;a href="#redirigiendo-la-salida-est%c3%a1ndar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La redirección I/O nos permite redefinir dónde va la salida estándar. Para redirigir la salida estándar a otro archivo en lugar de a la pantalla, usamos el operador de redirección “&amp;gt;” seguido del nombre del archivo. ¿Para qué querríamos hacer esto? A menudo es útil almacenar la salida de un comando en un archivo. Por ejemplo, podríamos decirle al shell que mande la salida del comando ls al archivo ls-output.txt en lugar de a la pantalla:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -l /usr/bin &amp;gt; ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aquí, hemos creado un largo listado del directorio /usr/bin y hemos mandado los resultados al archivo ls-output.txt. Examinemos la salida redirigida del comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -l ls-output.txt
-rw-rw-r-- 1 me me 167878 2008-02-01 15:07 ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Bien, un bonito y largo archivo de texto. Si vemos el archivo con less, veremos que el archivo ls-output.txt en efecto contiene el resultado del nuestro comando ls:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;less ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, repitamos nuestra prueba de redirección, pero esta vez con un giro. Cambiaremos el nombre del directorio a uno que no exista:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -l /bin/usr &amp;gt; ls-output.txt
ls: cannot access /bin/usr: No such file or directory
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Recibimos un mensaje de error. Esto tiene sentido ya que hemos especificado el directorio /bin/usr que no existe, pero ¿por qué ha mostrado el mensaje de error en la pantalla en lugar que ser redirigido al archivo ls-output.txt? La respuesta es que el programa ls no manda sus mensajes de error a la salida estándar. En lugar de eso, como la mayoría de los programas bien escritos de Unix, manda sus mensajes de error al error estándar. Como sólo hemos redirigido la salida estándar y no el error estándar, el mensaje de error todavía es enviado a la pantalla. Veremos como redirigir el error estándar en un minuto, pero primero, veamos que ha ocurrido a nuestro archivo de salida:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; ls -l ls-output.txt
-rw-rw-r-- 1 me me 0 2008-02-01 15:08 ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;¡El archivo ahora tiene tamaño cero! Esto se debe a que, cuando redirigimos la salida con el operador de redirección “&amp;gt;”, el archivo de destino siempre se sobreescribe desde el principio. Como nuestro comando ls no generó resultados y sólo un mensaje de error, la operación de redirección comenzó a reescribir el archivo y paró a causa del error, lo que provocó que se truncase. De hecho, si alguna vez necesitamos realmente un archivo truncado (o crear un archivo nuevo vacío) podemos usar un truco como este:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Simplemente usando el operador de redirección con ningún comando precediéndolo truncará un archivo existente o creará un archivo nuevo vacío.&lt;/p&gt;
&lt;p&gt;Pero, ¿cómo podemos añadir la salida redirigida a un archivo en lugar de sobrescribir el archivo desde el principio? Para eso, usamos el operador de redirección “&amp;raquo;”, así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -l /usr/bin &amp;gt;&amp;gt; ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Usando el operador “&amp;raquo;” tendremos como resultado que la salida se añadirá al archivo. Si el archivo no existe, se creará igual que como con el operador “&amp;gt;” que hemos estado usando. Probémoslo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -l /usr/bin &amp;gt;&amp;gt; ls-output.txt
ls -l /usr/bin &amp;gt;&amp;gt; ls-output.txt
ls -l /usr/bin &amp;gt;&amp;gt; ls-output.txt
ls -l ls-output.txt
-rw-rw-r-- 1 me me 503634 2008-02-01 15:45 ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hemos repetido el comando tres veces resultando un archivo de salida tres veces más grande.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="redirigiendo-el-error-estándar"&gt;
Redirigiendo el error estándar
&lt;a href="#redirigiendo-el-error-est%c3%a1ndar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Redirigir el error estándar carece de la facilidad de un operador de redirección dedicado. Para redirigir el error estándar debemos referirnos a su descriptor de archivo (file descriptor). Un programa puede producir salidas en una secuencia de varios archivos numerados. Aunque nos hemos referido a los tres primeros de esta secuencia de archivos como entrada estándar, salida estándar y error estándar, el shell se refiere a ellos internamente con los descriptores de archivo 0, 1 y 2 respectivamente. El shell proporciona una notación para redirigir archivos utilizando el número de descriptor de archivo. Como el error estándar es el mismo que el descriptor de archivo número 2, podemos redirigir el error estándar con esta notación:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -l /bin/usr 2&amp;gt; ls-error.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El descriptor de archivo “2” se coloca inmediatamente antes del operador de redirección para realizar la redirección del error estándar al archivo ls-error.txt.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="redirigiendo-la-salida-estándar-y-el-error-estándar-a-un-archivo"&gt;
Redirigiendo la salida estándar y el error estándar a un archivo
&lt;a href="#redirigiendo-la-salida-est%c3%a1ndar-y-el-error-est%c3%a1ndar-a-un-archivo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Hay casos en que queremos capturar toda la salida de un comando a un archivo. Para hacerlo, debemos redirigir tanto la salida estándar como el error estándar al mismo tiempo. Hay dos formas de hacerlo. Primero, la forma tradicional, que funciona con versiones antiguas del shell:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -l /bin/usr &amp;gt; ls-output.txt 2&amp;gt;&amp;amp;1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Utilizando este método, conseguiremos dos redirecciones. Primero redirigimos la salida estándar al archivo ls-output.txt y después redirigimos el descriptor de archivo 2 (error estándar) al descriptor de archivo 1 (salida estándar) usando la notación 2&amp;gt;&amp;amp;1.&lt;/p&gt;
&lt;p&gt;Fíjate que el orden de las redirecciones es fundamental. La redirección del error estándar siempre debe ocurrir después de redirigir la salida estándar o no funcionará. En el ejemplo anterior,&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt;ls-output.txt 2&amp;gt;&amp;amp;1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;se redirige el error estándar al archivo ls-output.txt, pero si cambiamos el orden a&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;2&amp;gt;&amp;amp;1 &amp;gt;ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El error estándar es redirigido a la pantalla.&lt;/p&gt;
&lt;p&gt;Versiones recientes de bash proporcionan un segundo, y más eficiente método para realizar esta redirección combinada:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -l /bin/usr &amp;amp;&amp;gt; ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En este ejemplo, usamos la notación simple &amp;amp;&amp;gt; para redirigir tanto la salida estándar como el error estándar al archivo ls-output.txt. Podrías también añadir la salida estándar y el error estándar a un archivo existente así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -l /bin/usr &amp;amp;&amp;gt;&amp;gt; ls-output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Krunker.io</title><link>https://patojad.com.ar/post/2020/10/krunker.io/</link><pubDate>Wed, 21 Oct 2020 08:02:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/krunker.io/</guid><description>&lt;p&gt;Muchas veces en la sección de videojuegos tratamos de explicar cómo portear un juego o mostrar un juego nativo. Sin embargo me olvido con el fin que lo cree en su tiempo, no solo sirve para estos juegos sino que pretende mostrar grandes hazañas realizadas a la hora de hacer un juego y hoy traigo una de esas&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-juego"&gt;
El juego
&lt;a href="#el-juego" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Krunker.io es un juego caricaturizado de disparos en primera persona en el cual asumes el papel de un soldado de pixel en medio de la batalla. Usa tus tácticas de guerra y puntería para acabar con todos tus enemigos. Mata a tus enemigos y gana puntos.
Antes de luchar, elige entre 11 clases diferentes entre las que se incluyen el detective, el cañonero, el agente, el corredor, el arquero y el cazador. Cada clase cuenta con trajes y estilos diferentes, además de armas primarias y secundarias distintas.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ytimg.com/vi/9q3YZC-pFGg/maxresdefault.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Aparte de la gran variedad de clases, el juego también cuenta con una gran selección de armas increíbles. Prueba armas letales como el rifle de asalto, el rifle de francotirador, la escopeta, el revólver o las uzis. Todas tienen distintas ventajas: por ejemplo, el rifle de francotirador tiene una mirilla y es perfecto para el combate a distancia.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ytimg.com/vi/6_DwUSl28LE/maxresdefault.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Krunker es un shooter en primera persona muy original en cuanto a su jugabilidad. Se trata también de un juego caótico de ritmo muy rápido: los personajes deben moverse a toda velocidad y permanecer alerta para no recibir disparos. Además, los jugadores necesitarán ser rápidos a la hora de apuntar y tener un buen pulso (como en la mayoría de los juegos FPS).&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://images.sftcdn.net/images/t_app-cover-l,f_auto/p/7cb9fcff-89c4-4648-8496-96e90331f1e7/1261880317/krunker-screenshot.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Dispondrás de una enorme selección de mapas, creados tanto por los desarrolladores del juego como por los fans. Los usuarios pueden enviar sus propias creaciones y elegir entre cientos de mapas ingeniados por otros jugadores. La creatividad de los diseños de los mapas es asombrosa: podrás encontrarte de todo, desde paisajes de lava hasta antiguas pirámides aztecas.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://static.miniclipcdn.com/images/big-images/krunker_444x285.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Finalmente, los jugadores pueden comprobar sus puntuaciones en la sección social, que incluye clasificaciones y varias estadísticas. Intenta conseguir un puesto en la tabla con tus dotes para la batalla pixelada.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="características"&gt;
Características
&lt;a href="#caracter%c3%adsticas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Más de 5 personajes con los que jugar&lt;/li&gt;
&lt;li&gt;Puedes pintar con el atomizador&lt;/li&gt;
&lt;li&gt;Jugabilidad rápida&lt;/li&gt;
&lt;li&gt;Controles suaves&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="consejos"&gt;
Consejos
&lt;a href="#consejos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Prueba diferentes armas, elige una dependiendo de las circunstancias.&lt;/li&gt;
&lt;li&gt;Busca refugio cuando estés recargando.&lt;/li&gt;
&lt;li&gt;¡Si saltas mientras le disparas a alguien puedes ganar puntos extra!&lt;/li&gt;
&lt;li&gt;¡Practica mucho! Es un gran juego pero requiere habilidad que sólo tendrás si practicas.&lt;/li&gt;
&lt;li&gt;¡Registrate en la plataforma! Es interesante guardar tu progreso y conseguir monedas para personalizarte más.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://krunker.io/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Jugar
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Linux vs Windows</title><link>https://patojad.com.ar/post/2020/10/linux-vs-windows/</link><pubDate>Tue, 20 Oct 2020 09:16:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/linux-vs-windows/</guid><description>&lt;p&gt;Seguimos retomando tarjetas de las redes sociales para comentarlas. Antes de que sigan leyendo quiero volver a aclarar que &lt;strong&gt;NO TOMO COMO VERDAD&lt;/strong&gt; lo que digan las tarjetas en sí, simplemente es interesante comentar los puntos que discrepo. Puede que esto no sea necesario pero muchos reclamaron en la publicación anterior “como sabía que eran las más usadas” siendo que aclare que eso estaba en duda.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="diferencias-básicas"&gt;
Diferencias básicas
&lt;a href="#diferencias-b%c3%a1sicas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En este caso el autor de las imágenes pretende dar una diferenciación entre Linux y Windows, por lo cual estimo que este tipo de publicaciones no suele apelar a la agresión para ningún bando y como objetivo personal voy a intentar este usuario de que lado esta.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/63NXNsFz/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esto puede generar disputa en muchos puntos de vista. Claramente esto es muy real la ofimática y los juegos están del lado de MS Windows dado que la suite ofimática más usada es la de ellos y solo es nativa en su Sistema Operativo. En cuanto a videojuegos más allá de todo lo que podemos hacer para jugar en GNU/Linux la natividad está claramente del lado de Windows por ahora. Debo aclarar que GNU/Linux sirve para programar y para equipos viejos es realmente mucho más que eso. En definitiva ambos sitemas sirve para &lt;strong&gt;TODO&lt;/strong&gt; Aunque en comodidad pueden ser diferentes.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Rh4GmGMj/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Bueno la diferencia es que Linux al ser Software Libre se adaptó a muchos más equipos que MS DOS y es portable hasta para calculadoras… Sin embargo ambos pueden abarcar casi todos los equipos de escritorios puede que en el área de portátiles gane Windows debido a que los drivers muchas veces solo estan para este sistema.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/mrStqS5c/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La comparativa real sería Privativo vs Open Source (O Libre mejor dicho). Si bien existen distros Gratuitas (La gran mayoría) Nada impide que puedan ser de pago y eso estaría bien. No porque sea Open Source significa que sea gratis y es algo que debemos tener en mente para que este mismo crezca. Incluso lo ideal es ayudar con donaciones a dichos proyectos.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/TwRCMC2B/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Realmente esto no es del todo cierto dado que existen empresas como Red Hat que sí ofrecen soporte a nivel empresa tal cual lo hace Microsoft. Es decir que si uno paga puede obtener soporte oficial y no solo de la comunidad. Además en GNU/Linux mucho soporte se da a documentación realizada con anterioridad.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/3NWM7KJM/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Bueno esta personalización elevada de la que habla depende fuertemente del escritorio que tengamos instalado, algunos como &lt;strong&gt;Deepin&lt;/strong&gt; realmente no es muy personalizable. Sin embargo existen otros como &lt;strong&gt;KDE&lt;/strong&gt; o &lt;strong&gt;Gnome&lt;/strong&gt;, &lt;strong&gt;MATE&lt;/strong&gt;, &lt;strong&gt;etc&lt;/strong&gt; que son realmente muy personalizables. En cuanto a Windows existen muchas apps de 3ros que buscan aumentar drásticamente el nivel de personalización pero aun así esto no llega a altos niveles debido a las limitaciones del mismo sistema.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/L8QxKzgs/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Realmente esto es demasiado. Para ambos sistemas existen muchas aplicaciones para poder utilizar por lo cual en ambos podemos suplir casi todas las necesidades. En cuanto a lo seguro eso depende del usuario. Malware existe para &lt;strong&gt;TODOS&lt;/strong&gt; los sistemas y si el usuario los ejecuta los rompe.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/MH4GJ3wD/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Bueno no hay mucho más para decir, esto realmente es así y son bases diferentes, por ahi esta bueno decir que GNU/Linux tiene estructuralmente las mismas bases que MacOS, BSD, y muchos más. Sin embargo, Windows comparte las bases con ReactOS o Free DOS. Esto explica el alto nivel de incompatibilidad entre Windows y GNU/Linux&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/5yvt1qtW/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Es real que GNU/Linux es mucho más utilizado en los servidores debido a sus sistemas de paquetería, su estabilidad, entre otras cosas. Por lo cual su dominio sobre el mundo de los servidores solo va en ascenso porque cada vez aumenta más el nivel de mejoras que contiene.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/TPzws4RJ/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Y así con esta imagen la gente de entretastos.net se despide y al igual que ellos te pido que dejes tu opinión en los comentarios.&lt;/p&gt;</description></item><item><title>¿Las 5 Distros más usadas?</title><link>https://patojad.com.ar/post/2020/10/las-5-distros-m%C3%A1s-usadas/</link><pubDate>Fri, 16 Oct 2020 09:20:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/las-5-distros-m%C3%A1s-usadas/</guid><description>&lt;p&gt;Lo lindo de GNU/Linux es que podemos encontrar comunidades por todos lados y con muchas ganas de generar contenido y colaborar. En esto siempre encontramos cosas que realizan los usuarios que nos da mucho que pensar. En este caso me llevó a reflexionar sobre mi propio blog dándome cuenta que lo que pongo acá, al igual que en todos los blogs, es mi punto de vista que no necesariamente es una verdad absoluta.&lt;/p&gt;
&lt;p&gt;Por lo cual decidí tomar como costumbre tomar esas imágenes que aparecen en facebook dando alguna información relacionada a tecnología en general y comentarlas, no por el hecho de que las tarjetas están mal, sino para proyectarla más allá de facebook y obviamente para poder dar mi opinión que es un poco de lo que va esto, de no ser así sería realmente aburrido ¿No?&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/XqRr0rnP/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Como dice el titulo vamos a hablar de las distribuciones de linux más utilizadas, mejor dicho de las 5 más utilizadas. Realmente no tengo forma o parámetro de medir la veracidad del orden que le dio el autor de las imágenes, pero sí puedo comentar sus observaciones o expandirlas un poco más. Así que, vamos a eso…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="debian"&gt;
Debian
&lt;a href="#debian" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/d36stnPg/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Una de las distribuciones más antiguas y más estables que encontrarás y padre de muchos distritos como Ubuntu. Si lo que buscas es algo muy estable, esta es tu distribución.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Así la describe el autor de las imágenes aunque en lo personal cambiaría la palabra &lt;em&gt;padre&lt;/em&gt; por la palabra &lt;strong&gt;madre&lt;/strong&gt; pero son pequeñeces. En lo que sí quiero resaltar en esta oportunidad es que debian es una distro muy simple y sencilla, da un poco más de trabajo que ubuntu por ejemplo a la hora de los drivers, pero simplemente se llega a un resultado mucho mejor que este, esta distro la recomiendo para aquellas personas que no tienen miedo a aprender porque es el primer juguete que presenta pequeños desafíos simples de resolver para acostumbrarse al mundo de GNU/Linux.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="arch"&gt;
Arch
&lt;a href="#arch" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/kGsS3xjg/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ArchLinux, es muy común verla entre los usuarios que quieren tener más control de lo que están instalando y apariencia del sistema, normalmente son usuarios ya avanzados que pasaron por las distribuciones de principiantes. Una de las ventajas que tiene Arch es que es Rolling Release, en otras palabras, siempre está actualizado.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Así mismo, a arch lo veo más para usuarios que quieren aprender, no necesariamente tienen que ser avanzados, simplemente no tienen que ser “flojos de espíritu” porque seguramente se encuentren con muchas piedras en el camino y es la tranquilidad y la lectura que los lleva a aprender mucho y a sortear todos los obstáculos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="fedora"&gt;
Fedora
&lt;a href="#fedora" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/02q6ZHyd/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Fedora es una distribución de GNU/Linux para propósitos generales basada en RPM, que se caracteriza por ser un sistema estable, la cual es mantenida por una comunidad internacional de ingenieros, diseñadores gráficos y usuarios que informan fallos y prueban nuevas tecnologías. Cuenta con el respaldo y la promoción de RedHat.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bueno no hay mucho para decir de esta distribución, en lo personal no es de mi agrado pero es real que su comunidad es muy grande y aporta mucho a la causa. Esta distro es mas bien el conejillo de indias de RedHat pero aun asi es mucho mas estable que otras.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ubuntu"&gt;
Ubuntu
&lt;a href="#ubuntu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/L4QC1L4p/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Es una distribución de linux basada en la arquitectura de Debian. Actualmente corre en computadoras de escritorio y servidores, en arquitectura AMD, Intel o ARM.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bueno creo que de Ubuntu hay más que decir de lo que dice esta tarjeta… Ubuntu es la cocinita de plástico para los niños, sabemos que ahí no se van a quemar, ni a cortar, pero claramente nunca va a cocinar… Es decir que si bien Ubuntu trae todo resuelto (Incluso errores aleatorios para que no extrañes Windows) tampoco se aprende mucho en esta distribución dado que todo está completamente parcheado y poco podemos indagar o hacer. No suelo recomendarla aunque si esta bueno que la usen cuando el usuario no tiende a darse maña.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="linux-mint"&gt;
Linux Mint
&lt;a href="#linux-mint" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/rsb2nHSG/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Linux Mint basada en Debian y Ubuntu que se esfuerza por ser un “sistema operativo moderno, elegante y como; que sea potente y fácil de usar”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En lo personal creo que mint nace buscando solucionar las cosas malas de Ubuntu (y la verdad que si lo logra, es como usar ubuntu pero hecho con ganas). La versión de Debian es muy estable y óptima. Yo creo que esta es la distribución por defecto para iniciar, es conceptualmente mejor que ubuntu y si bien no requiere que se aprenda mucho para usarla siempre te invita a aprender un poco más.&lt;/p&gt;
&lt;p&gt;No te olvides de dejarnos tu comentario ya que queremos saber tu opinión sobre esta 5 distros más usadas&amp;hellip;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Orchis un tema que deberías probar</title><link>https://patojad.com.ar/post/2020/10/orchis-un-tema-que-deber%C3%ADas-probar/</link><pubDate>Wed, 14 Oct 2020 09:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/orchis-un-tema-que-deber%C3%ADas-probar/</guid><description>&lt;p&gt;Muchos usuarios ven la hermosura de &lt;strong&gt;Deepin&lt;/strong&gt; que es una de sus mayores características, sin embargo con el tiempo el escritorios se volvió algo más pesado y lleno de bugs cosa que al inicio nunca tuvo.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.pling.com/img/e/1/7/8/5db3f807359d6d2756f42a8b2f0c5ee68675.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Y si va a ser pesado y lleno de bugs, que mejor que sea muy personalizable y eso &lt;strong&gt;Deepin&lt;/strong&gt; no lo tiene, por lo cual para usar algo asi prefiero usar &lt;strong&gt;Gnome&lt;/strong&gt; (Si Julio prefiero Gnome). Si bien ya había aclarado que ya no amo a Gnome lo prefiero antes que a deepin y todo gracias a este theme que te da todo lo que deepin promete.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sobre-el-theme"&gt;
Sobre el Theme
&lt;a href="#sobre-el-theme" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.pling.com/img/1/c/d/3/72594833735c550d62bef0e175f4c76b37f0.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Este hermoso theme pretende ir a los bordes redondeados dando un acabado más estético. Si bien muchos dicen que con estos bordes se desaprovechan partes de las aplicaciones te invito a revisarlos y ver si el acabado lo vale.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.pling.com/img/f/f/5/1/2aed73fa0629038e7807e7f3efd918cb87c4.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si bien la realidad no es reemplazo de deepin en si, creo que como resultado final es muy acertado e incluso mejor porque permite integrar muchas otras apps obteniendo un resultado final mucho más embebido y generando un sistema más uniforme.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.pling.com/img/c/b/9/e/9e27ec29bdda41fade42b218561e5c5cc66b014f2cd0851beed285dc6bbad05a19a5.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En lo personal es raro que esté recomendado usar Gnome antes que Deepin pero la verdad DDE se volvió tan pesado y tosco, con tan poca posibilidad de personalización que es preferible armar scripts para Gnome que usar DDE. Incluso Gnome nos da mucho más juego a la hora de poner plugins o cualquier tipo de complementos, obteniendo así un resultado final mucho más adaptable de lo que podríamos obtener con DDE.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.gnome-look.org/p/1357889/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar Theme
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Guia para instalar Arch</title><link>https://patojad.com.ar/post/2020/10/guia-para-instalar-arch/</link><pubDate>Tue, 13 Oct 2020 10:46:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/guia-para-instalar-arch/</guid><description>&lt;p&gt;Siempre hablamos de esta distribución tan maravillosa y en esta oportunidad vamos a aprovechar que un usuario nos dejó una guía tan específica y tan perfecta que vamos a proceder con la instalación de Arch linux. Con esta guía solo basta seguir paso a paso.&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="atención-esta-guia-solo-sirve-para-instalarlo-sobre-disco-duro-y-no-sobre-ssd"&gt;
Atención esta guia solo sirve para instalarlo sobre Disco Duro y no sobre SSD
&lt;a href="#atenci%c3%b3n-esta-guia-solo-sirve-para-instalarlo-sobre-disco-duro-y-no-sobre-ssd" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="preparando-el-equipo"&gt;
Preparando el equipo
&lt;a href="#preparando-el-equipo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que hayamos booteado nuestro prendive con Arch linux vamos a poner nuestro teclado en español de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;loadkeys la-latin1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Teniendo el teclado en español ya podemos digitar sin mayores problemas por lo cual podemos proceder a conectarnos a internet siguiendo estos pasos si usaras WiFi en vez de cable.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iwctl
device list
station wlan0 scan
station wlan0 get-networks
station wlan0 connect [&amp;quot;Nombre_de_la_Red&amp;quot;] PassDelWiFi
exit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En este caso la wlan0 era la que me correspondía, si te sale otro número que no sea 0 solo cambialo por el que te sale por ejemplo wlan1. Para comprobar si ya tienes conexión activada&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ping patojad.com.ar
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Presiona las teclas Ctrl+C para parar el ping si todo funciona ok, en caso contrario debemos revisar el paso anterior. Antes de preparar el disco debemos identificar si realmente tenemos UEFI o BIOS (si es que no lo sabemos de antemano) esto podemos verlo de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls /sys/firmware/efi/efivars
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si te aparece una lista con varios identificadores es porque estás utilizando un ordenador UEFI y debes saltar hasta la parte de Preparando el Disco UEFI&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="preparando-el-disco-bios"&gt;
Preparando el Disco BIOS
&lt;a href="#preparando-el-disco-bios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para particionar el disco basta con ingresar a la herramienta de terminal que nos permite particionarlo y eso podemos hacerlo de la siguiente forma&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cfdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Seleccionar &lt;strong&gt;DOS&lt;/strong&gt; para crear una tabla de particiones para &lt;strong&gt;BIOS&lt;/strong&gt;. A continuación te dejo en detalle una de las formas recomendadas. Desde el expertise de cada uno sabe que puede omitir el home o el swap. Si no entendes mucho de las particiones te recomiendo la siguiente configuración&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sda1 /boot 512M
sda2 /swap 4-6G | Vas a la opción Type y la marcas &amp;quot;Linux Swap&amp;quot;
sda3 /root 30-60G
sda4 /home |Lo que sobre
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Write para escribir cambios en el disco y quit para salir. Luego te recomiendo listar los discos duros y sus particiones, es para asegurarte que todo haya salido bien en el particionado&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fdisk -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si todo lo anterior salió correctamente es hora de formatear las particiones para poder usarlas y eso lo vamos a hacer de la siguiente manera (Este paso puede variar si no particionaste como recomendamos en el paso anterior)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkfs.ext2 /dev/sda1 ; mkfs.ext4 /dev/sda3 ; mkfs.ext4 /dev/sda4 ; mkswap /dev/sda2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Puedes hacerlo 1 por 1 también si te sientes más cómodo. Una vez formateados nos toca montar las particiones y swap:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mount /dev/sda3 /mnt ; mkdir /mnt/boot ; mount /dev/sda1 /mnt/boot ; mkdir /mnt/home ; mount /dev/sda4 /mnt/home ; mkswap /dev/sda2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Luego de esto escribes &amp;ldquo;swapon&amp;rdquo; para encender la swap. Puedes hacerlo 1 por 1 también si es que es más cómodo.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;swapon
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="preparando-el-disco-uefi"&gt;
Preparando el Disco &lt;strong&gt;UEFI&lt;/strong&gt;
&lt;a href="#preparando-el-disco-uefi" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Primero utilizamos el siguiente comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fdisk /dev/sda
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A eso lo continuas escribiendo g luego w y q para salir. Seleccionar &lt;strong&gt;GPT&lt;/strong&gt; para crear una tabla de particiones para &lt;strong&gt;UEFI&lt;/strong&gt;. A continuación te dejo en detalle una de las formas recomendadas. Desde el expertise de cada uno sabe que puede omitir el home o el swap. Si no entendes mucho de las particiones te recomiendo la siguiente configuración&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sda1 /boot/efi 512M | La marcamos bootable | Luego vamos a Type y la marcamos &amp;quot;EFI System&amp;quot;
sda2 /swap 4-6G | Vas a la opción Type y la marcas &amp;quot;Linux Swap&amp;quot;
sda3 /root 30-60G
sda4 /home |Lo que sobre
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Write para escribir cambios en el disco y quit para salir. Luego te recomiendo listar los discos duros y sus particiones, es para asegurarte que todo haya salido bien en el particionado&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fdisk -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si todo lo anterior salió correctamente es hora de formatear las particiones para poder usarlas y eso lo vamos a hacer de la siguiente manera (Este paso puede variar si no particionaste como recomendamos en el paso anterior)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkfs.vfat -F32 /dev/sda1 ; mkfs.ext4 /dev/sda3 ; mkfs.ext4 /dev/sda4 ; mkswap /dev/sda2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Puedes hacerlo 1 por 1 también si te sientes más cómodo. Una vez formateados nos toca montar las particiones y swap:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mount /dev/sda3 /mnt ; mkdir /mnt/boot/efi ; mount /dev/sda1 /mnt/boot/efi ; mkdir /mnt/home ; mount /dev/sda4 /mnt/home ; swapon /dev/sda2
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación-del-sistema-bios"&gt;
Instalación del Sistema BIOS
&lt;a href="#instalaci%c3%b3n-del-sistema-bios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que ya tengamos nuestras particiones funcionando de 10 debemos instalar el sistema y para eso vamos a hacerlo con el siguiente comando en el caso de que nuestro equipo sea &lt;strong&gt;BIOS&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacstrap /mnt base linux-lts linux-firmware linux-lts-headers grub networkmanager network-manager-applet netctl wireless_tools iw wpa_supplicant nano xdg-user-dirs dhcpcd base-devel xterm sudo
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación-del-sistema-uefi"&gt;
Instalación del Sistema UEFI
&lt;a href="#instalaci%c3%b3n-del-sistema-uefi" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que ya tengamos nuestras particiones funcionando de 10 debemos instalar el sistema y para eso vamos a hacerlo con el siguiente comando en el caso de que nuestro equipo sea &lt;strong&gt;UEFI&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacstrap /mnt base linux-lts linux-firmware linux-lts-headers grub networkmanager network-manager-applet netctl wireless_tools iw wpa_supplicant nano xdg-user-dirs dhcpcd base-devel sudo xterm efibootmgr
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="configuraciones-varias"&gt;
Configuraciones Varias
&lt;a href="#configuraciones-varias" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ahora llega una parte que vamos a realizar algunas configuraciones varias, esto aplica tanto a UEFI como a BIOS y se realizan de la misma manera. Lo primero que vamos a realizar es descomentar multilib e Include para esto vamos a usar nano de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /mnt/etc/pacman.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Presionar crtl+w | escribir multilib y descomentar ambas líneas. Para poder hacer uso del multilib&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[multilib]
Include = /etc/pacman.de/mirrorlist
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A continuación vamos a generar fstab de la siguiente manera&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;genfstab -U /mnt &amp;gt;&amp;gt; /mnt/etc/fstab
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No tenemos que olvidarnos de cambiar root al nuevo sistema con este simple comando&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;arch-chroot /mnt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y por último procedemos con unas configuraciones varias en lo que respecta a locacion, hostname etc&amp;hellip;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ln -sf usr/share/zoneinfo/TuContinente/TuPais_o_Capital /etc/localtime
hwclock -w
nano /etc/locale.gen | crt+w escribir do | desmarcar #es_DO.UTF-8
locale-gen
echo CualquierNombre &amp;gt; /etc/hostname
echo KEYMAP=es &amp;gt; /etc/vconsole.conf
echo LANG=es_DO.UTF-8 &amp;gt; /etc/locale.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación-del-grub-en-bios"&gt;
Instalación del GRUB en BIOS
&lt;a href="#instalaci%c3%b3n-del-grub-en-bios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Es importante instalar nuestro cargador de arranque para poder iniciar el sistema y esto lo podemos hacer con 2 simples comandos para &lt;strong&gt;BIOS&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación-del-grub-en-uefi"&gt;
Instalación del GRUB en UEFI
&lt;a href="#instalaci%c3%b3n-del-grub-en-uefi" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En el caso de estar en &lt;strong&gt;UEFI&lt;/strong&gt; la instalación del cargador de arranque se realiza con los siguientes comandos:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;grub-install --efi-directory=/boot/efi --bootloader-id='Arch Linux' --target=x86_64-efi
grub-mkconfig -o /boot/grub/grub.cfg
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="configurando-el-usuario-y-el-sistema"&gt;
Configurando el usuario y el sistema
&lt;a href="#configurando-el-usuario-y-el-sistema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez instalado el GRUB podemos proceder a configurar los usuarios y el resto del sistema, para esto iniciamos configurando la contraseña root de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;passwd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una vez configurada la contraseña podemos configurar ya el usuario y contraseña que vamos a utilizar:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;useradd -mUG wheel [tu usuario]
passwd [tu usuario]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora sí ya podemos apagar todo y reiniciar para poder seguir con el sistema ya instalado!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;exit
reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una vez que haya reiniciado con éxito y estemos de nuevo en nuestro sistema vamos a configurar usuario sudoers de la siguiente forma (para esto debemos logearnos como root con su y la contraseña)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;EDITOR=nano visudo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ctrl+w | escribir: %wheel para buscar y luego procedemos a descomentar # %wheel. Ya habiendo configurado eso podemos proceder a activar internet de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl enable NetworkManager
systemctl start NetworkManager.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si usaste wifi en vez de cable escribe para obtener la lista de dispositivos y poder realizar la coneccion:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip link
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una vez que identifiquemos la placa wifi la usamos de la siguiente forma&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip link set wlo1 up
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con ese comando ya estaria prendida la placa WiFi y podemos conectarnos de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nmcli dev wifi connect PatoJADWiFi password p4t0j4d
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación-del-servidor-gráfico-y-driver-de-tu-gráfica"&gt;
Instalación del servidor gráfico y driver de tu gráfica
&lt;a href="#instalaci%c3%b3n-del-servidor-gr%c3%a1fico-y-driver-de-tu-gr%c3%a1fica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Vamos a instalar nuestra servidor gráfico y placa, para esto vamos a dividirlo dependiendo de nuestra placa de video&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="intel"&gt;
Intel
&lt;a href="#intel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://hardzone.es/app/uploads-hardzone.es/2019/09/Intel-Cascade-Lake-X-intro.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -Syyu xf86-video-intel mesa-demos intel-ucode xorg pavucontrol pulseaudio
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="nvdia"&gt;
Nvdia
&lt;a href="#nvdia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://hardzone.es/app/uploads-hardzone.es/2020/04/NVIDIA-Hotfix.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -Syyu xf86-video-nouveau mesa-demos mesa-libgl xorg pavucontrol pulseaudio
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="amd"&gt;
AMD
&lt;a href="#amd" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://hardzone.es/app/uploads-hardzone.es/2020/03/AMD-Ryzen-9.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -Syyu xf86-video-amdgpu mesa-vdpau mesa-demos xorg pavucontrol pulseaudio
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación-del-escritorio-y-sus-utilidades"&gt;
Instalación del escritorio y sus utilidades
&lt;a href="#instalaci%c3%b3n-del-escritorio-y-sus-utilidades" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A continuación vamos a ver la instalación de los escritorios disponibles y sus utilidades te recomendamos escoger el que más te guste:&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-xfce4"&gt;
Instalar XFCE4
&lt;a href="#instalar-xfce4" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://docs.xfce.org/_media/xfce/4.12/slider-desktop.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;290MiB/RAM aproximadamente, un escritorio muy ligero y bastante personalizable&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S xfce4 xfce4-goodies network-manager-applet
pacman -S lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings
pacman -S light-locker accountsservice
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-deepin"&gt;
Instalar Deepin
&lt;a href="#instalar-deepin" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.deepin.org/wp-content/uploads/2020/04/01-1.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;590MiB/RAM aproximadamente, es un escritorio muy estético aunque el nivel de personalización es bastante bajo&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S deepin deepin-extra
pacman -S lightdm deepin-session-ui
pacman -S light-locker accountsservice
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-budgie"&gt;
Instalar Budgie
&lt;a href="#instalar-budgie" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Ubuntu-budgie-18.04-cat.png/1280px-Ubuntu-budgie-18.04-cat.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;460MiB/RAM aproximadamente, un escritorio maleable y muy buscado&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S budgie-desktop gnome gnome-shell gnome-extra gdm
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-cinnamon"&gt;
Instalar Cinnamon
&lt;a href="#instalar-cinnamon" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://erikdubois.be/wp-content/uploads/2017/01/arch-cinnamon-aureola-acros.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;450MiB/RAM aproximadamente, es un escritorio muy estético y fluido, con cada actualización este escritorio se renueva y nos soprende mas&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S cinnamon gdm
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-enlightenment"&gt;
Instalar Enlightenment
&lt;a href="#instalar-enlightenment" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.stack.imgur.com/FvoTq.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;149MiB/RAM aproximadamente, es un escritorio muy liviano y muy optimizado, altamente recomendado para equipos viejos&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S enlightenment terminology gnu-free-fonts
pacman -S lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings
pacman -S light-locker accountsservice
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-gnome"&gt;
Instalar GNOME
&lt;a href="#instalar-gnome" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.redd.it/qeu6pls7v7w11.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;740MiB/RAM aproximadamente, es un escritorio muy maleable y bastante fluido (es uno de los escritorios con más precarga pero lo vale en la usabilidad) es el preferido de &lt;strong&gt;Pipe&lt;/strong&gt; y &lt;strong&gt;Julio&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S gnome gnome-extra gdm
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-gnomeflashback"&gt;
Instalar GNOME/Flashback
&lt;a href="#instalar-gnomeflashback" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;![](&lt;a href="https://external-preview.redd.it/38qPd6ZJGLQXB2HtQ6iL2ZEvOw-Dsg0VM05FOTc8O7I.png?auto=webp&amp;amp;s=bab6f84634f388e1abc83e14c954f94fe34b150d%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://external-preview.redd.it/38qPd6ZJGLQXB2HtQ6iL2ZEvOw-Dsg0VM05FOTc8O7I.png?auto=webp&amp;s=bab6f84634f388e1abc83e14c954f94fe34b150d"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;435MiB/RAM aproximadamente, el diseño del escritorio y la tecnología subyacente es similar a GNOME 2. No utiliza la aceleración 3D en absoluto, por lo que generalmente es más rápido y requiere menos CPU&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S gnome-flashback gnome gnome-applets sensors-applet gdm
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-lxde--gtk3"&gt;
Instalar LXDE — GTK3
&lt;a href="#instalar-lxde--gtk3" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.pling.com/img//hive/content-pre1/159897-1.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;175MiB/RAM aproximadamente, es un escritorio muy fluido y pueden lograrse estéticas únicas&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S lxde-gtk3 lxdm-gtk3 lxde-common
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-lxqt"&gt;
Instalar LXQt
&lt;a href="#instalar-lxqt" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://blog.desdelinux.net/wp-content/uploads/2014/05/lxqt-1.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;227MiB/RAM aproximadamente, es un escritorio fluido con un nivel de precarga bajo pero suficiente&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S lxqt sddm breeze-icons xdg-utils xscreensaver xautolock gnu-free-fonts
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-lxde--gtk2"&gt;
Instalar LXDE — GTK2
&lt;a href="#instalar-lxde--gtk2" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://blog.desdelinux.net/wp-content/uploads/2012/07/2012-07-17-194657_1440x900_scrot.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;170MiB/RAM aproximadamente, es la versión con GTK2 de lxde, en lo personal prefiero la versión con GTK3 pero eso va por cada uno.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S lxde lxdm lxde-common
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-mate"&gt;
Instalar MATE
&lt;a href="#instalar-mate" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://fc06.deviantart.net/fs71/f/2012/150/f/9/archlinux_mate_29_05_12_by_chetaahmc-d51p82z.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;332MiB/RAM aproximadamente, es uno de los escritorios con mejor relación consumo oferta y realmente es uno de los que personalmente más me gusta.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S mate mate-extra mate-media
pacman -S mate-applet-dock mate-applet-streamer mate-power-manager
pacman -S network-manager-applet system-config-printer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;mate-extra &amp;gt; Paquete de programas para MATE (opcional)
system-config-printer &amp;gt; Configuración de Impresoras (opcional)
mate-power-manager &amp;gt; El backend UPower (opcional)&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-sugar"&gt;
Instalar Sugar
&lt;a href="#instalar-sugar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://sugarlabs.org/assets/home-screenshot.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;260MiB/RAM aproximadamente, el escritorio pensado para niños (Si, no hay nada mejor que nuestro niño de 6 años use Arch, imaginense lo que va a ser a los 20) es ligero y pensado para ser muy simple de usar&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S sugar sugar-fructose sugar-runner network-manager-applet
pacman -S lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings
pacman -S light-locker accountsservice
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalar-kde-plasma"&gt;
Instalar KDE Plasma
&lt;a href="#instalar-kde-plasma" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://arcolinuxd.com/wp-content/uploads/2018/06/archlinux-plasma-menu.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;700MiB/RAM aproximadamente, es un escritorio muy estético y personalizable, la precarga es baja pero en algunos casos puede ir aumentando en el uso.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S plasma gnu-free-fonts ttf-hack kde-applications sddm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;kde-applications &amp;gt; Paquete de programas para KDE (opcional)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="iniciando-el-sistema"&gt;
Iniciando el sistema
&lt;a href="#iniciando-el-sistema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para entrar al sistema solo escribes&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl enable lightdm|sddm|gdm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Depende de el escritorio que instales por ejemplo instalaste kde plasma entonces deberías poner&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl enable sddm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y luego para poder iniciarlo también depende del escritorio que instales por ejemplo con kde&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl start sddm.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Deberías cambiar en ambos casos a sddm por el gestor de sesiones que hayas instalado para poder iniciarlo&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="créditos"&gt;
Créditos
&lt;a href="#cr%c3%a9ditos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El contenido de esta publicación no es mio, simplemente acomode y junte las 2 guías para llegar a esta publicación. Quiero agradecer a &lt;strong&gt;Im Rere =)&lt;/strong&gt; por permitirme usar sus guías.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>AMD nos presenta Zen 3</title><link>https://patojad.com.ar/post/2020/10/amd-nos-presenta-zen-3/</link><pubDate>Fri, 09 Oct 2020 08:35:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/amd-nos-presenta-zen-3/</guid><description>&lt;p&gt;El dia de ayer AMD nos presentó Zen 3 la nueva arquitectura que tendrán a partir de ahora sus procesadores de las líneas &lt;strong&gt;Ryzen&lt;/strong&gt;, &lt;strong&gt;EPYC&lt;/strong&gt; y &lt;strong&gt;Threadripper&lt;/strong&gt; a partir de ahora.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/iuiO6rqYV4o?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Tras una confirmación de cambios masivos en la arquitectura de AMD, el CTO de la empresa habla y confirma el lanzamiento de la nueva arquitectura &lt;strong&gt;ZEN 3&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://hardzone.es/app/uploads-hardzone.es/2020/10/Zen3-5-1.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Como podemos ver en los gráficos de la imagen hay un aumento en el &lt;strong&gt;IPC&lt;/strong&gt; (Instrucciones por Ciclo) del 19%. Y ahora el &lt;strong&gt;CCX&lt;/strong&gt; (Core complex) es de 8 núcleos. También informaron que doblara el caché por núcleo a la arquitectura anterior (Zen 2) debido a lo comentado anteriormente del CCX.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://hardzone.es/app/uploads-hardzone.es/2020/10/Zen3-6.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La CPU fue mejorada y retocada para poder conseguir todas estas mejoras, adicionalmente se suma una mayor cantidad de unidades Load/Store y más caché para las branching. También afirmaron que Zen 3 es 2.4 veces más performante que el Zen original y 2.8 veces más que la competencia (I9 10900k)&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://hardzone.es/app/uploads-hardzone.es/2020/10/Zen3-7.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Así mismo mostraron un poco su Roadmap dando a conocer un gran cambio en el ZEN 4 que al parecer será de 5nm a diferencia de la Zen 3 y Zen 2 que son de 7nm actualmente.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://hardzone.es/app/uploads-hardzone.es/2020/10/Zen3-8.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Confirman el Ryzen 9 5900x basado, obviamente, en Zen 3. E inmediatamente muestran diapositivas que revelan una mejora del 26% en diferentes videojuegos&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://hardzone.es/app/uploads-hardzone.es/2020/10/Zen3-10.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Lisa nos presenta toda la gama Ryzen 5000 y sus precios.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ryzen 9 5900X por unos $549:&lt;/strong&gt; Tiene 12 núcleos/24 hilos con 70 MB de cache en total, TDP de 105W y funciona a 3,7 GHz de velocidad de reloj base y 4.8 GHz de Boost.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ryzen 7 5800X por $449:&lt;/strong&gt; Tiene 8 núcleos/16 hilos con 36 MB de cache en total, TDP de 105W y funciona a 3,8 GHz de velocidad de reloj base y 4.7 GHz de Boost.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ryzen 5 5600X por $299:&lt;/strong&gt; Tiene 6 núcleos/12 hilos con 35 MB de cache en total, TDP de 65W y funciona a 3,7 GHz de velocidad de reloj base y 4.6 GHz de Boost.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://hardzone.es/app/uploads-hardzone.es/2020/10/Zen3-12.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Los cuales serán lanzados para el 5 de Noviembre de este mismo año (Datazo para quienes se están armando sus master race)&lt;/p&gt;</description></item><item><title>Creando tus propios comandos</title><link>https://patojad.com.ar/post/2020/10/creando-tus-propios-comandos/</link><pubDate>Wed, 07 Oct 2020 09:46:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/creando-tus-propios-comandos/</guid><description>&lt;p&gt;En esta oportunidad crearemos un comando propio usando el comando &lt;em&gt;alias&lt;/em&gt; que suele venir instalado en nuestra distribución de GBU/linux. Pero antes de empezar, necesitamos desvelar un pequeño truco de la línea de comandos. Es posible poner más de un comando en una línea separando cada comando con un punto y coma. Funciona así:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;comando1&lt;span class="p"&gt;;&lt;/span&gt; comando2&lt;span class="p"&gt;;&lt;/span&gt; comando3...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Aquí tenemos el ejemplo que usaremos:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /usr&lt;span class="p"&gt;;&lt;/span&gt; ls&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; -&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/d0mhp3jz/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Y nos da una salida como esta:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin games kerberos lib64 &lt;span class="nb"&gt;local&lt;/span&gt; share tmp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;etc include lib libexec sbin src
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/me&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Como podemos ver, hemos combinado tres comandos en una línea. Primero hemos cambiado el directorio a /usr luego hemos listado el directorio y finalmente hemos vuelto al directorio original (usando &amp;lsquo;cd -&amp;rsquo;) con lo que hemos terminado donde empezamos. Ahora convirtamos esta secuencia en un nuevo comando usando alias.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="usando-alias"&gt;
Usando Alias
&lt;a href="#usando-alias" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La primera cosa que tenemos que hacer es inventarnos un nombre para nuestro nuevo comando. Probemos “foo”. Antes de hacerlo, sería una buena idea averiguar si el nombre “foo” ya está siendo usado. Para averiguarlo, podemos usar el comando type de nuevo:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;type&lt;/span&gt; foo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/RFt4yDmq/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Que nos retorna&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bash: type: foo: not found&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;¡Genial! “foo” no está cogido. Así que creemos nuestro alias:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;alias&lt;/span&gt; &lt;span class="nv"&gt;foo&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;cd /usr; ls; cd -&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/mZNG9Mgx/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Fíjate en la estructura de este comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;alias&lt;/span&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;string&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Tras el comando “alias” le damos a alias un nombre seguido inmediatamente (sin espacios en blanco) por un signo igual, seguido inmediatamente por una cadena entre comillas simples conteniendo los comandos que se asignarán al nombre. Después de definir nuestro alias, puede ser usado donde quiera que el shell acepte comandos. Probemos:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;foo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/j2jvCGjS/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ahora nos dara una salida similar a:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bin games kerberos lib64 &lt;span class="nb"&gt;local&lt;/span&gt; share tmp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; etc include lib libexec sbin src
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /home/me&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;También podemos usar el comando type de nuevo para ver nuestro alias:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;type&lt;/span&gt; foo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/mr8Hhh17/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ahora nos dira:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;foo is aliased to &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /usr&lt;span class="p"&gt;;&lt;/span&gt; ls &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; -&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Para eliminar un alias, se usa el comando unalias, así:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;unalias&lt;/span&gt; foo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;type&lt;/span&gt; foo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/FsH35yfN/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Y el type nos sirve para verificar que se elimino dando la siguiente salida:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bash: type: foo: not found&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Aunque evitamos a propósito nombrar nuestro alias con un nombre de comando existente, no es raro que se haga. Generalmente se hace para aplicar una opción que se utilice a menudo en cada invocación de un comando común. Por ejemplo, vimos antes que el comando ls a menudo es un alias con soporte para colores:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;type&lt;/span&gt; ls&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Mostrando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls is aliased to &lt;span class="sb"&gt;`&lt;/span&gt;ls –color&lt;span class="o"&gt;=&lt;/span&gt;tty&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Para ver todos los alias definidos en nuestro entorno, utiliza el comando alias sin argumentos. Aquí tienes algunos de los alias definidos por defecto en un sistema Fedora. Pruébalo e imagina para qué sirve cada uno:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;alias&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/NfkTZNGN/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Mostrando las alias de la siguiente forma&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;alias&lt;/span&gt; l.&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ls -d .* --color=tty&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;alias&lt;/span&gt; &lt;span class="nv"&gt;ll&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ls -l --color=tty&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;alias&lt;/span&gt; &lt;span class="nv"&gt;ls&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ls –color=tty&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Hay un pequeño problema con la definición de alias en la línea de comandos. Se esfuman cuando la sesión de shell se cierra. Más adelante, veremos cómo añadir nuestros alias a archivos que establecen el entorno cada vez que iniciamos sesión, pero por ahora, disfruta del hecho de que hemos dado nuestro primer paso, aunque sea pequeño, ¡en el mundo de la programación en shell!&lt;/p&gt;</description></item><item><title>Instalar YAY en Artix Linux</title><link>https://patojad.com.ar/post/2020/10/instalar-yay-en-artix-linux/</link><pubDate>Tue, 06 Oct 2020 10:43:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/instalar-yay-en-artix-linux/</guid><description>&lt;p&gt;En base a lo que pide Pipe en esta oportunidad vamos a seguir con Artix esta hermosa distro que es realmente performante. Para esta oportunidad vamos a ver como instalar yay en esta magnífica distro. Por lo cual voy a dejar un corto video donde explico todo y obviamente todo esto va a estar a lo largo de la publicación.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-video"&gt;
El Video
&lt;a href="#el-video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Espero que les guste el video, y no se olviden de apoyar y suscribirse al canal para motivar el progreso.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/w-XxsaqPBZU?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para la instalación debemos ejecutar la siguiente línea de comandos que es lo que realizó durante el video. De esta forma podemos copiar y pegar&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -Sy
sudo pacman -S git base-devel
cd /tmp
rm -rf yay 2&amp;gt; /dev/null
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="adicional"&gt;
Adicional
&lt;a href="#adicional" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para activar la salida colorida en pacman y, por extensión, en yay, como recalqué en el video se puede usar este comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo sed -i '/^#Color/s/^#//' /etc/pacman.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ya teniendo todo ok debemos eliminar aurman de la siguiente manera&amp;hellip;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -R aurman
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>TaskBarX Windows</title><link>https://patojad.com.ar/post/2020/10/taskbarx-windows/</link><pubDate>Mon, 05 Oct 2020 11:29:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/taskbarx-windows/</guid><description>&lt;p&gt;Nuestra idea es ir a por la tecnología en general. Y en este caso vamos a hablar de &lt;strong&gt;Windows&lt;/strong&gt;, y un poco de como cambiar su estilo. Si bien esto no genera un &lt;strong&gt;SUPER&lt;/strong&gt; cambio, nos permite darle un estilo un tanto más llamativo y desde mi punto de vista cambia muchísimo.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://chrisandriessen.nl/images/Mockup.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TaskbarX le permite controlar la posición de los iconos de la barra de tareas. TaskbarX le dará una sensación original de dock de Windows. Los íconos se moverán al centro oa la posición dada por el usuario cuando se agregue o elimine un ícono de la barra de tareas. Se le dará la opción de elegir entre una variedad de animaciones diferentes y cambiar sus velocidades. Las animaciones se pueden desactivar si no le gustan las animaciones y desea que se muevan en un instante. La posición central también se puede cambiar para llevar sus iconos más hacia la izquierda o hacia la derecha según la posición central. Actualmente, todas las configuraciones de la barra de tareas son compatibles, incluida la barra de tareas vertical. Y barras de tareas ilimitadas :)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="un-dock-en-windows"&gt;
¿Un Dock en Windows?
&lt;a href="#un-dock-en-windows" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.deskmodder.de/blog/wp-content/uploads/2019/06/falconx-icons-in-der-taskleiste-zentrieren-windows-10-001.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esta app, que no es más que una UI que edita registros, nos permite darle un toque más estético a nuestro Windows, en base a eso nos permite agregar animaciones, blur, centrado de iconos, entre otras cosas. Esto deja un resultado que cambia en gran medida nuestro Escritorio.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="descargar"&gt;
Descargar
&lt;a href="#descargar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Actualmente este programita se encuentra en la version 1.6.1.0 y podemos descargarlo desde su &lt;a href="https://chrisandriessen.nl/taskbarx" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
página oficial
&lt;/a&gt; o mas simple desde el siguiente enlace&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/ChrisAnd1998/TaskbarX/releases/download/1.6.1.0/TaskbarX_1.6.1.0.zip" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Descargar
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Blockpost</title><link>https://patojad.com.ar/post/2020/10/blockpost/</link><pubDate>Fri, 02 Oct 2020 08:11:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/10/blockpost/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Disparador 3D cúbico procedimental en las mejores tradiciones del género. El juego es un rico cóctel que consta de las soluciones de juego más populares y funcionales. Personalización de personajes, apertura de casos y mejora del arsenal existente&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/706990/ss_68e64bfe0dccd3e570cb6f975b686637bd5d973f.600x338.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Así se define este juego en su portada Steam. Si bien este juego no es de esos que uno juega en 4K para sorprenderse por los gráficos, es realmente interesante porque si bien es muy básico y liviano es realmente divertido. Y lo más emocionante es que no requiere de un gran equipo para poder jugar ni de mucho espacio en el disco, lo cual nos permite incluir a esos compañeros que tampoco juegan seguido y echarse unas risas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="características"&gt;
Características
&lt;a href="#caracter%c3%adsticas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Entre otras cosas que más que detallar conviene entrar y probarlas, las principales características del juego son:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/706990/ss_6e84078fde2dc1a4b12f1f7242d1af805a0e30f3.600x338.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;7 modos de juego con conjuntos únicos de ubicaciones (mapas)&lt;/li&gt;
&lt;li&gt;Más de 20 ubicaciones de juegos&lt;/li&gt;
&lt;li&gt;Más de 100 tipos de armas de fuego&lt;/li&gt;
&lt;li&gt;Sistema de clan (equipo)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="requisitos"&gt;
Requisitos
&lt;a href="#requisitos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como dijimos antes los requisitos para poder jugar a este juego son realmente bajos y por lo cual cualquier persona con una pc de hace 5 años aprox podría jugar a este maravilloso juego.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/706990/ss_77ef2a3f336663ff7b57fa39f047b405c9201d7d.600x338.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SO: Windows 7&lt;/li&gt;
&lt;li&gt;Procesador: Core 2 Duo E6600&lt;/li&gt;
&lt;li&gt;Memoria: 2048 MB de RAM&lt;/li&gt;
&lt;li&gt;Gráficos: GeForce GTS 450&lt;/li&gt;
&lt;li&gt;DirectX: Versión 9.0&lt;/li&gt;
&lt;li&gt;Red: Conexión de banda ancha a Internet&lt;/li&gt;
&lt;li&gt;Almacenamiento: 100 MB de espacio disponible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este juego como vemos este juego es nativo pura y exclusivamente en Windows, sin embargo si estas en Linux recordemos que valve creo protom para poder jugar igual y en este caso funciona de 10&lt;/p&gt;
&lt;div class="text-center"&gt;
&lt;iframe
src='https://store.steampowered.com/widget/706990/'
width="646"
height="190"
title="Juego en Steam"
style="border-radius:20px;"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalarlo-en-linux"&gt;
Instalarlo en Linux
&lt;a href="#instalarlo-en-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que lo descargamos, y &lt;strong&gt;ANTES&lt;/strong&gt; de iniciarlo debemos agregar algunos parámetros para que funcione correctamente, para eso vamos a darle click derecho al juego y seleccionamos &lt;strong&gt;Propiedades&lt;/strong&gt;&amp;hellip;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/cH3V889S/Captura-de-pantalla-2020-09-01-22-51-14.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En esta sección debemos ir a Parámetros de lanzamiento y agregar tal cual el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PROTON_USE_WINED3D=1 %command%&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Por último volvemos a reiniciar steam y ya podemos jugar tranquilamente, recomiendo traducir al español el juego si no tienes un gran dominio del inglés! Y si estas interesado en jugarlo no te olvides de meterte en nuestros grupos para que juguemos juntos!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://discord.gg/n8XtgN3" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-discord" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Discord
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>¿Antivirus?¿Es Necesario? Rectificación</title><link>https://patojad.com.ar/post/2020/09/antiviruses-necesario-rectificaci%C3%B3n/</link><pubDate>Wed, 30 Sep 2020 09:40:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/antiviruses-necesario-rectificaci%C3%B3n/</guid><description>&lt;p&gt;Con anterioridad hablamos ya sobre este &lt;a href="https://patojad.com.ar/posts/2019/01/antivirus-en-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
tema en esta publicación
&lt;/a&gt;, la cual te recomiendo leer de antemano para comprender un poco la rectificación que quiero realizar sobre dicho tema.&lt;/p&gt;
&lt;p&gt;Sin embargo, como ya veremos, esta publicación les faltaban marcar algunos detalles que desde mi punto son realmente importantes, por lo cual creo que es correcto que cuando una persona se equivoca intente enmendar su error y esta es una forma de hacerlo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="disculpas"&gt;
Disculpas
&lt;a href="#disculpas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Más allá de los errores técnicos que pueda llegar a cometer que estimo que serán muchos más que cometeré en este camino de aprendizaje también existen errores meramente humanos, donde seguramente dominado por algún sentimiento actuó de una forma u otra.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.infosol.com.mx/wordpress/wp-content/uploads/disculpas-publicas-efectivas-1.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Siento que es preciso pedir perdón a &lt;strong&gt;Pedro Crespo&lt;/strong&gt; de una forma pública porque, más allá de que yo piense una cosa, no fue la mejor forma de afrontarlo y decirlo, puedo entender que se haya enojado con los videos anteriores o incluso se haya sentido mal, así que si lo estas leyendo, ¡Disculpa por los modos! todos estamos en constante aprendizaje y este es uno más&amp;hellip;&lt;/p&gt;</description></item><item><title>Comandos que no tenes que probar</title><link>https://patojad.com.ar/post/2020/09/comandos-que-no-tenes-que-probar/</link><pubDate>Mon, 28 Sep 2020 09:02:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/comandos-que-no-tenes-que-probar/</guid><description>&lt;p&gt;Navegando por la web, me encontre unas imagenes que creo que todo el user de linux querría ver, habla un poco de esos comandos que no deberíamos utilizar para jugar aunque suene tentador porque simplemente &lt;strong&gt;Quieren ver el mundo arder&lt;/strong&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="eliminar-todo-de-forma-recursiva"&gt;
Eliminar todo de forma recursiva
&lt;a href="#eliminar-todo-de-forma-recursiva" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/d0SP9yy7/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Este es probablemente el comando más popular en el ámbito de los &lt;em&gt;trolls&lt;/em&gt; de linux y si bien es popular nunca esta de mas entender bien cómo funciona y obviamente evitar el uso y la distribución de lo mismo. Este comando es el tan conocido:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rm -rf /&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Si bien todos entendemos las consecuencias de este comando que es la pérdida total de los archivos de nuestro sistemas (desde la carpeta raíz) la explicación &lt;em&gt;funcional&lt;/em&gt; dada por el usuario que creó estas imágenes es:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Con &lt;code&gt;rm -rf&lt;/code&gt; borramos todos los directorios y ficheros de manera recursiva. Añadiendo el parámetro &lt;code&gt;/&lt;/code&gt; le decimos que lo haga desde la raíz, por lo que eliminará todo lo que se encuentre por el camino.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="bomba-fork"&gt;
Bomba Fork
&lt;a href="#bomba-fork" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/tJQcrtCg/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La sintaxis de este comando es algo realmente raro, y al fin de cuenta no es tan dañino este comando, si bien tilda la PC basta con un reinicio para poder seguir, sin embargo existen muchas formas de volverlo muy dañino, pero si estás tentado en probar alguno de la lista te diria que pruebes este aunque sea bajo tu propio riesgo. El comando &lt;em&gt;raro&lt;/em&gt; es:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;:&lt;span class="o"&gt;(){&lt;/span&gt; :&lt;span class="p"&gt;|&lt;/span&gt;: &lt;span class="p"&gt;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Y según el colega que realizó las imágenes podemos describir su función de la siguiente forma:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Un comando un poco raro, ¿no? Este comando causa una muy posible caída del sistema al consumir todos los recursos disponibles de tu ordenador, ya que este proceso es generar otro proceso que se ejecute simultáneamente. Muchos procesos procesos que causan una denegación de servicio, lo más probable es que haga que tengas que reiniciar el sistema.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mover-todo-a-la-nada"&gt;
Mover todo a la nada
&lt;a href="#mover-todo-a-la-nada" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/7ZYWQLDS/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Este comando es el punto intermedio entre los dos anteriores. Es más dañino que la &lt;strong&gt;Bomba Fork&lt;/strong&gt; por lo cual no recomiendo probarlo. Este comando es muy similar a uno que suele estar en los scripts para evitar borrar las cosas las mueven a este directorio. El comando en sí que debemos evitar es:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mv ~ /dev/null&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Y nuestro colega define el funcionamiento de este comando de la siguiente forma:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Con este comando, movemos todo el contenido de nuestra carpeta home (~) a la carpeta &lt;code&gt;/dev/null&lt;/code&gt;. Claramente no existe ninguna carpeta llamada así, por lo que perderemos todos nuestros documentos, imágenes, etc. Un lío que no nos conviene.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Desde ya quiero agradecer a &lt;strong&gt;@nilo_tech&lt;/strong&gt; por realizar esto que realizo y no se olviden de pasarse por sus redes sociales para agradecerles personalmente.&lt;/p&gt;</description></item><item><title>SpeedTest desde la terminal</title><link>https://patojad.com.ar/post/2020/09/speedtest-desde-la-terminal/</link><pubDate>Thu, 24 Sep 2020 09:12:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/speedtest-desde-la-terminal/</guid><description>&lt;p&gt;Todos conocemos la famosísima página de SpeedTest, que usamos siempre para realizar las mediciones del servicio de internet. Es un sitio muy práctico que nos ayuda a entender si nuestra velocidad de internet es la correcta o si el proveedor de internet no está haciendo muy bien su laburo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lo-bueno-puede-mejorar"&gt;
Lo bueno puede mejorar
&lt;a href="#lo-bueno-puede-mejorar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En este mundo de &lt;em&gt;hackers&lt;/em&gt; donde todos queremos usar la terminal para algo existe gente que lleva todo a la terminal de linux, como por ejemplo el Speed Test. Este hermoso invento nos permite realizar el famoso test sin siquiera abrir un navegador de internet o sin tener una interface grafica. Por lo cual esto es mucho más rápido y sencillo para todos los que estamos acostumbrados a usar la terminal.&lt;/p&gt;
&lt;p&gt;Esto nació en base a una consulta que realizaron ayer en nuestro hermoso grupo de telegram por lo cual quiero agradecer a &lt;strong&gt;Mode One&lt;/strong&gt; y a &lt;strong&gt;Pipe&lt;/strong&gt; por la idea de la publicación de hoy.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="speedtest-cli"&gt;
SpeedTest-Cli
&lt;a href="#speedtest-cli" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/pd3Ym0k9/Captura-de-pantalla-2020-09-23-19-39-40.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Este hermoso cli de SpeedTest trae muchas funciones que podríamos describir pero que hoy no vienen al caso… Lo que si viene al caso es la hermosa funcionalidad que ya explique antes…&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Retrieving speedtest.net configuration...
Testing from Cablevision Argentina (181.31.84.158)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by VISIO RED SRL (Avellaneda) [11.09 km]: 18.941 ms
Testing download speed................................................................................
Download: 128.97 Mbit/s
Testing upload speed......................................................................................................
Upload: 16.39 Mbit/s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como ven realice un SpeedTest con la terminal que demoró 23 segundos, está realizado por wifi a más de 4 metros del modem con 2 paredes de por medio. Y podemos observar que nos da todos los datos de interés, la latencia y los MEGAS de subida y bajada…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalalo"&gt;
Instalalo
&lt;a href="#instalalo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Esta hermosa funcionalidad está desarrollada en python y existen 2 forma de instalar, una que voy a omitir porque pueden encontrar el paso a paso por los desarrolladores con toda la documentación necesaria es la compilación a mano, esto lo dejo para el que quiera hacerlo al final de la publicación y la otra es mediante pip.&lt;/p&gt;
&lt;p&gt;Pip es un &lt;em&gt;gestor de contenidos&lt;/em&gt; que administra librerías y paquetes python, por lo cual deben tener instalado alguna versión de python. En el caso de que no sepan si tiene alguna versión pueden instalar python-pip que es para python 2. Luego podemos avanzar con la instalación de SpeedTest de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pip3 install speedtest-cli
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para Python 3&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pip install speedtest-cli
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para Python 2&lt;/p&gt;
&lt;p&gt;Después de eso ya podemos usar el comando cuando queramos para poder obtener una rápida medición de velocidad.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;speedtest-cli
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se agradece a &lt;strong&gt;geekytheory&lt;/strong&gt; por toda la información brindada para poder realizar esta publicación. Un blog realmente interesante que no pueden perderse.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instrucciones-de-uso"&gt;
Instrucciones de uso
&lt;a href="#instrucciones-de-uso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/63RVnd1M/Captura-de-pantalla-2020-09-23-19-53-20.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Como hablamos el otro dia existen muchas herramientas para saber cómo usar un comando de terminal, les dejo la información en este caso especifico de como saberlo y cual es la información que nos da usando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;speedtest-cli -h
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Obtenemos una salida como la que vamos a ver a continuación con toda la información de la aplicación.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Command line interface for testing internet bandwidth using speedtest.net.
-------------------------------------------------------------------------- https://github.com/sivel/speedtest-cli
optional arguments:
-h, --help show this help message and exit
--no-download Do not perform download test
--no-upload Do not perform upload test
--single Only use a single connection instead of multiple. This simulates a typical file transfer.
--bytes Display values in bytes instead of bits. Does not affect the image generated by --share, nor output from
--json or --csv
--share Generate and provide a URL to the speedtest.net share results image, not displayed with --csv
--simple Suppress verbose output, only show basic information
--csv Suppress verbose output, only show basic information in CSV format. Speeds listed in bit/s and not affected
by --bytes
--csv-delimiter CSV_DELIMITER
Single character delimiter to use in CSV output. Default &amp;quot;,&amp;quot;
--csv-header Print CSV headers
--json Suppress verbose output, only show basic information in JSON format. Speeds listed in bit/s and not affected
by --bytes
--list Display a list of speedtest.net servers sorted by distance
--server SERVER Specify a server ID to test against. Can be supplied multiple times
--exclude EXCLUDE Exclude a server from selection. Can be supplied multiple times
--mini MINI URL of the Speedtest Mini server
--source SOURCE Source IP address to bind to
--timeout TIMEOUT HTTP timeout in seconds. Default 10
--secure Use HTTPS instead of HTTP when communicating with speedtest.net operated servers
--no-pre-allocate Do not pre allocate upload data. Pre allocation is enabled by default to improve upload performance. To
support systems with insufficient memory, use this option to avoid a MemoryError
--version Show the version number and exit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como comente voy a dejarles el git para quienes quieran compilarlo o modificar el código&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/sivel/speedtest-cli" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Git del proyecto
&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Obteniendo información de comandos</title><link>https://patojad.com.ar/post/2020/09/obteniendo-informaci%C3%B3n-de-comandos/</link><pubDate>Tue, 22 Sep 2020 10:02:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/obteniendo-informaci%C3%B3n-de-comandos/</guid><description>&lt;p&gt;En esta oportunidad vamos a obtener más información sobre los comandos que podemos encontrar en nuestro Shell. Para esto vamos utilizar las herramientas que nos ofrecen con este fin.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="help--ofrece-ayuda-sobre-los-shell-builtins"&gt;
&lt;strong&gt;help&lt;/strong&gt; – Ofrece ayuda sobre los shell builtins
&lt;a href="#help--ofrece-ayuda-sobre-los-shell-builtins" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;bash tiene una ayuda integrada disponible para cada shell builtin. Para usarla, escribimos “help” seguido del nombre del shell builtin. Por ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;help cd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Que genera una salida como la siguiente&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd: cd [-L|[-P [-e]]] [dir]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the HOME shell variable.
The variable CDPATH defines the search path for the directory containing DIR. Alternative directory names in CDPATH are separated by a colon (:). A null directory name is the same as the current directory. If DIR begins with a slash (/), then CDPATH is not used.
If the directory is not found, and the shell option `cdable_vars' is set, the word is assumed to be a variable name. If that variable has a value, its value is used for DIR.
Options:
-L force symbolic links to be followed
-P use the physical directory structure without following symbolic links
-e if the -P option is supplied, and the current working directory cannot be determined successfully, exit with a non-zero status
The default is to follow symbolic links, as if `-L' were specified.
Exit Status:
Returns 0 if the directory is changed, and if $PWD is set successfully when -P is used; non-zero otherwise.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Una nota sobre la notación:&lt;/strong&gt; Cuando aparecen corchetes en la descripción de la sintaxis de un comando, indican opciones adicionales. Una barra vertical indica que son elementos excluyentes entre ellos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="--muestra-información-de-uso"&gt;
&lt;strong&gt;&amp;ndash;help&lt;/strong&gt; – Muestra información de uso
&lt;a href="#--muestra-informaci%c3%b3n-de-uso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/zvjB480Z/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Muchos programas ejecutables soportan una opción “&amp;ndash;help” que muestra una descripción de la sintaxis y las opciones soportadas por el comando. Por ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir --help
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Que genera una salida como la siguiente&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Usage: mkdir [OPTION] DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.
-Z, --context=CONTEXT (SELinux) set security context to CONTEXT Mandatory arguments to long options are mandatory for short options too.
-m, --mode=MODE set file mode (as in chmod), not a=rwx – umask
-p, --parents no error if existing, make parent directories as needed
-v, --verbose print a message for each created directory
--help display this help and exit
--version output version information and exit
Report bugs to &amp;lt;bug-coreutils@gnu.org&amp;gt;.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Algunos programas no soportan la opción “&amp;ndash;help”, pero es importante probarlos de todas formas. A menudo el resultado es un error que revelará la misma información de uso.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="man--muestra-el-manual-de-un-programa"&gt;
&lt;strong&gt;man&lt;/strong&gt; – Muestra el manual de un programa
&lt;a href="#man--muestra-el-manual-de-un-programa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La mayoría de los programas ejecutables pensados para usarse en la línea de comandos proveen un documento llamado manual page o man page. Se usa un programa de paginación especial llamado man para verlos. Se usa así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;man programa
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/G2jdmzYv/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Donde “programa” es el nombre del comando que queremos ver. Las man pages varían algo en formato pero generalmente contienen un título, una sinopsis de la sintaxis del comando, una descripción del propósito del comando y una lista y descripción de cada opción del comando. Las man pages, de todas formas, no suelen incluir ejemplos, y están pensadas como una referencia, no como un tutorial. Como ejemplo, probaremos a ver la man page para el comando ls:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;man ls
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En la mayoría de los sistemas Linux, man usa less para mostrar la man page, así que todos los comandos de less que nos son familiares funcionan cuando está mostrado la página.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Si quieres saber más sobre man te dejo &lt;a href="https://patojad.com.ar/post/2019/01/man-tu-manual-para-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
un articulo
&lt;/a&gt; para leer&lt;/strong&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="apropos--muestra-comandos-apropiados"&gt;
&lt;strong&gt;apropos&lt;/strong&gt; – Muestra comandos apropiados
&lt;a href="#apropos--muestra-comandos-apropiados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/ZYGzz1XX/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;También es posible buscar en el listado de las man pages posibles coincidencias basadas en un término de búsqueda. Es muy tosco pero a veces ayuda. Aquí tienes un ejemplo de una búsqueda en las man pages utilizando el término de búsqueda “floppy”:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apropos floppy
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Generando una salida como:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;create_floppy_devices (8) - udev callout to create all possible floppy device based on the CMOS type
fdformat (8) - Low-level formats a floppy disk
floppy (8) - format floppy disks
gfloppy (1) - a simple floppy formatter for the GNOME
mbadblocks (1) - tests a floppy disk, and marks the bad blocks in the FAT
mformat (1) - add an MSDOS filesystem to a low-level formatted floppy disk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El primer campo de cada línea es el nombre de la man page, el segundo campo muestra la sección. Fíjate que el comando man con la opción “-k” ofrece exactamente la misma función que apropos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="whatis--muestra-una-descripción-muy-breve-de-un-comando"&gt;
&lt;strong&gt;whatis&lt;/strong&gt; – Muestra una descripción muy breve de un comando
&lt;a href="#whatis--muestra-una-descripci%c3%b3n-muy-breve-de-un-comando" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/bwvTCv3P/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El programa whatis muestra el nombre y una descripción de una línea de una man page coincidente con una palabra especificada:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;whatis ls
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y genera una salida muy simple como la siguiente!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls (1) - list directory contents
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>¿Que es un Hacker?</title><link>https://patojad.com.ar/post/2020/09/que-es-un-hacker/</link><pubDate>Fri, 18 Sep 2020 12:12:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/que-es-un-hacker/</guid><description>&lt;p&gt;La palabra Hacker es muy utilizada y mal implementada en estos días, es algo que se usa para todo y que cualquiera se adjudica para ganar un poco de “fama”. El tema es ¿Cuántos realmente saben lo que significan esto?&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="de-dónde-viene"&gt;
¿De dónde viene?
&lt;a href="#de-d%c3%b3nde-viene" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Más allá de las miles de historia que uno pueda encontrar rondando por internet es preciso ir a los primeros lugares donde se puede evidenciar. Esta palabra se comenzó a utilizar por el MIT dentro del ámbito de la telefonía.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://hopp.typepad.com/.a/6a00e553da444b8834019aff6e7bbe970d-pi%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://hopp.typepad.com/.a/6a00e553da444b8834019aff6e7bbe970d-pi"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Luego de esto se comenzó a utilizar mucho más y fue “expandiendo” su significado hasta el punto donde ahora se desconoce en gran mayoría.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="que-no-es-un-hacker"&gt;
¿Que &lt;strong&gt;no&lt;/strong&gt; es un hacker?
&lt;a href="#que-no-es-un-hacker" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una forma de saber que es algo es sabiendo que no es… Esta información suele ser, en algunos casos, más útil y clara que una definición. En este caso voy a listar un grupo de “personas” que son mal llamadas hackers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Programadores&lt;/strong&gt; es común que a los programadores se les diga hackers (y hay algunos que lo son) pero esto no tiene punto de relación, un programador no es un hacker más allá de que sepa un poco de seguridad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profesional de Seguridad&lt;/strong&gt; En este caso es más difícil diferenciar pero hay que entender que no porque una persona sea un profesional de la seguridad se convierte en hacker, existen muchos que por más que trabajan en seguridad ofensiva no son hackers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Persona que se le ocurrió algo ingenioso&lt;/strong&gt; Muchas veces creen que esos que le encuentran la vuelta a algo pareciendo estar por encima del promedio no necesariamente son hackers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ciberdelincuentes&lt;/strong&gt; Este es el común error de todos “un hacker obtuvo fotos íntimas de x celebridad” Estas personas no solo no son hackers sino que son todo lo contrario.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="a-la-rae-le-falta-cultura"&gt;
A la &lt;strong&gt;RAE&lt;/strong&gt; le falta cultura
&lt;a href="#a-la-rae-le-falta-cultura" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien hoy ya no lo vamos a encontrar así la RAE en algún momento definió a los Hackers como “piratas informáticos”. Sin embargo hoy en día luego de mucho debate la RAE todo una definición un poco más acercada:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Persona con grandes conocimientos de informática que se dedica a detectar fallos de seguridad en sistemas informáticos.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si bien es muy acertada puede tener un gran problema de aceptación en algunos puntos. Sin embargo hoy va virando constantemente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="algunos-hackers-famosos"&gt;
Algunos Hackers famosos
&lt;a href="#algunos-hackers-famosos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linus Tolvad&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;John Draper&lt;/strong&gt; también conocido como Captain Crunch&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;John Harris&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Richard Stallman&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="puntos-en-común"&gt;
Puntos en Común
&lt;a href="#puntos-en-com%c3%ban" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien existen muchísimos más de los que yo puse en este ejemplo vamos a ir viendo algunos puntos en común entre estos y los otros Hackers que bien ganado tienen el título.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gran curiosidad&lt;/strong&gt; Todos buscaban entender cómo funcionaban las cosas. Y siempre buscaron solucionar los problemas con lo que tenían a disposición.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gran Determinación&lt;/strong&gt; Sus hazañas llevaron mucho tiempo y una gran determinación para llegar hasta donde están.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gran conocimiento&lt;/strong&gt; Esto es más que obvio, se genera un gran conocimiento en algo específico con un gran nivel de dominio de este tema.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="filosofía-hacker"&gt;
Filosofía Hacker
&lt;a href="#filosof%c3%ada-hacker" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La filosofía hacker tiene unos pilares que rápidamente nos ayudan a comprender y diferenciar entre quienes lo son y quienes no. &lt;strong&gt;Aprender&lt;/strong&gt; es siempre la meta del Hacker, busca un constante aprendizaje y perfeccionamiento. &lt;strong&gt;Compartir&lt;/strong&gt; Los hackers no solo buscan aprender sino que también comparten lo que descubren y/o aprenden con el mundo. Y claramente esto se apoya en la &lt;strong&gt;libertad&lt;/strong&gt; (libertad de acción, el conocimiento libre, etc.)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="te-lo-explican-mejor"&gt;
Te lo explican mejor!!
&lt;a href="#te-lo-explican-mejor" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Te dejo un video de la UTN donde un profesor explica mejor estos temas. Es importante entender que es un profesional y sabe de lo que habla.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/f9f4GpHJCIM?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;</description></item><item><title>Mejorar el Rendimiento de tu CPU</title><link>https://patojad.com.ar/post/2020/09/mejorar-el-rendimiento-de-tu-cpu/</link><pubDate>Thu, 17 Sep 2020 08:50:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/mejorar-el-rendimiento-de-tu-cpu/</guid><description>&lt;p&gt;Ya con anterioridad hablamos de mejorar la performance de nuestra placa de video, algunos usuarios notaron más los cambios que otros, y en base a eso decidí terminar la segunda parte. Ya mejoramos el GPU (aunque sea integrado) Ahora nos toca el CPU. Al igual que el GPU lo ideal es eliminar lo que no sirve para optimizar todo tipos de llamada pero en este caso algunas distros pueden complicarnos más que otras.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="posibles-problemas"&gt;
Posibles problemas
&lt;a href="#posibles-problemas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.sololinux.es/wp-content/uploads/2017/08/kernel-panic-sololinux-es-2.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si usas Ubuntu o Debian suelen traer un kernel que se llama “generic” este kernel busca simplificar la vida de los teniendo como dependencias todos los controladores para evitar errores, sin embargo si pretendemos quedarnos con este kernel no vamos a poder seguir, en contraposición otras distros como arch y demás no suelen tener este problemas pero siempre existen kernels alternativos (zen, liquorix, etc).&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cambiando-el-kernel"&gt;
Cambiando el kernel
&lt;a href="#cambiando-el-kernel" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://xanmod.org/index_files/xanmod_wallpaper.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En mi caso de Debian o Ubuntu voy a recomendar Xanmod que si bien hay un &lt;a href="https://patojad.com.ar/post/2020/09/mejorar-el-rendimiento-de-tu-placa-de-video/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
tutorial de como instalarlo
&lt;/a&gt; quiero aprovechar esta oportunidad para mejorar ese tutorial.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo 'deb http://deb.xanmod.org releases main' | sudo tee /etc/apt/sources.list.d/xanmod-kernel.list &amp;amp;&amp;amp; wget -qO - https://dl.xanmod.org/gpg.key | sudo apt-key add -
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con este comando vamos agregar el &lt;strong&gt;repositorio oficial&lt;/strong&gt; de Xanmod a nuestra distro (recordemos que es siempre en bases Debian o Ubuntu) y además de esto agregamos las llaves para poder instalar el contenido de este repositorio. Luego de esto procedemos a actualizar y a instalar el kerner &lt;strong&gt;Xenmod&lt;/strong&gt; de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install linux-xanmod
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tiene diferentes variables donde podemos elegir el tipo de kernel que queremos instalar entre las cuales podemos ver:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;linux-xanmod&lt;/strong&gt; Versión completa del kernel funcional&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;linux-xanmod-edge&lt;/strong&gt; Versión completa adelantada (puede generar algún error)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;linux-xanmod-lts&lt;/strong&gt; Versión de soporte a largo plazo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;linux-xanmod-rt&lt;/strong&gt; Versión RealTime (orientado a multimedia)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;linux-xanmod-edge-rt&lt;/strong&gt; Versión RealTime adelantada (orientado a multimedia puede generar errores)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Una vez que tengamos instalado el kernel basta con reiniciar para poder iniciar el sistema con el nuevo kernel. Yo luego de reiniciar eliminar los kernels viejos (si comprobé que todo funciona ok) Pero son manías mías.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mejorando-la-performance-del-cpu"&gt;
Mejorando la performance del CPU
&lt;a href="#mejorando-la-performance-del-cpu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Bien, ahora lo que vamos a hacer es eliminar el controlador que no utilicemos para mejorar la performance de las llamadas como dije antes. Cuando hagamos esto &lt;strong&gt;puede eliminar el kernel anterior&lt;/strong&gt; si no lo hicimos nosotros, en caso de que el kernel funcione ok podemos proseguir.&lt;/p&gt;
&lt;p&gt;En caso de tener un &lt;strong&gt;Intel&lt;/strong&gt; debemos ejecutar:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt remove amd64-microcode
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En caso de tener un procesador de &lt;strong&gt;AMD&lt;/strong&gt; debemos ejecutar:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt remove intel-microcode
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Evaluaciones de Seguridad</title><link>https://patojad.com.ar/post/2020/09/evaluaciones-de-seguridad/</link><pubDate>Sat, 12 Sep 2020 09:24:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/evaluaciones-de-seguridad/</guid><description>&lt;p&gt;&lt;strong&gt;ATENCION: Antes de seguir te recomiendo que te pases por la &lt;a href="https://patojad.com.ar/post/2020/09/que-es-la-seguridad-inform%c3%a1tica/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
siguiente pulbicacion
&lt;/a&gt; dado que damos esto por entendido&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Las evaluaciones de seguridad deben tener una periodicidad regular que permite mantener una correlación de la los datos en los cuales se puedan obtener resultados, por ejemplo aquellas personas que sacan fotos todos los meses a sus bebés para luego ver el crecimiento… De nada serviría tener una foto de un dia, la otra del otro dia y la otra dentro de 10 años. Para poder ver correctamente el crecimiento debemos mantener un periodo regular de imágenes.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="motivación"&gt;
Motivación
&lt;a href="#motivaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Este tipo de regulación se da gracias a una “motivación” que técnicamente suelen ser homologaciones, normas, o puede ser mantener la seguridad de nuestros sistemas. Esto podemos compararlo con la motivación de las personas que buscan ver su cuerpo “esbelto” y para esto todas las semanas se pesan o se sacan fotos para poder ver el cambio. Las principales motivaciones dentro de la seguridad son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cumplimiento de leyes, normas, etc.&lt;/li&gt;
&lt;li&gt;Obtencion de Informacion para la gestión de seguridad&lt;/li&gt;
&lt;li&gt;Identificación de &lt;strong&gt;riesgos de negocio&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conocimiento-sobre-el-objetivo"&gt;
Conocimiento sobre el Objetivo
&lt;a href="#conocimiento-sobre-el-objetivo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El conocimiento sobre el objetivo es realmente importante y podemos dividirlo en 3 tipos: Black Box (Sin conocimiento), Grey Box (Algunos conocimientos) y White Box (Con un conocimiento completo). Por ejemplo, un White Box es analizar el código fuente (Dado que al tenerlo tenemos todo el conocimiento) Y un ejemplo de Black Box es buscar vulnerabilidades de una empresa X que no conocemos de nada.&lt;/p&gt;
&lt;p&gt;También Influye el conocimiento de la empresa que nos piden evaluar, dado que si la empresa sabe que vamos a evaluarla podría duplicar o triplicar la gente esperando un ataque lo cual no daría valores normales. Esto también podemos dividirlo en 3 tipos Double blind (Cuando no son notificados de lo que va a ocurrir), Blind (Cuando saben la fecha pero no que va a pasar o viseversa) o Transparent (Cuando saben que va a pasar y cuando)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ámbito-de-aplicación-de-las-evaluaciones"&gt;
Ámbito de aplicación de las evaluaciones.
&lt;a href="#%c3%a1mbito-de-aplicaci%c3%b3n-de-las-evaluaciones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En esta oportunidad vamos a ver en que ámbitos podemos aplicarlo (Esto puede ir variando pero tenemos que tener una estructura para poder organizarlo mejor)&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="sistemas-y-redes"&gt;
Sistemas y redes
&lt;a href="#sistemas-y-redes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Dentro de este ámbito podemos analizar diferentes cosas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Análisis de vulnerabilidades:&lt;/strong&gt; En este caso solo identificamos vulnerabilidades “conocidas” en un software conocido. Suele ser fácil de automatizar. Y existen diferentes áreas: Sobre SO, Apps o configuraciones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Penetration Test:&lt;/strong&gt; También conocido como Ethical Hacking (Aunque pueden llegar a encontrarse diferencias a terminos practicos es similar) A diferencia del análisis acá estamos induciendo la penetración para lograr el objetivo incluyendo diferentes formas de ataques. Esta área no es netamente técnica, aquí podemos analizar vulnerabilidades que se generan por las personas, por ejemplo, el mal uso de datos. Para llevarse a cabo requiere el uso de una metodología, por lo cual se lleva a cabo por Pentesters o Ethical Hackers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auditoría de Seguridad:&lt;/strong&gt; La auditoría se diferencia principalmente porque no es ofensiva como las otras. Estas auditorías pueden referirse también a procesos, sistemas o productos. Y suele estar basado en guías, checklist, entre otras cosas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis de Infraestructura:&lt;/strong&gt; Estos análisis son exclusivos de Redes: protocolos, dispositivos y servicios. Suele hacerse sobre vulnerabilidades conocidas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test de plataformas específicas:&lt;/strong&gt; Estos análisis suelen ser de plataformas que utilizan las empresas donde los errores suelen estar en configuraciones, niveles de permisos, errores de implementación entre muchos otros temas. Esta área abarcar estos sistemas tan grandes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="software"&gt;
Software
&lt;a href="#software" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Dentro de Software vamos a mostrar los 3 tipos que vamos a discriminar en esta oportunidad:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Software Testing tradicional:&lt;/strong&gt; En este caso lo que se verifican requerimientos funcionales con “casos de uso” verificando que el software cumpla la función para la que fue desarrollado (Sólo verifica eso, no verifica que no tenga errores) Estos requerimientos no suelen estar muy relacionados con la seguridad y si lo hacen es en pequeñas cosas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security Testing:&lt;/strong&gt; Busca determinar el nivel de seguridad de un Software desde su exterior (Lo que definimos como &lt;strong&gt;Back Box&lt;/strong&gt;) A diferencia del tradicional este intenta evitar errores o inseguridades. En este caso a diferencia de los casos de uso se construyen patrones de ataque. Puede incluirse ingeniería inversa y/o técnicas específicas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auditoría de Código fuente:&lt;/strong&gt; Este es un caso de &lt;strong&gt;White Box&lt;/strong&gt; donde analizamos el código estático en busca de errores o fallas. Esto puede hacerse manualmente aunque hoy en día es casi imposible analizar miles líneas de código. Pero esto también puede hacerse buscando cosas más específicas como funciones peligrosas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="procesos"&gt;
Procesos
&lt;a href="#procesos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Si bien en procesos podríamos explicarlo como una sola cosa está bueno generar divisiones para poder realizar un mejor análisis y particionarlo mejor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Análisis funcional específico:&lt;/strong&gt; Este análisis consta en desgranar lo mayor posible un procedimiento como para poder ver cada parte y para comprender dónde se puede generar el error. No suele estar basado en aspectos técnicos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis diferencia:&lt;/strong&gt; Este análisis, también conocido como Gap Analysis, es mucho más estructurado. Se establece un nivel que debe ser cumplido y se compara con el estado actual. Suele realizarse con reuniones con los responsables de los procesos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="entorno-físico"&gt;
Entorno físico
&lt;a href="#entorno-f%c3%adsico" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;En este caso se buscan determinar vulnerabilidades físicas y/o ambientales. Para esto se requiere un equipo especializado en el tema que puede ser interno, o externo. Si bien esto puede estar encarado como un Pentest no debe confundirse con tal. En detalle esto evalúa cerraduras, puertas, ventanas, equipamentos electrónicos, infraestructura, cableados, etc.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="red-team-test"&gt;
Red Team test
&lt;a href="#red-team-test" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Este tipo de análisis es muy similar al pentest pero es muchisimo mas realista dado que nosotros ejecutamos un “hackeo” completamente realista donde el cliente desconoce por completo estos ataques. Estos equipos suelen ser multidisciplinarios. Si bien son guiados por equipos internos puede contener colaboradores externos de ser requerido.&lt;/p&gt;
&lt;p&gt;Puede existir Blue team un equipo que se dedica a defender, con una serie de reglas de juegos que permite dar más dinamismo.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>¿Que es la seguridad informática?</title><link>https://patojad.com.ar/post/2020/09/que-es-la-seguridad-inform%C3%A1tica/</link><pubDate>Thu, 10 Sep 2020 10:47:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/que-es-la-seguridad-inform%C3%A1tica/</guid><description>&lt;p&gt;Muchas veces hablamos de seguridad informática, pero a la hora de definirlo es realmente difícil comprender todo lo que abarca. La seguridad informática es un grupo extremadamente grande de conceptos, conocimiento, etc.&lt;/p&gt;
&lt;p&gt;Sin embargo todavía no me metí en este mundo a fondo como para tener un conocimiento apto para poder explicarlo pero conozco a una persona que tiene el conocimiento necesario como para poder explicarnos a todos…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="introducción"&gt;
Introducción
&lt;a href="#introducci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Federico Pacheco es un profesor que tuve el agrado de conocer digitalmente en este contexto cuarentena, no es solo un gran profesor de varias universidades. Es uno de esos profesores que lleva todo a otro nivel&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/EH9ioUVcwyQ?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;En este primer video vamos a apreciar una introducción y/o pantallazo a lo que es la seguridad informática…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="principios-de-la-seguridad-de-la-información"&gt;
Principios de la Seguridad de la Información
&lt;a href="#principios-de-la-seguridad-de-la-informaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Adicionalmente a esta introducción Fede nos deja otro excelente video donde podemos profundizar un poco más los principios de la seguridad informática.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/s_wOgabafmk?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="agradecimientos"&gt;
Agradecimientos
&lt;a href="#agradecimientos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Desde ya quiero agradecer a Fede por permitirme usar su contenido para poder explicar esto… Y si te gusta este estilo de videos, y sobre todo te gustan los libros te recomiendo pasarte por el canal de Fede y mirar esos “resumenes” de libros impecables que realiza…&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/c/VisualAnanda" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Ir al Canal de Fede
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>¿Qué son exactamente los comandos?</title><link>https://patojad.com.ar/post/2020/09/qu%C3%A9-son-exactamente-los-comandos/</link><pubDate>Wed, 09 Sep 2020 10:33:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/qu%C3%A9-son-exactamente-los-comandos/</guid><description>&lt;p&gt;Un comando puede ser una de estas cuatro cosas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Un programa ejecutable&lt;/strong&gt; como todos esos archivos que vimos en /usr/bin. Dentro de esta categoría, los programas pueden ser binarios compilados como programas escritos en C y C++, o programas escritos en lenguajes de script como el shell, perl, python, ruby, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un comando contenido en el propio shell&lt;/strong&gt;. bash soporta gran número de comandos internos llamados shell builtins. El comando cd, por ejemplo, es un shell builtin. 3.&lt;strong&gt;Una función del shell&lt;/strong&gt;. Estos son pequeños scripts de shell incorporados en el entorno. Veremos cómo configurar el entorno y cómo escribir funciones del shell en próximos capítulos, pero por ahora, sólo ten en cuenta que existen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un alias&lt;/strong&gt;. Comando que podemos definir nosotros mismos, construidos a partir de otros comandos.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="identificando-comandos"&gt;
Identificando comandos
&lt;a href="#identificando-comandos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A menudo es útil saber exactamente cual de los cuatro tipos de comandos estamos usando y Linux proporciona un par de formas de averiguarlo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="type--muestra-de-qué-tipo-es-un-comando"&gt;
type – Muestra de qué tipo es un comando
&lt;a href="#type--muestra-de-qu%c3%a9-tipo-es-un-comando" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando type es un shell builtin que muestra el tipo de comando que el shell ejecutará, indicándole el nombre de un comando en particular. Funciona así:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;type&lt;/span&gt; comando&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;donde &amp;ldquo;comando&amp;rdquo; es el nombre del comando que quieres examinar. Aquí tienes algunos ejemplos:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;type&lt;/span&gt; is a shell &lt;span class="nb"&gt;builtin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;type&lt;/span&gt; ls
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls is aliased to &lt;span class="s1"&gt;&amp;#39;ls --color=tty&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;type&lt;/span&gt; cp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp is /bin/cp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Aquí vemos los resultados para tres comandos diferentes. Fíjate en el de ls (realizado sobre un sistema Fedora) y en cómo el comando ls es realmente un alias del comando ls con la opción “&amp;ndash;color=tty” añadida. ¡Ahora sabemos porqué la salida de ls se muestra en color!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="which--muestra-la-localización-de-un-ejecutable"&gt;
which – Muestra la localización de un ejecutable
&lt;a href="#which--muestra-la-localizaci%c3%b3n-de-un-ejecutable" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A veces hay más de una versión de un programa ejecutable instalada en un sistema. Aunque no es muy usual en los sistemas de escritorio, sí es más frecuente en grandes servidores. Para determinar la localización exacta de un ejecutable dado tenemos el comando which:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;which ls
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/bin/ls&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;which sólo funciona con programas ejecutables, ni con builtins ni con alias que son sustitutos de los verdaderos programas ejecutables. Cuando intentamos usar which en un shell builtin, por ejemplo, cd, no tendremos respuesta o nos dará un mensaje de error:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;which &lt;span class="nb"&gt;cd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/usr/bin/which: no &lt;span class="nb"&gt;cd&lt;/span&gt; in &lt;span class="o"&gt;(&lt;/span&gt;/opt/jre1.6.0_03/bin:/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/opt/jre1.6.0_03/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/home/me/bin&lt;span class="o"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="obteniendo-la-documentación-de-un-comando"&gt;
Obteniendo la documentación de un comando
&lt;a href="#obteniendo-la-documentaci%c3%b3n-de-un-comando" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ahora que sabemos qué es un comando, podemos buscar la documentación disponible para cada tipo de comando. Pero esto lo veremos mas adelante&amp;hellip;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Flatpak ¿Bueno o Malo?</title><link>https://patojad.com.ar/post/2020/09/flatpak-bueno-o-malo/</link><pubDate>Mon, 07 Sep 2020 11:14:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/flatpak-bueno-o-malo/</guid><description>&lt;p&gt;Vamos a hablar de Flatpak, un tipo de paquetería que puede ser amado y odiado a la vez… Antes de iniciar a escribir quiero comentar que esto es mi punto de vista y sus justificaciones, si bien trato de no ser partidario se nota fuertemente mi inclinación.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-flatpak"&gt;
¿Qué es Flatpak?
&lt;a href="#qu%c3%a9-es-flatpak" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para arrancar tendríamos que entender que es flatpak y si bien podríamos usar muchas definiciones técnicas, no es la idea, hoy vamos a discutir sobre la mesa siendo racionales, los tecnicismos los dejamos para una segunda etapa (que probablemente nunca haga porque voy a olvidarlo).&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://tecnonucleous.com/content/images/2018/04/flatpaklogo.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Flatpak es un tipo de paquetería que presenta como principal ventaja que es indiferente a la versión del sistema y/o librerías instaladas. Por lo cual si lo vemos así entendemos que es la solución a todos los problemas de compatibilidad que tenemos y esto es así, pero no tan así…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-lo-hace"&gt;
¿Cómo lo hace?
&lt;a href="#c%c3%b3mo-lo-hace" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente tiene un secreto, y esto es lo que lo hace tan bueno como malo, flatpack nos permite independizarnos de nuestro sistema porque virtualiza las aplicaciones, dandole asi todo lo que necesitan para ejecutar independientemente de la distro de linux que estemos ejecutando.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://blog.desdelinux.net/wp-content/uploads/2019/01/virtualbox-virtualizacion-importancia-blog-desdelinux-830x531.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esto es lo que nos permite evitar errores de compatibilidad y para eso es realmente bueno. Sin embargo, todos los extremos son malos y es un poco lo que quiero recalcar.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lo-bueno-cuando-lo-usamos"&gt;
Lo bueno ¿Cuando lo usamos?
&lt;a href="#lo-bueno-cuando-lo-usamos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Tal como dije Flatpak tiene cosas buenas pero también cosas malas y para aprovechar las cosas buenas basta con saber como usarlo bien y cuales son las costumbres que debemos tener en cuenta. Para eso listaremos primero las ventajas de flatpack:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instalaciones Rapidas&lt;/li&gt;
&lt;li&gt;Actualizaciones Rapidas&lt;/li&gt;
&lt;li&gt;Independencia del SO&lt;/li&gt;
&lt;li&gt;Aislamiento de programas&lt;/li&gt;
&lt;li&gt;Mejora compatibilidad&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://corporativocln.com/wp-content/uploads/sites/3/2017/02/lo-bueno-lo-malo-y-lo-feo-del-servicio-al-cliente-1236x865.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si nosotros mantenemos buenas prácticas vamos a poder sacarle el mejor de los provechos a flatpak, para eso basta con cumplir ciertos requisitos…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Flatpak es la ultima opcion:&lt;/strong&gt; La primer ley de flatpak es que es la última opción cuando queremos instalar algo (Duele lo que voy a decir pero seguro prefiero una ppa)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evitar el permiso de Administrador:&lt;/strong&gt; Es realmente importante entender que estas apps está corriendo sobre una virtualización y lo ideal es que siempre que pueda evitarse no darles permiso de administrador, aun así algunas apps lo requieren y está bien dárselo (Ahora que lo pienso esto aplica para todo linux, nunca ejecutes sudo o su si no es estrictamente necesario y sabes lo que va a pasar)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Da poco y espera poco:&lt;/strong&gt; Flatpak tiene relación amor odio con la filosofía unix (aunque todos sabemos que linux no es unix) por lo cual puede que el precio a pagar por esta “super compatibilidad” es que las apps no funcionen como lo esperas y esto muchas veces es así (faltan funciones, no abren las apps, si tildan… Pequeños precios a pagar)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://www.desmotivar.com/img/desmotivaciones/146365_hay-que-saber-cuando-parar.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si seguimos y entendemos esto que recién hablamos probablemente puedas entender un poco más sobre flatpak y de esa forma usarlo para sacarle provecho sin achanchar tu equipo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lo-malo-qué-pasa-si-lo-uso-indiscriminadamente"&gt;
Lo malo ¿Qué pasa si lo uso indiscriminadamente?
&lt;a href="#lo-malo-qu%c3%a9-pasa-si-lo-uso-indiscriminadamente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente todo lo bueno tiene su punto malo y como tal deberíamos remarcar también este. Paso a listar las cosas que desde mi punto de vista son “malas”&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Virtualizar:&lt;/strong&gt; Nunca en la vida virtualices algo a no ser que sea estrictamente necesario (cosa que JAVA nunca entendió y por eso es una mierda toda lenta). Si bien para flatpack es necesario virtualizar para el usuario no, por eso es siempre el último recurso cuando no existe otra forma de instalar la app que debemos recurrir a esta forma dado que la virtualización es menos performante y consume más recursos…&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;¿Integración?¿Qué es eso?:&lt;/strong&gt; Una de las cosas que no entiende flatpack es de integración, de momento no es capaz de tomar el theme que tengas seleccionado ni demás generando un disturbio visual patético. Esto no es realmente importante pero sin embargo a muchas personas les molesta que le mouse se ponga “feo” al entrar en una app.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Muchos recursos:&lt;/strong&gt; Entiendo que muchos en pleno 2020 disponen de equipos potentes y pueden derrochar recursos a como dé lugar (se que te lo estás imaginando asi que ahi voy) como Julio que se instala Gnome para llenar su ram… Sin embargo siempre fui partidario de usar lo que es necesario para lo que es necesario… Incluso más allá del chiste de Gnome y Julio (Que ya que te nombre 2 veces te mando un abrazo) Gnome consume el ram que necesita y por más que nos parezca bien o mal es así. Sin embargo los flatpak no solo consumen lo que necesitan, consumen lo que requiere virtualizar, y es ahí donde un equipo lleno de apps en flatpak puede ser patético. Lo ideal es hacer ese “sacrificio” cuando sea realmente necesario y así mantendremos un equilibrio en funcionalidad y consumo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-opina-pato"&gt;
¿Qué opina Pato?
&lt;a href="#qu%c3%a9-opina-pato" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ya estoy escribiendo en tercera persona, asi que imaginate cuanto me llevo armar esto para que no se note mi lado de la brecha… (Ya que hablo en tercera persona le mando un abrazo a Pedro Crespo, que sigue enojado conmigo pero aun asi le deseo lo mejor)&lt;/p&gt;
&lt;p&gt;En lo personal suelo evitar el uso de flatpak, es más suelo desinstalarlo, sin embargo creo que es una herramienta muy útil para aquellos que tienen problemas con alguna aplicación que requiere. En lo personal recomendaría su uso responsable y obviamente que lo eviten de ser posible…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Y vos&amp;hellip;? ¿Qué pensas? No te olvides de dejarnos en los comentarios tu opinión sobre flatpack, los pros y contra de esta paquetería…&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Blurredfox un tema moderno para Firefox</title><link>https://patojad.com.ar/post/2020/09/blurredfox-un-tema-moderno-para-firefox/</link><pubDate>Fri, 04 Sep 2020 09:33:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/blurredfox-un-tema-moderno-para-firefox/</guid><description>&lt;p&gt;En esta oportunidad quiero compartir un theme para nuestro firefox que nos permitirá darle un mejor estilo para lucirlo en nuestros viernes de escritorios.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/NF7ZXbyv/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="requisitos"&gt;
Requisitos
&lt;a href="#requisitos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;El último Firefox&lt;/li&gt;
&lt;li&gt;Compositor con soporte para desenfoque &lt;em&gt;(opcional)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;En caso de que el compositor no soporte blur, nosotros veremos el theme totalmente transparente, en este caso podemos elegir colores&amp;hellip;&lt;/em&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="notas"&gt;
Notas
&lt;a href="#notas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En este caso el desarrollador nos deja unas notas recomendando el uso de awesome y “the glorius dotfiles” para unificar todo esto&amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;100% trabajando en linux.&lt;/li&gt;
&lt;li&gt;No probado en macOS.&lt;/li&gt;
&lt;li&gt;La transparencia está rota en Windows 10 (tiene fallas gráficas como parpadeo). El esquema de color sólido puede funcionar.&lt;/li&gt;
&lt;li&gt;No, la barra de título vertical no está incluida.&lt;/li&gt;
&lt;li&gt;Cambie a Linux, luego use AwesomeWM para lograr esta gloria.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="notas-antes-de-ejecutar-el-script"&gt;
Notas antes de ejecutar el script:
&lt;a href="#notas-antes-de-ejecutar-el-script" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Si tiene varias compilaciones de Firefox, el script aún se ejecutará sin problemas. Solo asegúrate de pasar tu compilación de Firefox de destino.&lt;/li&gt;
&lt;li&gt;Si usted o su compilación de Firefox tienen un perfil múltiple, el script devolverá un error. ¡Asegúrate de tener solo uno!&lt;/li&gt;
&lt;li&gt;Es recomendable comprobar primero el script antes de ejecutarlo.&lt;/li&gt;
&lt;li&gt;Necesitas bash para ejecutarlo.&lt;/li&gt;
&lt;li&gt;Si tiene una carpeta de Chrome existente, el script hará una copia de seguridad en el directorio de su perfil.&lt;/li&gt;
&lt;li&gt;El script moverá un archivo llamado user.js que contiene todas las preferencias necesarias para que funcione blurfox. Se hará una copia de seguridad del existente.&lt;/li&gt;
&lt;li&gt;Si el script de instalación no funciona, no dude en enviar un issue o Pull request al git del proyecto.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalacion"&gt;
Instalacion
&lt;a href="#instalacion" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En esta oportunidad voy a hablar solo de la instalación en GNU/Linux sin embargo puedes encontrar la instalación en otros sistemas operativos en su propio git.&lt;/p&gt;
&lt;p&gt;Ejecute el siguiente script. Si está utilizando una compilación diferente como nightly, beta, etc., asegúrese de reemplazar el &amp;rsquo;estable&amp;rsquo; con la compilación de Firefox que está usando. Si se deja vacío, se establecerá de forma predeterminada en estable.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Available parameters:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# stable - Firefox Stable Build&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# dev - Firefox Developer Edition&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# beta - Firefox Beta&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# nightly - Firefox Nightly&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# esr - Firefox Extended Support Release&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Examples:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Stable build&amp;#39;s profile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://raw.githubusercontent.com/manilarome/blurredfox/script/install.sh &lt;span class="p"&gt;|&lt;/span&gt; bash -s -- stable
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Nightly build&amp;#39;s profile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://raw.githubusercontent.com/manilarome/blurredfox/script/install.sh &lt;span class="p"&gt;|&lt;/span&gt; bash -s -- nightly&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Después del mensaje de confirmación de que el tema se instaló correctamente, abra Firefox. Cambie el esquema de colores en:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Open Menu -&amp;gt; Customize -&amp;gt; Change colorscheme&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;En caso de que esto no funcione no te des por vencido puedes intentarlo manualmente col guia realizada por el propio desarrollador y esto lo puedes ver en su git.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/manilarome/blurredfox" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Repositorio y Guia
&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Manipulando archivos y directorios</title><link>https://patojad.com.ar/post/2020/09/manipulando-archivos-y-directorios/</link><pubDate>Thu, 03 Sep 2020 10:12:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/manipulando-archivos-y-directorios/</guid><description>&lt;p&gt;Seguimos trabajando con la terminal, vamos despacio pero avanzamos firme, en esta oportunidad vamos a aumentar los comandos que vamos a ir usando en el dia a dia.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comodines"&gt;
Comodines
&lt;a href="#comodines" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Antes de empezar a usar nuestros comandos, necesitamos hablar sobre una característica del shell que hace a estos comandos muy potentes. Como el shell utiliza mucho los nombres de archivo, ofrece caracteres especiales para ayudarnos a especificar rápidamente grupos de nombres de archivo. Estos caracteres especiales se llaman comodines (wildcards). Utilizar comodines (también conocido como globbing) te permite seleccionar nombres de archivo basados en patrones de caracteres. La siguiente tabla lista los comodines y lo que seleccionan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;*&lt;/strong&gt; Cualquier carácter&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;?&lt;/strong&gt; Cualquier carácter individual&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[caracteres]&lt;/strong&gt; Cualquier carácter que sea miembro del grupo caracteres&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[!caracteres]&lt;/strong&gt; Cualquier carácter que no sea miembro del grupo caracteres&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[[:clase:]]&lt;/strong&gt; Cualquier carácter que sea miembro de la clase especificada&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La lista las clases de caracteres más comúnmente usadas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[:alnum:]&lt;/strong&gt; Cualquier carácter alfanumérico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[:alpha:]&lt;/strong&gt; Cualquier carácter alfabético&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[:digit:]&lt;/strong&gt; Cualquier dígito numérico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[:lower:]&lt;/strong&gt; Cualquier letra minúscula&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[:upper:]&lt;/strong&gt; Cualquier letra mayúscula&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Utilizar comodines posibilita construir criterios de selección muy sofisticados para los nombres de archivos. Aquí tienes algunos ejemplos de patrones y qué indican:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;*&lt;/strong&gt; Todos los archivos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;g*&lt;/strong&gt; Todos los archivos que empiezan por &amp;ldquo;g&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;b*.txt&lt;/strong&gt; Todos los archivos que empiecen por &amp;ldquo;b&amp;rdquo; seguido de cualquier carácter y terminados en &amp;ldquo;.txt&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data???&lt;/strong&gt; Todos los archivos que empiezan por &amp;ldquo;Data&amp;rdquo; seguido de, exactamente, tres caracteres&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[abc]*&lt;/strong&gt; Todos los archivos que empiezan por &amp;ldquo;a&amp;rdquo;, &amp;ldquo;b&amp;rdquo; o &amp;ldquo;c&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BACKUP.[0-9][0-9][0-9]&lt;/strong&gt; Todos los archivos que empiezan por &amp;ldquo;BACKUP.&amp;rdquo; seguido de, exactamente, tres números&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[[:upper:]]*&lt;/strong&gt; Todos los archivos que empiezan por una letra mayúscula&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[![:digit:]]*&lt;/strong&gt; Todos los archivos que no empiezan por un número&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;*[[:lower:]123]&lt;/strong&gt; Todos los archivos que terminan por una letra minúscula o por los números &amp;ldquo;1&amp;rdquo;, &amp;ldquo;2&amp;rdquo; o &amp;ldquo;3&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los comodines pueden usarse con cualquier comando que acepte nombres de archivo como argumento, pero hablaremos más sobre ello más adelante.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="rangos-de-caracteres"&gt;
Rangos de caracteres
&lt;a href="#rangos-de-caracteres" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si vienes de otros entornos tipo Unix o has estado leyendo otros libros sobre el asunto, puede que hayas encontrado las notaciones de rango de caracteres &lt;strong&gt;[A -Z]&lt;/strong&gt; o &lt;strong&gt;[a &amp;ndash; z]&lt;/strong&gt;. Son notaciones tradicionales de Unix y funcionaban en las versiones antiguas de Linux también. Pueden funcionar todavía, pero tienes que ser muy cuidadoso con ellas porque no producirán los resultados esperados a menos que estén adecuadamente configuradas. Por ahora, deberías evitar utilizarlas y usar las clases de caracteres en su lugar.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mkdir--crear-directorios"&gt;
mkdir &amp;ndash; Crear directorios
&lt;a href="#mkdir--crear-directorios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando mkdir se utiliza para crear directorios. Funciona así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir directorio...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Una nota sobre la notación:&lt;/strong&gt; Cuando tres puntos siguen a un argumento en la descripción de un comando (como el de arriba), significa que el argumento puede ser repetido, por lo tanto:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir dir1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;crearía un único directorio llamado &amp;ldquo;dir1&amp;rdquo;, mientras&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir dir1 dir2 dir3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;crearía tres directorios llamados &amp;ldquo;dir1&amp;rdquo;, &amp;ldquo;dir2&amp;rdquo; y &amp;ldquo;dir3&amp;rdquo;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cp--copiar-archivos-y-directorios"&gt;
cp &amp;ndash; Copiar archivos y directorios
&lt;a href="#cp--copiar-archivos-y-directorios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando cp copia archivos o directorios. Puede usarse de dos formas diferentes:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp item1 item2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para copiar el archivo o directorio &amp;ldquo;item1&amp;rdquo; al archivo o directorio &amp;ldquo;item2&amp;rdquo; y:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp item... directorio
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;para copiar múltiples elementos (tanto archivos como directorios) a un directorio.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="opciones-útiles-y-ejemplos"&gt;
Opciones útiles y ejemplos
&lt;a href="#opciones-%c3%batiles-y-ejemplos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Aquí tenemos algunas de las opciones más usadas (la opción corta y la opción larga equivalente) para cp:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;-a, &amp;ndash;archive&lt;/strong&gt; Copia los archivos y directorios y todos sus atributos, incluyendo propietarios y permisos. Normalmente, las copias toman los atributos por defecto del usuario que realiza la copia.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;-i, &amp;ndash;interactive&lt;/strong&gt; Antes de sobrescribir un archivo existente, pide al usuario confirmación. Si esta opción no es especificada, cp sobrescribirá silenciosamente los archivos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;-r, &amp;ndash;recursive&lt;/strong&gt; Copia recursivamente los directorios y su contenido. Esta opción (o la opción -a) se requiere cuando se copian directorios.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;-u, &amp;ndash;update&lt;/strong&gt; Cuando copiamos archivos de un directorio a otro, sólo copia archivos que, o no existan, o sean más nuevos que los archivos correspondientes existentes en el directorio de destino.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;-v, &amp;ndash;verbose&lt;/strong&gt; Muestra mensajes informativos a medida que se realiza la copia.&lt;/p&gt;
&lt;p&gt;cp archivo1 archivo2&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Copia el archivo1 al archivo2. Si el archivo2 existe, se sobrescribe con el contenido del archivo1. Si el archivo2 no existe, se crea.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp -i archivo1 archivo2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Igual que el anterior, salvo que si el archivo2 existe, el usuario es preguntado antes de que sea sobrescrito.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp archivo1 archivo2 directorio1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copia el archivo1 y el archivo2 en el directorio1. El directorio1 debe existir.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp directorio1/* directorio2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Usando un comodín, todos los archivos en directorio1 se copian a directorio2. directorio2 debe existir.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp -r directorio1 directorio2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copia el contenido del directorio1 al directorio2. Si el directorio2 no existe, se crea y, después de la copia, contendrá los mismos elementos que el directorio1.
Si el directorio2 existe, entonces el directorio1 (y su contenido) se copiará dentro de directorio2.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mv--mover-y-renombrar-archivos"&gt;
mv &amp;ndash; Mover y renombrar archivos
&lt;a href="#mv--mover-y-renombrar-archivos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando mv tanto mueve como renombra archivos, dependiendo de cómo se use. En ambos casos, el nombre de archivo original no existirá tras la operación. mv se usa de forma muy parecida a cp:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mv item1 item2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;para mover o renombrar el archivo o directorio &amp;ldquo;item1&amp;rdquo; a &amp;ldquo;item2&amp;rdquo; o:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mv item... directorio
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;para mover uno o más elementos de un directorio a otro.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="opciones-útiles-y-ejemplos-1"&gt;
Opciones útiles y ejemplos
&lt;a href="#opciones-%c3%batiles-y-ejemplos-1" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;mv comparte muchas de las mismas opciones que cp:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;-i, &amp;ndash;interactive&lt;/strong&gt; Antes de sobrescribir un archivo existente, pide confirmación al usuario. Si esta opción no está especificada, mv sobrescribirá silenciosamente los archivos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;-u, &amp;ndash;update&lt;/strong&gt; Cuando movemos archivos de un directorio a otro, sólo mueve archivos que, o no existen, o son más nuevos que los archivos correspondientes existentes en el directorio de destino.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;-v, &amp;ndash;verbose&lt;/strong&gt; Muestra mensajes informativos a medida que se realiza el movimiento.&lt;/p&gt;
&lt;p&gt;mv archivo1 archivo2&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mueve el archivo1 al archivo2. Si el archivo2 existe, se sobrescribe con el contenido de archivo1. Si archivo2 no existe, se crea. En ambos casos, archivo1 deja de existir.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mv -i archivo1 archivo2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Igual que el anterior, excepto que si el archivo2 existe, el usuario es preguntado antes de que sea sobrescrito.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mv archivo1 archivo2 directorio1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mueve archivo1 y archivo2 al directorio1. directorio1 tiene que existir previamente.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mv directorio1 directorio2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si el directorio2 no existe, crea el directorio2 y mueve el contenido de directorio1 dentro de directorio2 y borra el directorio1.
Si directorio2 existe, mueve directorio1 (y su contenido) dentro del directorio2.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="rm--eliminar-archivos-y-directorios"&gt;
rm &amp;ndash; Eliminar archivos y directorios
&lt;a href="#rm--eliminar-archivos-y-directorios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando rm se utiliza para eliminar (borrar) archivos y directorios:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rm elemento...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;donde &amp;ldquo;elemento&amp;rdquo; es uno o más archivos o directorios.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="opciones-útiles-y-ejemplos-2"&gt;
Opciones útiles y ejemplos
&lt;a href="#opciones-%c3%batiles-y-ejemplos-2" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Aquí tienes algunas de las opciones más comunes de rm:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;-i, &amp;ndash;interactive&lt;/strong&gt; Antes de borrar un archivo existente, pide la confirmación del usuario. Si esta opción no es especificada, rm borrará silenciosamente los archivos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;-r, &amp;ndash;recursive&lt;/strong&gt; Borra directorios recursivamente. Esto significa que si un directorio que estamos borrando contiene subirectorios, los borra también. Para borrar un directorio, esta opción debe ser especificada.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;-f, &amp;ndash;force&lt;/strong&gt; Ignora archivos no existentes y no pregunta. Esto prevalece sobre la opción &amp;mdash;interactive.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;-v, &amp;ndash;verbose&lt;/strong&gt; Muestra mensajes informativos a medida que se realiza el borrado.&lt;/p&gt;
&lt;p&gt;rm archivo1&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Borra el archivo1 silenciosamente&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rm -i archivo1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Igual que antes, excepto que pide confirmación al usuario antes de borrarlo.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rm -r archivo1 directorio1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Borra el archivo1 y el directorio1 y su contenido&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rm -rf archivo1 directorio1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Igual que antes, excepto que si archivo1 o directorio1 no existen, rm continuará silenciosamente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ten-cuidado-con-rm"&gt;
¡Ten cuidado con rm!
&lt;a href="#ten-cuidado-con-rm" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Los sistemas operativos tipo Unix, por ejemplo Linux, no tienen un comando para restaurar archivos. Una vez que borras algo con rm, se ha ido. Linux asume que eres listo y sabes lo que haces.&lt;/p&gt;
&lt;p&gt;Ten especial cuidado con los comodines. Piensa en este ejemplo clásico. Digamos que quieres borrar sólo los archivos &lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt; en un directorio. Para hacerlo, escribes:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rm *.html
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;lo cual es correcto, pero si accidentalmente dejas un espacio entre el &amp;ldquo;*&amp;rdquo; y el &amp;ldquo;.html&amp;rdquo; como aquí:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rm * .html
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;el comando rm borrará todos los archivos en el directorio y luego se quejará de que no hay ningún archivo llamado &amp;ldquo;.html&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Aquí tienes un práctico consejo&lt;/strong&gt;. Cada vez que uses comodines con rm (¡además de comprobar cuidadosamente tu escritura!), prueba el comodín primero con ls. Esto te permitirá ver los archivos que van a ser borrados. Entonces pulsa la tecla de la flecha hacia arriba para recuperar el comando y reemplaza el ls con rm.&lt;/p&gt;</description></item><item><title>¿Como jugar Among Us en Linux?</title><link>https://patojad.com.ar/post/2020/09/como-jugar-among-us-en-linux/</link><pubDate>Wed, 02 Sep 2020 08:40:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/como-jugar-among-us-en-linux/</guid><description>&lt;p&gt;En esta oportunidad vamos a comentar un poco sobre este hermoso que se está volviendo tan popular y vamos a comentar cómo podemos jugarlo en GNU/Linux con Proton. De más está decir que para este “tutorial” es requisito tenerlo comprado al juego que está aproximadamente $1 dólar.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sobre-el-juego"&gt;
Sobre el juego
&lt;a href="#sobre-el-juego" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Es de mala educación no contar un poco sobre este juego antes, pero tampoco quiero ponerme a parafrasear de antemano así que vamos a dejar toda la data a manos de nuestro amigo Steam&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/945360/extras/steam_AboutBanner.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Juega con 4-10 jugadores en línea o vía WiFi local mientras intentas preparar tu nave espacial para la partida, pero ten cuidado, ya que uno o más jugadores aleatorios entre la Tripulación son impostores empeñados en matar a todos.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/945360/extras/steam_AboutCrew.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gana completando tareas para preparar el barco o expulsando a todos los impostores.&lt;/li&gt;
&lt;li&gt;Reacciona rápidamente para deshacer los sabotajes del impostor.&lt;/li&gt;
&lt;li&gt;Consulta el mapa de administración y las cámaras de seguridad para controlar a otros compañeros de tripulación.&lt;/li&gt;
&lt;li&gt;Informe cualquier cadáver de inmediato para comenzar a discutir quién es el supuesto impostor.&lt;/li&gt;
&lt;li&gt;Llame a reuniones de emergencia para hablar sobre comportamientos sospechosos.&lt;/li&gt;
&lt;li&gt;Vote para expulsar a los supuestos impostores.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/945360/extras/steam_AboutImpostor.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mata a tus compañeros de tripulación y enmarca a los transeúntes.&lt;/li&gt;
&lt;li&gt;Finge ejecutar tareas para mezclarte con los compañeros de tripulación.&lt;/li&gt;
&lt;li&gt;Escóndete por las rejillas de ventilación para moverte rápidamente por el barco.&lt;/li&gt;
&lt;li&gt;Usa sabotajes para causar caos y dividir a la tripulación.&lt;/li&gt;
&lt;li&gt;Cierre las puertas para atrapar a las víctimas y matarlas en privado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/945360/extras/steam_AboutMultiPlay.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="características"&gt;
Características
&lt;a href="#caracter%c3%adsticas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Personalización: elige tu color y sombrero.&lt;/li&gt;
&lt;li&gt;Muchas opciones de juego: agrega más impostores, más tareas y mucho más.&lt;/li&gt;
&lt;li&gt;Encuentre rápidamente un juego en línea en la lista de anfitriones.&lt;/li&gt;
&lt;li&gt;Chat de texto en el juego.&lt;/li&gt;
&lt;li&gt;Integración rica en discordia.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="requisitos-del-sistema"&gt;
Requisitos del sistema
&lt;a href="#requisitos-del-sistema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Procesador: SSE2 instruction set support&lt;/li&gt;
&lt;li&gt;Memoria: 1 GB de RAM&lt;/li&gt;
&lt;li&gt;Almacenamiento: 250 MB de espacio disponible&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="text-center"&gt;
&lt;iframe
src='https://store.steampowered.com/widget/945360/'
width="646"
height="190"
title="Juego en Steam"
style="border-radius:20px;"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para poder jugarlo primero debemos tener habilitado la utilización de Proton con juegos no soportados oficialmente, para lo cual voy a dejar un paso a paso bastante simple para esto.&lt;/p&gt;
&lt;p&gt;Lo primero que tenemos que hacer es ir a &lt;code&gt;Steam -&amp;gt; Parametros&lt;/code&gt; (Suponiendo que esta en español steam). Una vez ahí veremos una ventana de configuración donde iremos a la sección &lt;code&gt;Steam Play&lt;/code&gt; y veremos algo así:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/jdySrDtB/Captura-de-pantalla-2020-09-01-22-44-31.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ahí seleccionaremos &lt;em&gt;Activar Steam Play para todos los demás títulos&lt;/em&gt; con la versión de Protón más reciente (En el desplegable) Nos pedirá reiniciar una vez que hagamos esto.&lt;/p&gt;
&lt;p&gt;Una vez que se haya reiniciado debemos buscar el juego en nuestra biblioteca y procedemos a instalarlo en unos pocos segundos (dado que el juego no pesa más de 250 mb)&lt;/p&gt;
&lt;p&gt;Una vez que lo descargamos, y &lt;strong&gt;ANTES&lt;/strong&gt; de iniciarlo debemos agregar algunos parámetros para que funcione correctamente, para eso vamos a darle click derecho al juego y seleccionamos &lt;strong&gt;Propiedades..&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/cH3V889S/Captura-de-pantalla-2020-09-01-22-51-14.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En esta sección debemos ir a &lt;strong&gt;Parámetros de lanzamiento&lt;/strong&gt; y agregar tal cual el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;PROTON_NO_ESYNC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="nv"&gt;PROTON_USE_WINED3D&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; %command%&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Dando como resultado una pantalla así:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/j2rB6dmJ/Captura-de-pantalla-2020-09-01-22-51-25.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Por último volvemos a reiniciar steam y ya podemos jugar tranquilamente, recomiendo traducir al español el juego si no tienes un gran dominio del inglés! Y si estas interesado en jugarlo no te olvides de meterte en nuestros grupos para que juguemos juntos!&lt;/p&gt;</description></item><item><title>Mejorar el Rendimiento de tu placa de Video</title><link>https://patojad.com.ar/post/2020/09/mejorar-el-rendimiento-de-tu-placa-de-video/</link><pubDate>Tue, 01 Sep 2020 09:42:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/09/mejorar-el-rendimiento-de-tu-placa-de-video/</guid><description>&lt;p&gt;No porque no tengamos la mejor placa de video del mundo significa que no podamos jugar, pero si debemos mejorar el rendimiento siempre al extremo… Si bien esto es algo que yo acostumbro hacer sin importar la placa de video que tenga en este caso voy a explicar el procedimiento que uso para poder aumentar la performance del equipo y de la placa de video…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="intel-hd"&gt;
Intel HD
&lt;a href="#intel-hd" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En mi caso soy un típico pobretón uso placas integradas… por lo cual en este caso vamos a ser específicos de Intel sin embargo esto es fácil de proyectar a cualquier otro tipo de placas basta con pensar un poco…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="limpiando-el-sistema"&gt;
Limpiando el sistema
&lt;a href="#limpiando-el-sistema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Lo primero que tenemos que hacer, que si bien no parece importante, se nota mucho la diferencia con solo borrar algunos paquetes que no están aprovechados. En este caso voy a usar synaptic para facilitar la tarea. Los que debemos eliminar son xserver-xorg-video-* que no correspondan a nuestra placa de video en este caso seria algo asi:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt remove xserver-xorg-video-radeon xserver-xorg-video-nouveau xserver-xorg-video-ati xserver-xorg-video-amdgpu xserver-xorg-video-all
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En este caso eliminará estos controladores mejorando la performance y el consumo de xserver (No uso wayland pero debería revisarse en dicho caso)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="eligiendo-opengl"&gt;
Eligiendo OpenGL
&lt;a href="#eligiendo-opengl" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien muchas placas soportan las últimas versiones de OpenGL muchas tienen como recomendadas la versión 3.0 o 3.2 (No quiere decir que otras no sirvan simplemente significa que no se hicieron homologaciones sobre estas placas o que no lo intentan porque son integradas) Sin embargo podemos comprobar en internet que el rendimiento mejora abismalmente desde la 3.3 o posteriores por lo cual, si lo soporta, podemos usarlo y ahora viene un trucaso para poder elegir la versión de OpenGL que queramos tener…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RECUERDA: Para esto debes tener instalado mesa&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;MESA_GL_VERSION_OVERRIDE=4.6 glxinfo | grep OpenGL
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En la parte donde dice 4.6 debemos poner la versión que queremos que ejecute, para saber cual es la máxima soportada solo nos basta con ejecutar:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;glxinfo| grep OpenGL
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y veremos una salida como esta donde debemos revisar la linea resaltada a continuación:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) UHD Graphics 620 (WHL GT2)
**OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.0.8**
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.6 (Compatibility Profile) Mesa 20.0.8
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.0.8
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y esa es línea muestra la versión más nueva disponible en nuestra placa de Video, podemos elegir cualquiera en el rango.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="usar-vulkan"&gt;
Usar Vulkan
&lt;a href="#usar-vulkan" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Bueno ahora debemos definir cuándo usar OpenGL y cuándo usar Vulcan… Lamentablemente no desarrollé todavía un algoritmo perfecto de como hacerlo, pero pude descifrar cuándo es conveniente probar…&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/P_I8an8jXuM?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Más allá de todo lo que pasa por detrás &lt;strong&gt;en general&lt;/strong&gt; vulkan va a bajar 2 o 3 fps pero esto no es lo importante, lo importante o la elección de usar vulkan es la estabilidad, si nosotros notamos que durante situaciones específicas (Una TeamFight o la aglomeración de personajes/npc) nos reduce los FPS drásticamente lo mejor es migrar a Vulkan que tiende a controlar más esto evitando las bajas de FPS y mejorando la performance bajo alta presión.&lt;/p&gt;</description></item><item><title>Una visita guiada</title><link>https://patojad.com.ar/post/2020/08/una-visita-guiada/</link><pubDate>Fri, 28 Aug 2020 09:15:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/08/una-visita-guiada/</guid><description>&lt;p&gt;La disposición del sistema de archivos en tu sistema Linux es casi como el que encontramos en otros sistemas tipo Unix. El diseño está especificado en un estándar publicado llamado &lt;strong&gt;Linux Filesystem Hierarchy Standard&lt;/strong&gt; (Jerarquía Estándar del sistema de archivos de Linux). No todas las distribuciones Linux cumplen exactamente el estándar, pero la mayoría se acercan bastante.&lt;/p&gt;
&lt;p&gt;A continuación, vamos a dar un paseo por el sistema de archivos para darnos cuenta qué hace que nuestro sistema Linux funcione. Esto nos dará la oportunidad de practicar nuestras habilidades de navegación. Una de las cosas que descubriremos es que muchos de los archivos interesantes están en texto plano legible. A medida que vayamos avanzando en nuestra visita guiada, prueba lo siguiente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cd en un directorio dado&lt;/li&gt;
&lt;li&gt;Lista los contenidos del directorio con ls -l&lt;/li&gt;
&lt;li&gt;Si ves un archivo interesante, determina su contenido con file&lt;/li&gt;
&lt;li&gt;Si parece que pudiera ser texto, trata de verlo con less&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A medida que avancemos, no tengas miedo de echar un vistazo. Los usuarios normales tienen terminantemente prohibido &lt;strong&gt;desordenar&lt;/strong&gt; cosas. &lt;em&gt;¡Es trabajo para los administradores de sistema!&lt;/em&gt; Si un comando protesta sobre algo, pasa a otra cosa. Pasa algo de tiempo echando un vistazo. El sistema es nuestro para explorarlo. Recuerda, en Linux, ¡no hay secretos!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;/&lt;/strong&gt; : El directorio raíz. Donde comienza todo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/bin&lt;/strong&gt; : Contiene binarios (programas) que tienen que estar presentes para que el sistema arranque y funcione.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/boot&lt;/strong&gt; : Contiene el kernel de Linux, la imagen del disco de RAM inicial (para controladores necesarios en el momento del arranque), y el cargador de arranque. Archivos interesantes:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;/boot/grub/grub.conf&lt;/strong&gt; o &lt;strong&gt;menu.lst&lt;/strong&gt;, que se utilizan para configurar el cargador de arranque.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/boot/vmlinuz&lt;/strong&gt;, el kernel de Linux.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/dev&lt;/strong&gt; : Este es un directorio especial que contiene los nodos de dispositivo. &lt;strong&gt;“Todo es un archivo”&lt;/strong&gt; también se aplica a los dispositivos. Aquí es donde el kernel mantiene una lista de todos los dispositivos que reconoce.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/etc&lt;/strong&gt; : El directorio /etc contiene todos los archivos de configuración del sistema. También contiene una colección de scripts de shell que inician cada uno de los servicios del sistema durante el arranque. Todo en este directorio debería ser texto legible.
Archivos interesantes: Como todo en /etc es interesante, os dejo algunos de mis favoritos de siempre:
_ &lt;strong&gt;/etc/crontab&lt;/strong&gt;, un archivo que define cuándo se ejecutarán los trabajos automáticos.
_ &lt;strong&gt;/etc/fstab&lt;/strong&gt;, una tabla de los dispositivos de almacenamiento y sus puntos de montaje asociados. * &lt;strong&gt;/etc/passwd&lt;/strong&gt;, una lista de las cuentas de usuario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/home&lt;/strong&gt; : En configuraciones normales, a cada usuario se le asigna un directorio en /home. Los usuarios normales sólo pueden escribir archivos en sus directorios home. Esta limitación protege el sistema de actividades erróneas de los usuarios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/lib&lt;/strong&gt; : Contiene archivos de bibliotecas compartidas utilizadas por los programas del núcleo del sistema. Son similares a las DLL de Windows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/lost+found&lt;/strong&gt; : Cada partición formateada o dispositivo que usa un sistema de archivos de Linux como ext3, tendrá este directorio. Se usa en caso de una recuperación parcial causada por un evento de corrupción del sistema de archivos. A menos que algo realmente malo ocurra a tu sistema, este directorio debería permanecer vacío.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/media&lt;/strong&gt; : En sistemas Linux modernos el directorio /media contendrá los puntos de montaje de los dispositivos extraíbles como unidades USB, CD-ROMs, etc. que se montan automáticamente al introducirlos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/mnt&lt;/strong&gt; : El sistemas Linux antiguos, el directorio /mnt contiene los puntos de montaje de los dispositivos extraíbles que han sido montados manualmente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/opt&lt;/strong&gt; : El directorio /opt se usa para instalar software “opcional”. Principalmente se usa para contener productos de software comercial que podrían ser instalados en tu sistema.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/proc&lt;/strong&gt; : El directorio /proc es especial. No es un sistema de ficheros real en el sentido de archivos almacenados en tu disco duro. En su lugar, es un sistema de archivos virtual mantenido por el kernel de Linux. Los “archivos” que contienen son como mirillas dentro del propio núcleo. Los archivos son legibles y te darán una descripción de cómo el kernel ve el ordenador.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/root&lt;/strong&gt; : Es el directorio home para la cuenta root.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/sbin&lt;/strong&gt; : Este directorio contiene binarios del &amp;ldquo;sistema&amp;rdquo;. Son programas que realizan tareas vitales del sistema que generalmente están reservadas al superusuario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/tmp&lt;/strong&gt; : El directorio /tmp está destinado a almacenamiento de archivos temporales creados por varios programas. Algunas configuraciones hacen que este directorio sea vaciado cada vez que el sistema se reinicia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/usr&lt;/strong&gt; : El árbol del directorio /usr es casi el más grande en un sistema Linux. Contiene todos los programas y archivos de soporte utilizados por los usuarios normales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/usr/bin&lt;/strong&gt; : Contiene los programas ejecutables instalados en tu distribución Linux. No es raro que este directorio contenga miles de programas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/usr/lib&lt;/strong&gt; : Las bibliotecas compartidas para los programas en /usr/bin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/usr/local&lt;/strong&gt; : El árbol /usr/local es donde están instalados los programas que no están incluidos en tu distribución pero están destinados a un uso general. Los programas compilados a partir del código fuente normalmente se instalan en /usr/local/bin. En un sistema Linux recién instalado, este árbol existe, pero estará vacío hasta que el administrador del sistema coloque algo en él.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/usr/sbin&lt;/strong&gt; : Contiene más programas de administración del sistema.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/usr/share&lt;/strong&gt; : Contiene todos los datos compartidos utilizados por los programas en /usr/bin. Esto incluye cosas como archivos de configuración por defecto, iconos, fondos de pantalla, archivos de sonido, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/usr/share/doc&lt;/strong&gt; : La mayoría de los paquetes instalados en el sistema incluirán algún tipo de documentación. En /usr/share/doc, encontraremos archivos de documentación ordenados por paquetes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/var&lt;/strong&gt; : Con la excepción de /tmp y /home, los directorios que hemos visto hasta ahora permanecen relativamente estáticos, o sea, su contenido no cambia. El árbol del directorio /var es donde los datos, que es probable que cambien, son almacenados. Diferentes bases de datos, colas de impresión, correos de usuarios, etc. se encuentran aquí.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/var/log&lt;/strong&gt; : Contiene archivos de registro (log files) de varias actividades del sistema. Son muy importantes y deberían ser monitorizados de vez en cuando. El más útil es /var/log/messages. Ten en cuenta que, por razones de seguridad, en algunos sistemas, tienes que ser superusuario para ver los archivos de registro.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="enlaces-simbólicos"&gt;
Enlaces Simbólicos
&lt;a href="#enlaces-simb%c3%b3licos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A medida que inspeccionamos, es probable que veamos un listado de directorios con una entrada como esta:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;lrwxrwxrwx 1 root root 11 2007-08-11 07:34
libc.so.6 -&amp;gt; libc-2.6.so
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;¿Ves como la primera letra del listado es “l” y la entrada parece tener dos nombres de archivo? Esto es un tipo especial de archivo llamado enlace simbólico (también conocido como enlace blando o sym-link.) En la mayoría de los sistemas tipo Unix es posible tener un archivo referenciado por múltiples nombres. Aunque el sentido de esto no parezca obvio, es realmente una característica muy útil.&lt;/p&gt;
&lt;p&gt;Imagina este escenario: Un programa requiere el uso de algún tipo de recurso compartido contenido en un archivo llamado “foo”, pero “foo” tiene frecuentes cambios de versión. Sería bueno incluir el número de versión en el nombre del archivo para que el administrador u otras partes interesadas pudieran ver qué versión de “foo” está instalada. Esto presenta un problema. Si cambiamos el nombre del recurso compartido, tenemos que localizar cada programa que pudiera usarlo y cambiarlo para que busque el nuevo nombre del recurso cada vez que se instale una nueva versión del mismo. Esto no suena nada divertido.&lt;/p&gt;
&lt;p&gt;Aquí es donde los enlaces simbólicos nos salvan el día. Digamos que instalamos la versión 2.6 de “foo”, que tiene el nombre de archivo “foo-2.6” y entonces creamos un enlace simbólico llamado simplemente “foo” que apunta a “foo-2.6”. Esto significa que cuando un programa abre el archivo &amp;ldquo;foo&amp;rdquo;, en realidad está abriendo el archivo &amp;ldquo;foo-2.6&amp;rdquo;. Ahora todo el mundo está contento. Los programas que utilizan “foo” pueden encontrarlo y nosotros aún podemos ver qué versión está instalada en realidad. Cuando llegue la hora de actualizar a “foo-2.7”, sólo añadiremos el archivo a nuestro sistema, borraremos el enlace simbólico “foo” y crearemos uno nuevo que apunte a la nueva versión. No sólo soluciona el problema del cambio de versión, también nos permite guardar ambas versiones en nuestra máquina. Imagina que “foo-2.7” tiene un bug (¡Condenados programadores!) y necesitamos recuperar la versión antigua. De nuevo, sólo borramos el enlace simbólico que apunta a la nueva versión y creamos un nuevo enlace simbólico apuntando a la versión antigua.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="enlaces-duros"&gt;
Enlaces duros
&lt;a href="#enlaces-duros" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como estamos en el tema de los enlaces, tenemos que mencionar que hay un segundo tipo de enlace llamado enlace duro. Los enlaces duros también permiten a los archivos tener múltiples nombres, pero lo hacen de una forma distinta. Hablaremos más sobre las diferencias entre enlaces simbólicos y duros más adelante.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="resumiendo"&gt;
Resumiendo
&lt;a href="#resumiendo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Terminada nuestra visita guiada, hemos aprendido un montón acerca de nuestro sistema. Hemos visto varios archivos y directorios y sus contenidos. Una cosa que deberías haber sacado de esto es lo abierto que es el sistema. En Linux hay muchos archivos importantes que están en texto plano y legible. Al contrario que muchos sistemas propietarios, Linux hace que todo pueda ser examinado y estudiado.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Linux Mobile recorriendo 2007</title><link>https://patojad.com.ar/post/2020/08/linux-mobile-recorriendo-2007/</link><pubDate>Thu, 27 Aug 2020 09:15:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/08/linux-mobile-recorriendo-2007/</guid><description>&lt;p&gt;Ya a estas alturas creo que no tiene sentido aclarar que me encanta recorrer blogs un tanto… &lt;em&gt;viejos&lt;/em&gt; para ver qué es lo que se hablaba de linux en aquel entonces… En esta oportunidad “encontré” algo que si bien no me sorprende me resulta muy interesante…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="linux-en-los-dispositivos-móviles"&gt;
Linux en los dispositivos móviles
&lt;a href="#linux-en-los-dispositivos-m%c3%b3viles" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://liliputing.com/wp-content/uploads/2020/07/mobian-700x453.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En la actualidad existen muchos proyectos para llevar Linux a dispositivos mobiles como &lt;strong&gt;Ubuntu Touch&lt;/strong&gt; y &lt;strong&gt;Mobian&lt;/strong&gt; proyectos que realiza un gran trabajo adaptando el SO para estos dispositivos&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cloud.addictivetips.com/wp-content/uploads/2017/09/touch.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="linux-en-celulares-2007"&gt;
Linux en celulares 2007
&lt;a href="#linux-en-celulares-2007" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En esta recorrida por los blogs de antaño encontré que en 2007 esto ya existía incluso ubuntu ya tenía su versión mobile…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La reconocida transnacional Intel ha programado para finales de la presente semana la presentación de su MID (Mobile Internet Device, por sus siglas en Inglés), que no es otra cosa que algo similar a una UMPC (Ultra Mobile PC ó PC Ultra Móvil), el cuál contendrá a nuestro bien querido sistema del Pingüino.&lt;/p&gt;
&lt;p&gt;Las buenas lenguas indican que el dispositivo se caracterizará por tener pantallas desde 4.5 hasta 6 pulgadas con resoluciones de 800x400 y 1024x600, además que también se dice que la empresa estaría pensando hacer de este un producto que llegue a las grandes masas, por lo que se preveé precios al alcance de cualquier usuario común y corriente.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://3.bp.blogspot.com/_LywfR9febDg/RiQ0JyRNJEI/AAAAAAAAABk/gyJjG5HJx5w/s320/intel.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Estas son las publicaciones que encontrábamos en esa época, o incluso los siguientes titulares…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Intel está desarrollando su propia versión de la mini-tableta, con una nueva plataforma de PC ultramóvil que se anunciará en el Intel Developer Forum de esta semana en Beijing. ¿La gran sorpresa? Está basado en Linux.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dentro de Wikipedia podemos encontrar la información más actual sobre esto que nos daba toda la info de soft que podríamos necesitar…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Los MID corren una versión embebida de &lt;strong&gt;Linux&lt;/strong&gt;. Están anunciados, de momento, &lt;strong&gt;MIDinux&lt;/strong&gt; de &lt;em&gt;RedFlag&lt;/em&gt;. La versión específica de &lt;strong&gt;Ubuntu 8.04&lt;/strong&gt; ya ha sido liberada por Canonical y se denomina Ubuntu Mobile Edition. Esta versión es cómoda para utilizar con los dedos (finger friendly), está adaptada para su uso con pantalla táctil y los dedos. Los motivos conocidos hasta la fecha para esta elección son los (pocos) recursos que consume Linux y el coste de su licencia. Sin embargo, con el procesador de doble núcleo, el dispositivo será capaz de correr &lt;strong&gt;Windows XP&lt;/strong&gt; y &lt;strong&gt;Windows Vista&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Y vos&amp;hellip; ¿Qué piensas de estos viajes al pasado?¿Usaste alguno de estos dispositivos?¿Cómo avanza linux en materia mobile? No te olvides de dejarnos tus comentarios&amp;hellip;&lt;/p&gt;</description></item><item><title>Herramienta gratuita contra WannaRen</title><link>https://patojad.com.ar/post/2020/08/herramienta-gratuita-contra-wannaren/</link><pubDate>Wed, 26 Aug 2020 10:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/08/herramienta-gratuita-contra-wannaren/</guid><description>&lt;p&gt;Los grupos operadores de ransomware no se detienen y cada día encuentran nuevas víctimas para obtener cientos de miles de dólares en ganancias ilícitas (hace no mucho fue Telecom Argentina una de las afectadas). Por suerte, la labor de las firmas de seguridad y hackers éticos también avanza de forma constante, por lo que siguen creándose nuevas herramientas para eliminar el cifrado sin pagar un solo centavo a los “hackers”, mencionan especialistas de un curso de “hacker”.&lt;/p&gt;
&lt;p&gt;Los investigadores de la firma de seguridad Bitdefender anunciaron el lanzamiento de una &lt;strong&gt;herramienta&lt;/strong&gt; que permite a las víctimas del ransomware &lt;strong&gt;WannaRen&lt;/strong&gt; restablecer el acceso a sus archivos cifrados completamente gratis. La herramienta ya está lista desde este 19 de agosto de este año.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-usar-la-herramienta"&gt;
¿Cómo usar la herramienta?
&lt;a href="#c%c3%b3mo-usar-la-herramienta" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Paso 1:&lt;/strong&gt; Descargar la herramienta desde el sitio oficial de Bitdefender. La herramienta puede ser almacenada en cualquier ubicación de su equipo de cómputo. No se requiere de conexión a Internet activa.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://labs.bitdefender.com/2020/08/wannaren-decryption-tool/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 2:&lt;/strong&gt; Ahora haga doble clic en el archivo ejecutable descargado de Bitdefender (almacenado como BDWannaRenDecryptor.exe). Deje que se ejecute haciendo clic en Sí en el indicador de UAC.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://noticiasseguridad.com/nsnews_u/2020/08/wannaren01.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 3:&lt;/strong&gt; Lea el Acuerdo de Licencia de Usuario Final y, en su caso, haga clic en “Acepto”. Pero si somos realistas nadie lee estos acuerdos y asi les va buscando como desencriptar sus máquinas…&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://noticiasseguridad.com/nsnews_u/2020/08/wannaren02.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 4:&lt;/strong&gt; Se le mostrará una ventana emergente solicitando algunos pares de archivos limpios y cifrados en una carpeta de prueba. Acorde a los especialistas del curso de hacker, en este punto solo será posible remover el cifrado de archivos más pequeños o del mismo tamaño que el par más grande de archivos de prueba.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://noticiasseguridad.com/nsnews_u/2020/08/wannaren03.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paso 5:&lt;/strong&gt; Seleccione la opción “Escanear todo el sistema” si desea que la herramienta busque todos los archivos cifrados. Los especialistas de Bitdefender recomiendan seleccionar también la opción de “Archivos de Respaldo”. Es vital que considere que la “carpeta de prueba” debe contener algunos pares de archivos cifrados/no cifrados.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://noticiasseguridad.com/nsnews_u/2020/08/wannaren04.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>14 Razones para utilizar Linux en lugar de Windows</title><link>https://patojad.com.ar/post/2020/08/14-razones-para-utilizar-linux-en-lugar-de-windows/</link><pubDate>Mon, 24 Aug 2020 10:44:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/08/14-razones-para-utilizar-linux-en-lugar-de-windows/</guid><description>&lt;p&gt;Saben que me gusta mucho recorrer otros blogs y más si son antiguos, me gusta saber que se hablaba de Linux en aquellos tiempos en los que no lo conocía y en esta oportunidad encontré una hermosa publicación del &lt;strong&gt;2008&lt;/strong&gt; que nos cuenta: &lt;strong&gt;14 Razones para utilizar Linux en lugar de Windows&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Como todos sabemos suelo comentar los puntos de vista para hacer un contraste con la diferencia temporal. Por lo cual, vamos a eso…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="publicación"&gt;
Publicación
&lt;a href="#publicaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Aquí les pongo un pequeño resumen que alguien hizo sobre el por qué utilizar Linux y no Windows:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;El autor nos ofrece comentarnos sus razones por lo cual no le gusta usar Windows y si utiliza Linux, en esta ocasión lo va dividir en 14 ítems que comentaremos uno a uno, así que vamos a ello&amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;01.- &lt;strong&gt;Funcionalidad:&lt;/strong&gt; comenzando podemos decir que Linux posee exactamente todas las funcionalidades que posee actualmente Windows Vista.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En el 2008 el exponente de Windows era el vista… Una de las peores versiones de Windows junto al 8 (desde mi punto de vista), y actualmente el exponente es windows 10 y la verdad es que no tiene grandes novedades en funcionalidades que no estén disponibles en GNU/Linux. Sin embargo al día de hoy el punto débil de GNU/Linux es el área de juegos debido a la ausencia de natividad (sí seguramente no exista esa palabra)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;02.- &lt;strong&gt;Librerías:&lt;/strong&gt; Linux cuenta con librerías publicadas en Internet, con las cuales podemos modificar cualquier aspecto del sistema operativo para mejora personal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Al día de hoy esto sigue siendo real y existen muchas cosas más seguramente que en 2008. También tenemos que admitir en su contracara sistems como ReactOS, Windows o MacOS no quieren que los personalicen como linux que es tan editable por lo cual es realmente fuerte en este punto al igual que BDS y otros sistemas así&amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;03.- &lt;strong&gt;Adiós errores:&lt;/strong&gt; No verás más el mensaje “Se recomienda cerrar todas las aplicaciones antes de continuar” ya que en Linux no es necesario.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bueno, siempre que te mantengas lejos de &lt;strong&gt;Ubuntu&lt;/strong&gt; esto es realmente viable… Fuera de chiste hay que reconocer que Windows aprendió a manejar mucho mejor sus errores en las últimas versiones. Y también tenemos que reconocer que &lt;strong&gt;todos&lt;/strong&gt; los SO son propensos a errores, aunque los basados en UNIX o Unix-Like tienden a aislarlos mejor y eso es una gran ventaja&amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;04.- &lt;strong&gt;Rapidez y Recursos:&lt;/strong&gt; Si comparamos con Windows Vista, Linux es ampliamente más rápido, necesitando menos recursos en cuanto a hardware.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Volvemos a ver la diferencia en generaciones de Windows, la Versión 10 está más optimizada que la versión Vista… Aun asi es real que GNU/Linux esta mucho mas optimizada y con un DE liviano o un WM y lo corres en una comodore.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;05.- &lt;strong&gt;Rendimiento:&lt;/strong&gt; Adiós a herramientas para aumentar el rendimiento de nuestro sistema operativo, o de herramientas para desfragmentar nuestro disco duro.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;El mantenimiento de los equipos es necesario indiferentemente de los SO que tengamos instalados y eso es ley, si uno no cuida correctamente y mantiene buenas prácticas siempre se puede llenar de basura o funcionar mar, aun así es real los menores niveles de fragmentación.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;06.- &lt;strong&gt;Instalación:&lt;/strong&gt; La instalación del sistema operativo dura la mitad, tan solo debemos reiniciar una vez, contra las cuatro o cinco veces del Windows Vista.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si, pero no. Es verdad y solo se reinicia para iniciar el SO ya instalado no es algo que moleste, o al menos desde mi punto yo solo instalo mientras hago otras cosas por lo cual no lo espero con tantas ansias…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;07.- &lt;strong&gt;Reinicio tras instalación:&lt;/strong&gt; No tendrás que reiniciar tu ordenador cada vez que instales un programa, dispositivo o actualización.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bueno, a ver intentamos ser realistas, no siempre hay que reiniciar en DOS solamente cuando instalamos algo que impacta en la ejecución del kernel, y en Ubuntu por ejemplo algunas cosas piden reiniciar también. Por lo cual si bien es verdad que es GNU/Linux eso lo pide mucho menos tampoco es cada 5 min en DOS&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;08.- &lt;strong&gt;Antivirus:&lt;/strong&gt; No es normal instalar algún tipo de antivirus o antispyware, y en caso de instalarlo no es necesario actualizarlo.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En ningún SO es necesario si realmente somos usuarios responsables, pero decir que en linux no es necesario y no existen virus es realmente una mentira. Y creo que debemos ser realistas. Qué son los menos es verdad, pero ningún sistema no es infalible (más si usas intel que está lleno de errores)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;09.- &lt;strong&gt;Claves y cracks:&lt;/strong&gt; No necesitarás buscar y descargar claves o parches de páginas de dudosas procedencias, lo que lleva a la infección de nuestro ordenador.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En ningún sistema es necesario esto, existen apps libres para Todos y bueno, el sistema tenes que pagarlo, porque es lo correcto&amp;hellip; Uno puede estar a favor o en contra, pero el hecho de crackear en Windows ya implica tener un virus dentro&amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;10.- &lt;strong&gt;Drivers:&lt;/strong&gt; Al enchufar un dispositivo, por ejemplo una impresora, memoria flash, disco externo, etc. empezará a funcionar automáticamente sin necesidad de instalar su respectivo driver.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Linux en SO no es &lt;strong&gt;Hogwarts&lt;/strong&gt; por lo cual la magia no existe, la mayoría de los dispositivos arrancan de una pero si hay que instalar drivers en algunos, y es mas a dia de hoy existen drivers que no sirven o son muy complejos de hacerlos funcionar… Pero al instalar un Linux suele arrancar con el 90% de funcionalidad&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;11.- &lt;strong&gt;Todo gratis:&lt;/strong&gt; Todas las aplicaciones serán totalmente gratuitas, no necesitarás piratear ninguna aplicación para su uso.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Volvemos a lo anterior LibreOffice y demás están Para Windows también, Además en Linux existen increíbles apps de pago que son impecables. Pagar o no por una app es elección y piratearla también lo es estemos o no de acuerdo&amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;12.- &lt;strong&gt;Paquete de aplicaciones:&lt;/strong&gt; Linux por defecto trae gran cantidad de aplicaciones con las cuales podemos hacer cualquier tipo de tarea.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Esto depende de la distribución, algunas vienen muy limpias y otras llenas de Apps. La gran mayoría trae todo para poder funcionar y hacer de todo sin ningún problema. por lo cual sigue siendo un punto a favor. Algo que no me gusta de Windows es que trae muchas apps que nadie quiere… (Pero esto es meramente personal)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;13.- &lt;strong&gt;Descarga de aplicaciones:&lt;/strong&gt; Si en las utilidades que trae Linux por defecto no encontramos una herramienta adecuada, podremos descargarla de Internet totalmente gratis.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bueno esto es lo que decíamos de antes… En GNU/Linux hay apps gratis al igual que en linux y por ahí la ventaja acá es el gestor de paquetes que facilita mucho y de alguna forma controla las versiones&amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;14.- &lt;strong&gt;Clasificación:&lt;/strong&gt; Las aplicaciones en el menú inicio se encuentran clasificadas en forma lógica, no como en Windows que se encuentran todas las aplicaciones.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bueno esto depende del menú en específico que usemos y de la distro, pero es verdad que vienen más organizadas en GNU/Linux aunque para los que usamos launchers es casi lo mismo esto&amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;En resumen, les puedo decir que varios pueden cuestionar, lo cierto es que cada uno es libre de optar por la tecnología que mejor resultados les ofrezca.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;El resumen es impecable, esta persona nos cuenta su punto de vista y nosotros podemos discrepar, pero la realidad al fin de cuenta es que siempre depende de que es lo que el usuario quiera y a que se adapte mejor.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://principiante-linux.blogspot.com/2008/06/14-razones-para-utilizar-linux-en-lugar.html" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Fuente
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Epic vs Apple Mi opinion de la disputa</title><link>https://patojad.com.ar/post/2020/08/epic-vs-apple-mi-opinion-de-la-disputa/</link><pubDate>Mon, 24 Aug 2020 10:44:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/08/epic-vs-apple-mi-opinion-de-la-disputa/</guid><description>&lt;p&gt;En esta oportunidad quiero hablar un poco sobre la disputa de Apple y Epic y sobre lo que esto puede llegar a significar para el resto de los sistemas operativos. Y el porqué Microsoft decidió apoyar a Epic en esta “pelea”.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La eliminación de Fortnite de la App Store fue, sin duda, la noticia de la pasada semana. Desde Epic Games, desarrolladores del juego, comenzaron una ofensiva contra la compañía de la manzana con el firme objetivo de acabar con la ya famosa comisión del 30% en compras in-app que tantos quebraderos de cabeza está generando y por la que se está investigando a Apple. Varios días después, se enfrentan a nuevos problemas que podrían dejarles en un punto de no retorno.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Con este enunciado vamos a ir opinando un poco lo que pasó estos días más allá de las actualizaciones que podamos ver en la parte de abajo!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Quiero aclarar que realmente esto es mi punto de vista y como tal puede tener errores o simplemente puedes discrepar, de ser así te invito a dejar tu comentario y explicar tu punto de vista.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/qtSjEzwOMog?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="novedades-sobre-el-caso"&gt;
Novedades sobre el caso
&lt;a href="#novedades-sobre-el-caso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Apple no puede bloquear la distribución de Unreal Engine&lt;/strong&gt; en su ecosistema de software, pero Fornite tampoco puede volver a la App Store.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;De esta forma la jueza que llevaba esta disputa decidió con sus fundamentos que Unreal Engine se queda en la store, la pregunta es cuanto tiempo tardara Apple en encontrar el motivo para sacarlo…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sin embargo, la jueza &lt;strong&gt;no impedirá que Apple cancele la cuenta de desarrollador de Epic Games&lt;/strong&gt; el próximo 28 de agosto, tal y como habían anunciado, lo cual haría que Fortnite no pueda actualizarse hasta que sus creadores cumplan con toda la normativa de la App Store.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si bien la jueza apoya la idea de Microsoft y de Epic Games sabe que tiene que mantenerse inmutable ante su preferencia y decide permitir que Apple penalize a Epic por el fraude realizado.&lt;/p&gt;</description></item><item><title>Proyectos de Xcode infectados de malware</title><link>https://patojad.com.ar/post/2020/08/proyectos-de-xcode-infectados-de-malware/</link><pubDate>Fri, 21 Aug 2020 12:17:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/08/proyectos-de-xcode-infectados-de-malware/</guid><description>&lt;p&gt;Muchas veces escuchamos que MacOS es uno de los sistemas más seguros que existen e incluso escuche que &lt;em&gt;no tiene virus&lt;/em&gt; sin embargo esto no es real para ningún sistema operativo existente dado que todos y cada uno de ellos puede ser &lt;strong&gt;fácilmente vulnerado&lt;/strong&gt; esto es también lo que mantiene vivo el desarrollo de los mismos…&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://support.apple.com/library/content/dam/edam/applecare/images/es_ES/iOS/ios13-setup-restore-from-icloud-hero.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En esta oportunidad vamos a hablar de un ataque que está ocurriendo para estos equipos que contienen dicho sistema, y en especial para quienes usan el navegador que viene incorporado…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-pasa"&gt;
¿Qué pasa?
&lt;a href="#qu%c3%a9-pasa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una campaña dirigida específicamente a usuarios de Mac está distribuyendo el malware &lt;strong&gt;XCSSET&lt;/strong&gt; que tiene, entre otras, la capacidad de inyectar diferentes &lt;em&gt;payloads&lt;/em&gt; en el navegador Safari, propiciando así el robo de contraseñas, datos financieros y personales, etc. Al igual que la ejecución de ransomware.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-se-propaga"&gt;
¿Cómo se propaga?
&lt;a href="#c%c3%b3mo-se-propaga" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La manera de propagación es poco usual en este ámbito, ya que utiliza proyectos de &lt;strong&gt;Xcode&lt;/strong&gt;, una suite de desarrollo para dispositivos de Apple. El proyecto de Xcode es infectado con código malicioso, que se ejecuta durante la compilación del mismo.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.iclarified.com/images/news/73707/73707/73707-1280.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El riesgo aumenta exponencialmente cuando los desarrolladores afectados por dicho código malicioso comparten sus proyectos en plataformas como GitLab (o similares), lo que afecta a otros desarrolladores, que dependen de estos repositorios para sus propios proyectos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-funcionaque-hace"&gt;
¿Cómo funciona?¿Que hace?
&lt;a href="#c%c3%b3mo-funcionaque-hace" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El malware &lt;strong&gt;genera un paquete de aplicación, que simula ser una aplicación legítima&lt;/strong&gt;, como puede ser el navegador Safari, reemplazando el icono de la misma, de manera que los usuarios, al abrirla, están en realidad ejecutando el malware propiamente dicho.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/402463/safari_preview/450_1000.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Una vez activo, el malware &lt;strong&gt;es capaz de desplegar una serie de módulos específicos&lt;/strong&gt;, para tomar posesión de navegadores, robar información de otras aplicaciones, ejecutar ransomware, etc. Para lograr este objetivo utiliza una vulnerabilidad 0-day del Data Vault de macOS, que le permite acceder a las cookies del navegador, lo que permitiría a su vez suplantar al usuario en numerosos servicios web en los que estuviese en sesión.&lt;/p&gt;</description></item><item><title>Los WM, el caso de Awesome</title><link>https://patojad.com.ar/post/2020/08/los-wm-el-caso-de-awesome/</link><pubDate>Thu, 20 Aug 2020 09:33:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/08/los-wm-el-caso-de-awesome/</guid><description>&lt;p&gt;Muchas veces hablamos de que escritorio es mejor y esas peleas que claramente no tienen ningún tipo de sentido más que disfrutar de “bardear” (Término argentino para &lt;em&gt;insultar&lt;/em&gt;) a algún amigo por el escritorio que usar, aprovechó la oportunidad para bardear a &lt;strong&gt;Julio&lt;/strong&gt; por usar Gnome…&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://wiki.manjaro.org/images/8/8f/Awesome-wm-18.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Sin embargo los que estamos en la tecnología hace un tiempo nos vamos &lt;strong&gt;limpiando de fanatismos&lt;/strong&gt; y entendemos que cada cosa tiene su función y para cada uno lo mejor es lo que le sirve y por eso estamos dispuestos a ver lo bueno en todos lados (Menos en Gnome porque lo usa Julio)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="windows-manager"&gt;
Windows Manager
&lt;a href="#windows-manager" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En esta oportunidad la idea es darse un tiempo para entender sobre porque existen y cual es su función.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.redd.it/hid11qhbgkf21.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Muchos eligen sus escritorios por lo visual, sin embargo otros buscan productividad. Los WM (asi los llamaré desde ahora) están pensados para mejorar la productividad y la eficiencia optimizados en su mayoría para el uso puro y exclusivo del teclado.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.redd.it/okveie39rngy.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Estos son muy apreciados por programadores o por las personas que se acostumbran a hacer todo con el teclado muy rápido.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="algo-más"&gt;
Algo más
&lt;a href="#algo-m%c3%a1s" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.redd.it/szwemaesfu031.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Además de ser rápidos y performantes son muy personalizables lo cual lo vuelven perfectos para aquellos que les gusta acomodar los equipos para que se adapten a uno. Y esto se puede volver una particularidad que lo haga deseados por aquellos que deseen la personalización extrema. Incluso a quienes busquen un estilo 100% armado por ellos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="bueno-bonito-y-barato"&gt;
Bueno, Bonito y Barato
&lt;a href="#bueno-bonito-y-barato" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://raw.githubusercontent.com/manilarome/the-glorious-screenshots/master/gnawesome.webp" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://raw.githubusercontent.com/manilarome/the-glorious-screenshots/master/lockscreen.webp" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Además de ser muy rápido y eficiente es muy personalizable y se pueden lograr cosas estéticamente mucho más lindas que los DE que conocemos actualmente…&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://raw.githubusercontent.com/manilarome/the-glorious-screenshots/master/big.webp" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://raw.githubusercontent.com/manilarome/the-glorious-screenshots/master/linear.webp" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Por lo cual podemos afirmar que la parte estética si bien no viene pulida de fabrica no es un limitante en estos WM&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://raw.githubusercontent.com/manilarome/the-glorious-screenshots/master/surreal.webp" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://raw.githubusercontent.com/manilarome/the-glorious-screenshots/master/exit-screen.webp" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>Unturned</title><link>https://patojad.com.ar/post/2020/08/unturned/</link><pubDate>Wed, 19 Aug 2020 10:16:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/08/unturned/</guid><description>&lt;p&gt;Existe el mito de que en GNU/Linux no se puede jugar, como siempre digo hay muchos canales que demuestran lo contrario, pero desde mi posición tengo ganas de colaborar con la causa y creo que una de las mejores formas es recomendar algunos juegos &lt;strong&gt;Free To Play&lt;/strong&gt; que son nativos para nuestro amado GNU/Linux.&lt;/p&gt;
&lt;p&gt;Probablemente muchos juegos que recomiende sean &lt;strong&gt;Steam&lt;/strong&gt; o al menos es el caso de hoy. Puede que existan muchos juegos y no necesariamente de esta plataforma, si te parece correcto publicar también esos juegos y notas que yo me los paso por arriba no dudes en intervenir para que no me olvide de ninguno…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-juego-de-hoy"&gt;
El juego de Hoy
&lt;a href="#el-juego-de-hoy" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.cloudflare.steamstatic.com/steam/apps/304930/header.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El juego de hoy es un juego que siempre me negué a probar, no me parecía interesante o parecía aburrido. Pero a modo de investigación lo descargue y lo probe… Debo admitir que el juego es realmente entretenido y es realmente interesante.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="mantente-con-vida"&gt;
Mantente con vida
&lt;a href="#mantente-con-vida" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Eres uno de los pocos que aún no se ha convertido en un zombi, y mantenerse así será todo un reto.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_2754a9cdb632e6ed242799e073711fe6306a4245.600x338.jpg?t=1590451726%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_2754a9cdb632e6ed242799e073711fe6306a4245.600x338.jpg?t=1590451726"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dispárale a todo y atrae la atención de todos, no importa si están vivos o muertos.&lt;/li&gt;
&lt;li&gt;Acércate con sigilo utilizando distracciones.&lt;/li&gt;
&lt;li&gt;Enfréntate y aprende a contrarrestar habilidades especiales como la invisibilidad, aliento de fuego o ataques relámpago.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="lucha-contra-la-naturaleza"&gt;
Lucha contra la naturaleza
&lt;a href="#lucha-contra-la-naturaleza" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;A parte de los zombis, el mundo natural también hace la vida difícil.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_db70f87c3635d930580b1365101952a72a14bd4e.600x338.jpg?t=1590451726%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_db70f87c3635d930580b1365101952a72a14bd4e.600x338.jpg?t=1590451726"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Busca frutas y vegetales silvestres.&lt;/li&gt;
&lt;li&gt;Caza animales para conseguir pieles y carne. También puede que seas la presa en dadas ocasiones.&lt;/li&gt;
&lt;li&gt;Pesca para conseguir comida… y basura.&lt;/li&gt;
&lt;li&gt;Cosecha tus propias plantas y asegúrate de que obtengan agua.&lt;/li&gt;
&lt;li&gt;Busca refugios para mantenerte cálido durante las tormentas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="interactúa-con-otros-jugadores"&gt;
Interactúa con otros jugadores
&lt;a href="#interact%c3%baa-con-otros-jugadores" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Ya sean amigos o enemigos, hay mucha gente interesante en línea.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_6daaf570bf9b57647e44349a7f36e1f74064ca82.116x65.jpg?t=1590451726%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_6daaf570bf9b57647e44349a7f36e1f74064ca82.116x65.jpg?t=1590451726"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Arresta a ladrones con esposas y véndales los ojos para subyugarlos con una estrategia no letal.&lt;/li&gt;
&lt;li&gt;Lucha usando todo tipo de arma que te encuentres en el camino. Espadas, ametralladoras, rifles, misiles, minas, todo es bueno.&lt;/li&gt;
&lt;li&gt;Asalta campamentos enemigos usando cargas y detonadores para saquear sus provisiones.&lt;/li&gt;
&lt;li&gt;Juega en el modo arena para sobrevivir en una batalla de jugador contra jugador donde solo uno saldrá con vida o juega en paz y en equipo en el modo jugador contra el mundo.&lt;/li&gt;
&lt;li&gt;Usa servidores Roleplay que motivan a los jugadores a que se mantengan usando a un personaje específico y creen una historia juntos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ayuda-a-la-nueva-sociedad"&gt;
Ayuda a la nueva sociedad
&lt;a href="#ayuda-a-la-nueva-sociedad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Hay muchas cosas que hacer, aunque juegues desconectado o tu solo.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_de07d47b7f81d0f53100398369ac49803d0570bf.116x65.jpg?t=1590451726%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_de07d47b7f81d0f53100398369ac49803d0570bf.116x65.jpg?t=1590451726"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Conoce, habla y comercia con los NPCs.&lt;/li&gt;
&lt;li&gt;Completa misiones para continuar con la historia y ayudar a los NPCs.&lt;/li&gt;
&lt;li&gt;Defiéndete de las hordas de zombis y mantente firme hasta que no quede ninguno.&lt;/li&gt;
&lt;li&gt;Asegura los suministros que lleguen en paracaídas.&lt;/li&gt;
&lt;li&gt;Consigue equipos como máscaras antigás para explorar las áreas radioactivas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="crea-tu-fortaleza"&gt;
Crea tu fortaleza
&lt;a href="#crea-tu-fortaleza" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Construye un lugar donde tú y tu equipo se puedan relajar, esconderse y planear lo que quieren hacer ya sea en la tierra o en el agua (literalmente).&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_dab75d876be53346a0a5a1fc5e3ae1a4b54ea926.116x65.jpg?t=1590451726%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_dab75d876be53346a0a5a1fc5e3ae1a4b54ea926.116x65.jpg?t=1590451726"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Construye barricadas, muebles, trampas, maquinarias y mucho más.&lt;/li&gt;
&lt;li&gt;Bloquea las ventanas de edificios para sobrevivir la noche en ese lugar.&lt;/li&gt;
&lt;li&gt;Construye edificios y objetos nuevos usando los suministros que colectes.&lt;/li&gt;
&lt;li&gt;Convierte tu vehículo en una fortaleza andante construyendo sobre él.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="viaja-por-tierra-mar-y-aire"&gt;
Viaja por tierra, mar y aire
&lt;a href="#viaja-por-tierra-mar-y-aire" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Viaja como quieras cuando llenes tu garaje de vehículos distintos.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_e9b5d9c8b1afc2aabd3e33ac9407a09bd9bffccb.600x338.jpg?t=1590451726%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_e9b5d9c8b1afc2aabd3e33ac9407a09bd9bffccb.600x338.jpg?t=1590451726"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hay vehículos de tierra incluyendo tanques, cuatrimotos y motos de nieve.&lt;/li&gt;
&lt;li&gt;Hay vehículos de aire, incluyendo helicópteros, hidroaviones y aviones de combate.&lt;/li&gt;
&lt;li&gt;Hay vehículos de agua, como motos acuáticas y aerodeslizadores.&lt;/li&gt;
&lt;li&gt;Mantén tus vehículos listos para la acción con llantas, baterías y gasolina.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="explora-un-mundo-gigantesco"&gt;
Explora un mundo gigantesco
&lt;a href="#explora-un-mundo-gigantesco" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Con cinco comunidades oficialmente activas y una comunidad supervisada, hemos creado un mapa sandbox con localidades enormes y listas para ser descubiertas:&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_e3e31ca656cbe3b2d186e6644588bee9fe59f1df.600x338.jpg?t=1590451726%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_e3e31ca656cbe3b2d186e6644588bee9fe59f1df.600x338.jpg?t=1590451726"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las islas del Príncipe Eduardo&lt;/li&gt;
&lt;li&gt;El territorio del Yukón&lt;/li&gt;
&lt;li&gt;Washington&lt;/li&gt;
&lt;li&gt;Rusia&lt;/li&gt;
&lt;li&gt;Hawái&lt;/li&gt;
&lt;li&gt;Alemania&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="modifica-todo"&gt;
¡Modifica todo!
&lt;a href="#modifica-todo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Unturned fue creado desde el principio con la idea de crear mods.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_b1cf12ba306180da433dcf199f6f4a2fa74e48bd.600x338.jpg?t=1590451726%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_b1cf12ba306180da433dcf199f6f4a2fa74e48bd.600x338.jpg?t=1590451726"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Descarga contenido creado por otros jugadores, desde armas a vehículos y hasta niveles nuevos para explorar. Incluso tú puedes crear y subir lo que quieras.&lt;/li&gt;
&lt;li&gt;Crea tus propios mapas con el editor de mapas incluido. Todos nuestros mapas fueron creados con las mismas herramientas que tiene disponibles.&lt;/li&gt;
&lt;li&gt;Escribe Plugins usando nuestros sistemas o sistemas de servicio de terceros.&lt;/li&gt;
&lt;li&gt;Crea tus trajes y pieles en el Workshop para que otros voten por ellos. Si ganan se considerarán para ser vendidos en la tienda.&lt;/li&gt;
&lt;li&gt;Haz equipo con otros creadores para desarrollar tus propias actualizaciones, las cuales podrían ser consideradas para uso oficial.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="más-cosas"&gt;
Más cosas
&lt;a href="#m%c3%a1s-cosas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Hay otras cosas que hacer que no supimos donde incluir. Esta es una breve lista de algunos ejemplos:&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_f634649eb2a50b49bc98f7cc27314b671c8cbff5.600x338.jpg?t=1590451726%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://cdn.cloudflare.steamstatic.com/steam/apps/304930/ss_f634649eb2a50b49bc98f7cc27314b671c8cbff5.600x338.jpg?t=1590451726"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La mayoría de los objetos se pueden destruir para crear caminos nuevos.&lt;/li&gt;
&lt;li&gt;Para una mejor inmersión, puedes llevar una radio de frecuencias en el juego para comunicarte con tus amigos en vez de usar programas externos para chat de voz.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-opinión"&gt;
Mi opinión
&lt;a href="#mi-opini%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Soy una persona que le encanta el Rol y en este juego ya tenemos servidores de RolePlay. Por lo cual me parece ideal para iniciar en el mundo del RolePlay. El juego tiene muchos mecanismos por lo cual si bien sus gráficos no son ideales la jugabilidad es el cielo… Y los que de verdad jugamos nos fijamos en esto y no en los gráficos.&lt;/p&gt;</description></item><item><title>Artix Linux</title><link>https://patojad.com.ar/post/2020/08/artix-linux/</link><pubDate>Tue, 11 Aug 2020 09:01:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/08/artix-linux/</guid><description>&lt;p&gt;En esta oportunidad quiero hablar de una distribución de GNU/Linux que muy probablemente no conozcas, no es nueva pero son pocos los usuarios que me dijeron conocerla cuando la nombre, y creo que esta distro debería ser tan popular como otras o tal vez más. Por eso hoy vamos a hablar de &lt;strong&gt;Artix&lt;/strong&gt; y si dije bien no es &lt;em&gt;Antix&lt;/em&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sobre-artix"&gt;
Sobre Artix
&lt;a href="#sobre-artix" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tipo de sistema operativo:&lt;/strong&gt; Linux&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Basado en:&lt;/strong&gt; Arch&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Origen:&lt;/strong&gt; Global&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura:&lt;/strong&gt; x86_64&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escritorios disponibles:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Cinnamon&lt;/li&gt;
&lt;li&gt;LXDE&lt;/li&gt;
&lt;li&gt;LXQt&lt;/li&gt;
&lt;li&gt;MATE&lt;/li&gt;
&lt;li&gt;KDE Plasma&lt;/li&gt;
&lt;li&gt;Xfce&lt;/li&gt;
&lt;li&gt;i3 (beta)&lt;/li&gt;
&lt;li&gt;Gnome (beta)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Categoría:&lt;/strong&gt; Desktop, Live Medium&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estado:&lt;/strong&gt; Activo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ytimg.com/vi/lz8hsZjjNZY/maxresdefault.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Como remarca desde su web y así la identifica totalmente, &lt;strong&gt;Artix Linux&lt;/strong&gt; es una distro basada en Arch, por tanto sabemos que es rolling release, &lt;strong&gt;libre de systemd&lt;/strong&gt; y que reemplaza a este con &lt;strong&gt;Openrc&lt;/strong&gt;, &lt;strong&gt;s6&lt;/strong&gt; o &lt;strong&gt;runit&lt;/strong&gt;. Artix es la continuación de los icónicos ManjaroOpenRC y ArchOpenRC tomando una camino más firme con desarrollo continuo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="va-dirigida"&gt;
Va dirigida…
&lt;a href="#va-dirigida" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En muchos lugares lei que Artix va dirigida a usuarios con mucho expertis en el mundo de GNU/Linux. Sin embargo creo que esta a nivel de aquellos que usan manjaro dia a dia. con la leve diferencia que deben arreglárselas para instalar el &lt;strong&gt;pamac&lt;/strong&gt; o el gestor gráfico de preferencia.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://upload.wikimedia.org/wikipedia/commons/a/ab/Artix_Community_FF-Inkscape_2020-02.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Viene con una instalación mínima lo cual nos permite de alguna forma elegir a nosotros las apps a utilizar, esto nos permite tener el sistema limpio para no arrastrar actualizaciones de aplicaciones que nunca usamos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i0.wp.com/entornosgnulinux.com/wp-content/uploads/2019/03/Calamarares.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La instalación se realiza mediante gestor gráfico (si es que descargaste la iso con algun escritorio disponible) conocido como &lt;strong&gt;calamares&lt;/strong&gt; uno de los más populares que existen hoy en dia.&lt;/p&gt;
&lt;p&gt;Como la mayoría de las distros las instalaciones son una conjugación de siguientes y completar datos y ya podemos disfrutar de la distro. Te recomiendo descargarla y probarla, y si aceptas otro consejo recomiendo MATE como escritorio.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://artixlinux.org/download.php" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar Artix
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>La gente Opina: El mejor Sistema Operativo</title><link>https://patojad.com.ar/post/2020/08/la-gente-opina-el-mejor-sistema-operativo/</link><pubDate>Mon, 10 Aug 2020 09:18:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/08/la-gente-opina-el-mejor-sistema-operativo/</guid><description>&lt;p&gt;Bienvenidos a todos nuevamente, otra vez el título taquillero… Los otros dias arme un articulo llamado &lt;a href="https://patojad.com.ar/posts/2020/08/que-sistema-operativo-es-mejor/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
¿Que Sistema Operativo es mejor?
&lt;/a&gt; y como siempre generó la política. Siempre dije que el blog es más de la comunidad que mio y claramente hoy quiero hacer peso a mis palabras tal y como se debe.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="opinión-en-telegram"&gt;
Opinión en Telegram
&lt;a href="#opini%c3%b3n-en-telegram" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Siempre suelo tomar las opiniones en telegram, es más simple guardar los mensajes y las personas suelen fundamentar correctamente su opinion, aqui lo que la gente dijo en Telegram:&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Linux por supuesto bueno depende, pues trabaje como 15 años mac y se porto excelente, trabaje otros 15 años windows y se me blanqueo el pelo ,se cayo y subro de ulcera gastrica, jaquecas, nervios y perdida de vista. Ahora ya con Linux todo es relax. Debi quedarme con Linux desde el comienzo de mi vida informatica y todo seria diferente.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Orlando Arch Linux
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Nnn para mi es mejor Gnu~linux!! Linux solo es complicado jajaja!, ahora otros sistemas la verdad Si no son libres no los uso!&lt;/p&gt;
&lt;p&gt;Bsd lo probé en lo particular no me gusto, por lo menos la versión que elegí creo fue openbsd, luego habia una de cumpa latino no recuerdo ahora, el nombre del sistema es su apellido, estaba muy buena, pero no es para novatos.&lt;/p&gt;
&lt;p&gt;Nnn que decir la verdad no es para mí, como suelo decir soy activista mas del Gnu~linux de momento no encuentro otros sistemas libres que me parezcan superiores o iguales! Igualmente es solo mi opinión!! Hay seguro personas mas cualificadas técnicamente para aportar!&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Riky Linux
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;no se si entendí bien la nota.. quizás no.. pero cuando un usuario final evalua un SO es obvio y entendible que lo haga solo desde la usabilidad y estética, sin evaluar realmente al SO, pero cuando personas informáticas se declaran gnosticas de la tecnologías como si estas fueran neutrales, ahi me hace ruido..&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Javier Obregón
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;La pregunta está mal formulada&lt;/p&gt;
&lt;p&gt;Además que el concepto &amp;ldquo;mejor&amp;rdquo; o &amp;ldquo;peor&amp;rdquo;, depende muchísimo del contexto, aparte de la propia subjetividad&lt;/p&gt;
&lt;p&gt;Que parece que no aprendemos&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Petrus
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Una vez, era Linux&lt;/p&gt;
&lt;p&gt;Pero, no más&lt;/p&gt;
&lt;p&gt;Hicieron tantas cagadas con el&lt;/p&gt;
&lt;p&gt;Que hoy es tan malo cuanto los otros&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
🇧🇷 Alessandro Ebersol 🇧🇷
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Lo bueno es que se puede elegir, ninguno es el mejor, y todos tienen cosas malas :P&lt;/p&gt;
&lt;p&gt;En la empresa donde estoy &amp;ldquo;me obligan&amp;rdquo; a usar macOS, un lujo&amp;hellip; Pero por cuestiones de seguridad viene con un antivirus que hace que la máquina se arrastre y funcione todo re lento&amp;hellip; 😒&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Tehuel
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;el mejor siempre sera el que cumpla sus necesiddes , o en su defecto, el que lo haga sentir mas a gusto&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
𝓜𝓮𝓻𝓲𝓸𝓭𝓪𝓼𝓾
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;¿Cual es el mejor sistema operativo? Para hacer un análisis técnico, hay que definir criterios y parámetros. ¿Alguien lo hizo? No lo se. Creo que aún así, definir que es mejor porque procesa 5Hz más rápido uno que otro no tiene sentido. Definir modelos de provisión de aplicaciones, apertura de código, marketing, soporte, es quizás también subjetivo por motivos ideológicos. Ideológicos porque claramente hay tres filosofías (y quizás algunas más) que nos enmarcan en cada forma de distribuir, vender e incluso usar los SO. A pesar de que lo que podemos pensar, yo encuentro relacionados a éstos modelos a los modelos económicos imperantes en el mundo. En resumen. Técnicamente puede que haya uno mejor, pero va a seguir siendo algo subjetivo, al igual que los gustos y la comodidad al utilizarlo.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
elias gauna
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="opinión-en-facebook"&gt;
Opinión en Facebook
&lt;a href="#opini%c3%b3n-en-facebook" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Esta red social solo la uso para el blog, pero en este caso creí correcto poner (en formato imagen) lo que las personas opinan sobre este polémico tema.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/VNLf90Th/Screenshot-20200806-131557.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/cJ9sF4GL/Screenshot-20200806-132005.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/NMKQSqQ7/Screenshot-20200806-132051.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/vBCGdqBR/Screenshot-20200806-132117.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/XqF4NfGr/Screenshot-20200806-132140.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/DZ4K5rcx/Screenshot-20200806-132237.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/59FxmV7f/Screenshot-20200806-132350.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/3wcTgS2y/Screenshot-20200806-132409.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/J4VR62vZ/Screenshot-20200806-132429.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/5NBbZmWG/Screenshot-20200806-132717.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Gmbdrscp/Screenshot-20200806-132746.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Z5jZqKRx/Screenshot-20200806-133444.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/pdTv5b5b/Screenshot-20200806-133530.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/sxFCLM6s/Screenshot-20200806-133601.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/NF1vvQST/Screenshot-20200806-133921.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/KcL2M5jz/Screenshot-20200806-154007.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/hPBqb7Q0/Screenshot-20200806-154042.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/qMxHmM8H/Screenshot-20200806-154124.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/GpH0hF6b/Screenshot-20200806-154302.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/7ZB8kssB/Screenshot-20200806-154412.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Jz7VSVqD/Screenshot-20200806-154429.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Y0NZybLz/Screenshot-20200806-154453.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/zDTsBX2H/Screenshot-20200806-154527.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/dtvzTPgH/Screenshot-20200806-154600.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/DygRrpT2/Screenshot-20200806-154637.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/QtTRcXXP/Screenshot-20200806-171748.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/R08k33zK/Screenshot-20200806-171808.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/kGPLckG5/Screenshot-20200806-171825.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/K88wJ7Gt/Screenshot-20200806-171847.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/YCDVV40Z/Screenshot-20200807-083433.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/s2B8RVZX/Screenshot-20200807-083501.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/s2tLjtpJ/Screenshot-20200807-083542.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/4dVSmBPR/Screenshot-20200807-083602.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/HntvtnFS/Screenshot-20200807-083636.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/52r7gZkM/Screenshot-20200807-083700.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/v87Ky2DW/Screenshot-20200807-083728.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/8Cry0tqf/Screenshot-20200807-123623.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/HsBPcJwn/Screenshot-20200808-162953.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/tCXM4dV8/Screenshot-20200808-163032.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/QtG6Gc34/Screenshot-20200808-163107.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Cx5rjF7N/Screenshot-20200808-163133.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-mismísimo-blog"&gt;
El mismísimo Blog
&lt;a href="#el-mism%c3%adsimo-blog" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Muchos se percataron de que es posible comentar directamente en el blog, lo cual deja espacio a debates más centralizados y aquí van los comentarios realizados en el mismo!&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;¿Te gustan las cadenas o la libertad? Desgraciadamente hay mucha gente que prefiere las cadenas para no tener que pensar y elegir por ellos mismos y no solo estoy hablando de tecnología.
Otro tema es el de los formatos libres, el de los libres de verdad no el de los que así se han declarado untando a un comité con suculentos maletines, son la única garantía de poder seguir usando nuestros datos durante décadas, o incluso que nos sobrevivan.
Imagínate si se hubiera perdido el Quijote a los 20 años de ser escrito por un problema de formatos, pues eso está pasando ahora con muchas obras.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
pillabichos
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Hola Pato, coincido que no hay que limitarnos, todos los sistemas tienen sus pro y contras, los que amamos la tecnologia pensamos en forma global, ojala pueda probar muchos sistemas y tecnologias antes de no estar mas en este mundo.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Julio Estudilla
&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>¿Que Sistema Operativo es mejor?</title><link>https://patojad.com.ar/post/2020/08/que-sistema-operativo-es-mejor/</link><pubDate>Thu, 06 Aug 2020 12:03:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/08/que-sistema-operativo-es-mejor/</guid><description>&lt;p&gt;Yo con anterioridad hable de los sistemas operativos republicano un paralelismo que había realizado un gran amigo mio. Sin embargo hoy quiero expandir un poco más mi pensamiento sobre este tema y sobre mi postura sobre los sistemas operativos.&lt;/p&gt;
&lt;p&gt;Antes de empezar quiero recalcar que soy un ser humano como todos, y a medida que pasa el tiempo uno crece y la cabeza le va cambiando por lo cual es posible que uno varíe su forma de pensar.&lt;/p&gt;
&lt;p&gt;Teniendo en cuenta todo esto recomiendo leer de antemano la publicación de los paralelismos entre Sistemas operativos y comidas (donde solo hablo de GNU/Linux, Windows y MacOS) para poder estar un poco en sintonía de apologías que pueda llegar a utilizar.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://patojad.com.ar/post/2019/01/paralelismo-entre-sistemas-operativos-y-comidas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Paralelismo entre sistemas operativos y comidas
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="que-sistema-operativo-es-mejor"&gt;
¿Que Sistema Operativo es Mejor?
&lt;a href="#que-sistema-operativo-es-mejor" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/aece81/ssoo2/1366_2000.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Tal vez en algún momento hubiera entrado en debate por estos temas, sin embargo si uno se toma el tiempo de pensarlo es una estupidez. Podemos definir, al igual que la comida, que una sea técnicamente mejor que otra. Pero no se trata de eso, la comida gourmet existe porque a mucha gente le gusta y se desvive. Tampoco falta esas personas que quieren comer en locales de comida rápida todo el tiempo, porque les gusta su sabor. Y están aquellos que prefieren el buen &lt;strong&gt;guiso de la abuela que nadie supera&lt;/strong&gt;&amp;hellip;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://media.todojujuy.com/adjuntos/227/imagenes/001/031/0001031523.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;También estamos otros, aquellos que superamos el fanatismo y las banderas, aquellos que amamos comer la comida de nuestra abuela mientras hablamos de la vida, que alguna noche podemos ir a un local de comida rápida a reir con amigos y porque no darse el lujo de una comida gourmet cuando es posible…&lt;/p&gt;
&lt;p&gt;Volviendo al sistema operativo (y que no se note el hambre) Algunos entendemos que cada sistema tiene sus altos y bajos y aprendemos a coexistir con todos sin sacar chispas… Claramente podemos tener nuestro preferido y como tal podemos usarlo mas o defenderlo más. Pero el dia hoy cabe entender que todos los sistemas tiene una ventaja y una falencia ante los otros…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="me-estas-diciendo-que-no-odias-a-windows-y-a-macos"&gt;
¿Me estas diciendo que no odias a Windows y a MacOS?
&lt;a href="#me-estas-diciendo-que-no-odias-a-windows-y-a-macos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente eso dije… Me di cuenta que mi amor es a la tecnología, y si bien no tengo mucho interez en Windows y no me gustan muchas cosas tampoco quiero dejarlo fuera como si no fuese nada, Por ahi algun dia tenga que usarlo para jugar un juego y seria hipocrita tirarle mierda, O quien dice si algun dia veo la necesidad de comprar un dispositivo de Apple para poder compilar apps para sus iPhone. O porque no algun dia este blog cuente sobre &lt;em&gt;“Como … En Windows”&lt;/em&gt; o &lt;em&gt;“Como … en MacOS”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;El conocimiento es conocimiento en sí y queremos abarcar la tecnología, Los sistemas operativos son simples &lt;strong&gt;herramientas&lt;/strong&gt; y si bien podemos tener nuestra preferida (la navaja suiza linuxera) no implica que debemos ignorar todas las demás porque en algún momento pueden servir…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="y-los-que-solo-usamos-software-libre"&gt;
¿Y los que solo usamos software libre?
&lt;a href="#y-los-que-solo-usamos-software-libre" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/dddd8d/react/450_1000.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Para vos que solamente usas software libre también va este discurso, por que no solo son esos 3 sistemas (que son los más populares) Existen otros sistemas que son libre y que deberías tener en cuenta en algún momento (BDS, ReactOS, Haiku, etc.)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ser-y-dejar-ser"&gt;
Ser y dejar ser
&lt;a href="#ser-y-dejar-ser" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i2.wp.com/www.reefviews.com/wp-content/uploads/2017/03/libertad-ser-humano.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Claramente esto no implica que todos debamos tener todos los sistemas operativos instalados, pero sí implica tener tolerancia, y esta publicación empuja a eso, tolerancia… En nuestra comunidad de Telegram apoyamos a todos los usuarios sin importar si usan Windows, Mac, ReactOS o lo que sea, siempre intentamos ayudar y aprender. Lo mismo implica para esos que dicen &lt;strong&gt;“Si usas ubuntu no te ayudo”&lt;/strong&gt; (claramente eso va apuntado a mi que cuando me dicen que usan ubuntu y tienen bugs les recomiendo pasar a debian) Porque estamos acá por amor a la tecnología y debemos respetar y colaborar con todos&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="tu-turno"&gt;
Tu turno!
&lt;a href="#tu-turno" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente esta publicación puede sonar polémica ante muchas personas y no quiero ser de los que solo exponen su idea, Comentanos, decinos qué pensas ya que todos tienen su lugar en nuestra comunidad&lt;/p&gt;</description></item><item><title>GameMode en Linux</title><link>https://patojad.com.ar/post/2020/08/gamemode-en-linux/</link><pubDate>Wed, 05 Aug 2020 09:17:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/08/gamemode-en-linux/</guid><description>&lt;p&gt;Yo recordaba con anterioridad haber hablado de esto, sin embargo no encontre registro en el blog de esto, por lo cual estimo que fue en mi periodo como fundador de LatinLinux. Ayer por la noche estaba mirando un hermoso stremeng de nuestro gran amigo Linux Gaming Español y se mencionó el mítico GameMode de linux para mejorar el rendimiento…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="que-es-gamemode"&gt;
¿Que es GameMode?
&lt;a href="#que-es-gamemode" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.profesionalreview.com/wp-content/uploads/2018/04/GameMode-mejora-el-rendimiento-de-los-juegos-en-Linux-1.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Básicamente es una herramienta que realiza modificaciones de configuración temporales para poder obtener un mejor rendimiento de los videojuegos en linux. Lo cual nos permite disfrutar de una mejor experiencia sin modificar kernel ni agregar adicionales. Entre las mejoras que podemos encontrar se recalcan las siguientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cambiar el gobernador de la CPU.&lt;/li&gt;
&lt;li&gt;Prioridad de O/I.&lt;/li&gt;
&lt;li&gt;Programador de kernel (SCHED_ISO).&lt;/li&gt;
&lt;li&gt;Protector de pantalla inhibido&lt;/li&gt;
&lt;li&gt;Modo de rendimiento de GPU (NVIDIA y AMD), overclocking de GPU (NVIDIA),&lt;/li&gt;
&lt;li&gt;Scripts personalizados.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este maravilloso programa se encuentra para todas las distribuciones de linux y en esta oportunidad vamos a intentar generalizar la instalación.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¡ATENCIÓN! - Este sistemita depende fielmente de systemD para iniciar. De momento no intente portearlo ni usarlo en distros sin systemd con capa de compatibilidad (cómo MX)&lt;/strong&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="no-es-lo-mismo-que-hace-liquorix-y-xanmod"&gt;
¿No es lo mismo que hace Liquorix y Xanmod?
&lt;a href="#no-es-lo-mismo-que-hace-liquorix-y-xanmod" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La respuesta corta es, si, la diferencia es que GameMode solo selecciona esas configuraciones mientras estamos jugando y el resto del rato tenemos nuestro kernel en estado normal o como viene por defecto.&lt;/p&gt;
&lt;p&gt;Sin embargo cabe recalcar que pueden ser utilizados en conjunto, y no genera conflictos. Los kernels, a diferencia de GameMode, están pensado para todos los usos del dia a dia, por lo cual el GameMode cambiara esas configs que para que en dicho momento funcione pura y exclusivamente como plataforma de juegos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="como-lo-instalo"&gt;
¿Como lo instalo?
&lt;a href="#como-lo-instalo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para instalarlo basta con instalar las dependencias dependiendo de qué base tenemos, a continuación dejo las genéricas que suelen faltar (puede que te falte una más pero eso lo notarás al momento de compilar, ahi te marcara que es lo que falta)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debian y derivados:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install meson libsystemd-dev pkg-config ninja-build git libdbus-1-dev dbus-user-session
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Arch y derivados&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -S meson systemd git dbus
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Fedora y derivados&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo dnf install meson systemd-devel pkg-config git dbus-devel
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Gentoo&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;emerge --ask games-util/gamemode
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una vez que las dependencias estén instaladas podemos proceder a instalar de su propio git la herramienta para comenzar a utilizarla.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /tmp/
git clone https://github.com/FeralInteractive/gamemode.git
cd gamemode
git checkout 1.5
./bootstrap.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como podemos ver clonamos el repositorio en la carpeta tmp (archivos temporales) y luego hacemos un checkout a la 1.5 (Si bien al actual es 1.5.1 dio errores al compilar, y no tiene cambios significativos) Y luego ejecutamos ./bootstrap.sh que nos permite realizar la instalacion mediante este script.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="como-lo-uso"&gt;
¿Como lo uso?
&lt;a href="#como-lo-uso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Lo bueno de esto es que también es muy simple de utilizar y vamos a ver 2 ejemplos de uso que desde mi punto de vista son “los más usados” uno con los juegos nativos y otro mediante steam.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="juegos-nativos"&gt;
Juegos nativos
&lt;a href="#juegos-nativos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La mayoría de los juegos nativos podemos ejecutarlos por la terminal, por lo cual como primera instancia bastaría con ejecutarlo por la terminal de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gamemoderun supertuxkart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si concluimos con que queremos tenerlo un poco más “automático” bastará con editar el lanzador del menú y modificar el comando agregandolo el gamemoderun anteriormente. De esta forma vamos a tener el GameMode tambien ejecutandolo desde el menú&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="steam-y-gamemode"&gt;
Steam y GameMode
&lt;a href="#steam-y-gamemode" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Como dije antes para &lt;strong&gt;Steam&lt;/strong&gt; también podemos activarlo y en este caso voy a explicar el paso a paso para evitar errores.&lt;/p&gt;
&lt;p&gt;Lo primero que debemos hacer es ir a la Biblioteca y buscar el juego al cual queremos optimizar (recordemos que el mismo deberá estar instalado) Una vez que lo encontramos le damos click derecho e ingresamos en las propiedades&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/k5QnDL0X/Screenshot-20200805-091858.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En esa ventana emergente que nos ejecuto vamos a seleccionar &lt;strong&gt;DEFINIR PARÁMETROS DE LANZAMIENTO&amp;hellip;&lt;/strong&gt; que nos volverá abrir una ventana emergente…&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/3R9YFmrs/Screenshot-20200805-092007.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En esta ventana vamos a agregar el comando tal cual lo podemos ver en la parte de abajo, es importante que no te olvides de ninguna parte del mismo (en el caso de que ya hayas editado esto es posible mezclar configuraciones)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gamemoderun %command%
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/9Mcc9J2P/Screenshot-20200805-092039.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Una vez agregado basta con guardarlo y ya podemos iniciar el juego desde steam que va a iniciar con GameMode. (Las imagenes se pueden ver diferentes dado que uso una Skin para Steam)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cosas-raras"&gt;
Cosas raras
&lt;a href="#cosas-raras" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A mi al ejecutar el juego se me pega un toque pero despues de unos segundos va “con de todo” por lo cual puedo asumir que tiene que ver con los cambios de configuraciones que realiza el GameMode&lt;/p&gt;
&lt;p&gt;Ahora contanos vos ¿Lo Usaste? ¿Que te pareció? ¿Notaste una mejora?&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Review MilagrOS</title><link>https://patojad.com.ar/post/2020/08/review-milagros/</link><pubDate>Tue, 04 Aug 2020 08:43:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/08/review-milagros/</guid><description>&lt;p&gt;Ya con anterioridad hablamos de esta &lt;a href="https://patojad.com.ar/instalaciones/2020/06/instalcion-milagros/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
hermosa distribucion y mostramos el paso a paso de su instalación
&lt;/a&gt;. Hoy venimos a completar o a sumar un poco desde mi punto de vista persona comentando que pienso yo de esta distribución.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="review"&gt;
Review
&lt;a href="#review" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Recuerden que esto es meramente mi opinión y siempre trato de que sea constructiva para poder ver en que mejorarla desde mi punto de vista (puede ser válido o no conforme a lo que busque la distro)&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/FOTre6B8LUw?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Desde ya quiero agradecer a LPI del &lt;a href="https://proyectotictac.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Proyecto TicTac
&lt;/a&gt; por siempre dar una mano!&lt;/p&gt;</description></item><item><title>¿Porque ya no amo Gnome?</title><link>https://patojad.com.ar/post/2020/07/porque-ya-no-amo-gnome/</link><pubDate>Fri, 31 Jul 2020 12:02:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/porque-ya-no-amo-gnome/</guid><description>&lt;p&gt;Cuando inicie en el mundo linux lo hice con MATE un hermoso escritorio Argentino, sin embargo luego conocí Gnome quien fue tal vez el escritorio que mas ame en ese momento (incluso KDE no me gustaba)&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://huayra.conectarigualdad.gob.ar/img/screens/3.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Sin embargo como ya muchos me conocen hoy en dia intento evitar Gnome desktop y hoy voy a hablar un poco más sobre esto!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="del-odio-al-amor-kde"&gt;
Del odio al amor (KDE)
&lt;a href="#del-odio-al-amor-kde" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://kde.org/content/home/kde-main.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Como mencione antes KDE fue un escritorio que no me gusto para nada al inicio, por lo cual lo evite muchísimo tiempo. Pero debemos admitir que KDE hizo un enorme trabajo para mejorar y hoy es un escritorio completo, lindo, personalizable, fluido y liviano (seamos realista es muy liviano para todo lo que ofrece)&lt;/p&gt;
&lt;p&gt;Este escritorio se &amp;ldquo;arruinó&amp;rdquo; con la versión 4 pero aprendieron de sus errores y plasma nos dieron uno de los mejores escritorios de la actualidad. Y con eso su comunidad creció mucho y se ganó un gran lugar entre los desktop elegidos&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="del-amor-al-odio-gnome"&gt;
Del amor al odio (Gnome)
&lt;a href="#del-amor-al-odio-gnome" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://ubunlog.com/wp-content/uploads/2019/03/gnome-3.32-nuevos-iconos-830x467.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Sin embargo gnome tomó el camino opuesto&amp;hellip; Si bien se supone que intentan mejorar dia a dia cada versión no deja de ser más de lo mismo. El consumo de ram (si bien no es mucho para los equipos actuales) es muy elevado para ser solo un escritorio. Incluso más sabiendo que la gran parte de la personalización son de plugins externos y no nativos como por ejemplo KDE&lt;/p&gt;
&lt;p&gt;Sin embargo eso no quiere decir que no lo recomiende o no lo use, creo que Gnome tiene un gran camino por delante y puede hacer grandes cosas, simplemente debería volver a escuchar a la comunidad y no tanto a las empresas&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-recomendación"&gt;
Mi recomendación
&lt;a href="#mi-recomendaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Sabemos que siempre las recomendaciones tiene que ver con lo que uno quiere o le gusta, y no suelen ser muy objetivas pero voy a ir intentando que no se noten los fanatismos&amp;hellip;&lt;/p&gt;
&lt;p&gt;Si te gusta el blur y las transparencias entonces KDE es tu mejor opción, tiende a ser mucho más fácil de lograr estos efectos y las comunidades vienen trabajando mucho por estas cosas, también tiene un ecosistema mucho más completo e integrado, en particular esta bueno para ofrecerles a quienes arrancan y quieren todo configurado&amp;hellip;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ytimg.com/vi/86ro5Q0Fi34/maxresdefault.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si te gusta la integración de apps de 3ros entonces te recomiendo Gnome, la mayorías de las apps están hechas con GTK y gracias a esto es fácil de integrar las apps de terceros con los themes que pongamos e instalamos. También es más fácil de editar los temas porque basta con saber un poco de &lt;a href="https://patojad.com.ar/post/2023/08/descubriendo-el-mundo-de-css/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
CSS
&lt;/a&gt; (sin embargo te recomiendo ir sobrado de recursos para evitar que se pegue, 8gb de ram por ejemplo y un procesador que no sea tan viejo)&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.redd.it/uk9uihckcsd41.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si vos queres algo altamente liviano y fluido entonces mate es tu mejor opción, se integra con la casi todos los themes de gnome y es muy rápido. En lo personal creo que me gusta porque fue mi primer escritorio&amp;hellip;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.imgur.com/Q5L9GDc.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>Lo malo de GNU/Linux 2006</title><link>https://patojad.com.ar/post/2020/07/lo-malo-de-gnu-linux-2006/</link><pubDate>Tue, 28 Jul 2020 09:47:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/lo-malo-de-gnu-linux-2006/</guid><description>&lt;p&gt;Navegando por internet siempre me gusta curiosear sobre linux, y de navegar un poco llegue a un artículo escrito en 2006 el cual reclutaba un top 10 motivos por el cual no utilizar GNU/Linux.&lt;/p&gt;
&lt;p&gt;Este artículo puede parecer viejo y obsoleto sin embargo como se dice comúnmente &lt;em&gt;la basura de uno, es el tesoro de otro&lt;/em&gt; y este mismo artículo añejado fue motivación para tomarnos un momento de refleccion.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-avance-de-linux"&gt;
El avance de linux
&lt;a href="#el-avance-de-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como podemos ver en el video decido abordar esta publicación para, de alguna forma, medir el avance de linux en 14 años, y poder ver cómo se van supliendo algunas necesidades.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/SltqY91fa00?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Es increible como esto parece ser obsoleto después de tanto tiempo y como fueron migrando algunas necesidades y se fueron supliendo otras. También podemos apreciar como cosas que antes eran lo peor hoy pueden ser mejor que en otras distros&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="los-10-motivos-para-no-usar-linux"&gt;
Los 10 motivos para no usar linux
&lt;a href="#los-10-motivos-para-no-usar-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Por si te interesa ver literalmente la cantidad de votos y lo que se comento te dejo a continuación citadas las 10 razones que volvían a linux un sistema poco elegido para el 2006.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;1. Lo peor de Linux: La instalación de Aplicaciones&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Con un total de 64 votos, la instalación de programas en Linux parece ser su mayor mal. La gente menciona problemas con la diversidad de distribuciones, problemas de librerías, dependencias, conflictos con versiones, sistemas de instalación de paquetes rústicos, problemas de compilación, etc.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Acaso hoy es tan complejo instalar apps?¿Qué soluciones les propondrías hoy a quienes dijeron esto?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2. Falta de drivers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Con un total de 40 votos, la falta de drivers se ubica en la segunda posición. Es de público conocimiento de que no todos los dispositivos están disponibles en Linux. Pero aún cuando existiese algún driver, las personas tienen problemas en encontrar la versión que corresponde a la distribución que están usando.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Que tanta ausencia de drivers existe hoy?¿Qué recomendarías a quien mencione esto?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;3. Carencia de un estándar&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;26 votos sugieren que la diversidad, en muchos casos puede ser un verdadero problema. Las personas sugirieron que cuando se acostumbraron a una distribución, la próxima versión es totalmente diferente. O cuando cambian de distribución, los archivos están almacenados en otras ubicaciones, etc. Casi todos los votantes sugieren que las diferencias en la interfaz, diferencias en la disponibilidad de los comandos y las diferencias en la configuración de las aplicaciones dificultan el aprendizaje de éste sistema operativo.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Existe hoy uno?¿Es necesario que exista?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;4. Problemas para configurar el Módem / Winmodem&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Con 22 votos, este es el dispositivo más complicado de configurar en Linux. Los votantes sugieren la falta de drivers, o la falta de actualización de los mismos para que funcionen en nuevas distribuciones.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Tenes un Modem on Winmodem?¿Podes usarlo en linux?¿Tenes que hacer magia oscura?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;5. Linux es lento&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;21 votos mencionan que Linux es mucho más lento que Windows XP en sus equipos.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Como consideras hoy en día la velocidad de linux?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;6. Falta &amp;ldquo;X&amp;rdquo; Aplicación&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;17 votos mencionan la falta de disponibilidad de aplicaciones para Linux. Particularmente se destacan la falta de aplicaciones para usar en el ámbito de diseño web, producción sonora, diseño gráfico, etc. También hubo muchos comentarios del tipo &amp;ldquo;faltan buenos juegos para Linux&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Cuales apps faltan?¿Qué es lo que NO se puede hacer en linux?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;7. La interfaz visual tiene carencias&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Con 14 votos, problemas en las interfaces visuales más populares como GNOME y KDE se ubican en la séptima posición. Problemas de usabilidad, gestión de las ventanas, etc. aparecen en las descripciones de los usuarios. Muchas personas se quejan de que &amp;ldquo;Linux no ordena los iconos automáticamente!&amp;rdquo; (!?)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Cuales son desde tu punto de vista las carencias de las interfaces visuales?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;8. Problemas para configurar la impresora / hardware nuevo&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Empate de 13 votos. La impresora aparece como el segundo dispositivo más difícil de configurar en Linux. Otros 13 votos sugieren que el &amp;ldquo;hardware nuevo&amp;rdquo; (sintonizadoras de TV USB, placas de audio USB/Firewire,etc.) es prácticamente imposible de configurar en Linux.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Contanos qué impresora o Hardware te hizo la vida imposible!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;9. Linux se ve &amp;ldquo;feo&amp;rdquo; / &amp;ldquo;es dificil de usar&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Otro empate. 11 votos sugieren que Linux se ve &amp;ldquo;feo&amp;rdquo; comparado con otros sistemas operativos. Otros 11 votos sugieren que simplemente &amp;ldquo;es más difícil de usar que Windows&amp;rdquo; sin dar demasiadas explicaciones de porque.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mandanos esas fotos de tu linux tan hermoso!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;10. Problemas para configurar el escáner / Sistema de archivos complicado&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Un último empate, esta vez con 10 votos. El escáner parece ser otro de los dispositivos más difíciles de configurar en Linux. Finalmente, 10 votos sugieren que el sistema de archivos de Linux es &amp;ldquo;demasiado complicado&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Es complejo el sistema de archivos?¿Tienes porblemas con tu escáner?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Finalmente, debemos destacar que no todos enviaron su &amp;ldquo;Top 5&amp;rdquo;. Algunos enviaron un mail con solo un voto/sugerencia. Por eso, el total de sugerencias recibidas es de 375.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;No te olvides de mandarnos tu respuestas para saber qué opina la comunidad y poder enriquecer un poco más todo esto!&lt;/p&gt;
&lt;p&gt;Fuente: &lt;a href="http://lomalodelinux.blogspot.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
http://lomalodelinux.blogspot.com/
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Preparandose para explorar el sistema</title><link>https://patojad.com.ar/post/2020/07/preparandose-para-explorar-el-sistema/</link><pubDate>Fri, 24 Jul 2020 09:38:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/preparandose-para-explorar-el-sistema/</guid><description>&lt;p&gt;Ahora que sabemos cómo movernos por el sistema de archivos, es hora de realizar una visita guiada por nuestro sistema GNU/Linux. Sin embargo, antes de empezar, vamos a aprender algunos comandos más que serán útiles en nuestro viaje:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ls&lt;/strong&gt; – Lista los contenidos de un directorio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;file&lt;/strong&gt; – Muestra el tipo de archivo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;less&lt;/strong&gt; – Muestra el contenido del archivo&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="averiguando-el-tipo-de-archivo-con-file"&gt;
Averiguando el tipo de archivo con file
&lt;a href="#averiguando-el-tipo-de-archivo-con-file" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Al explorar el sistema será útil saber qué contienen los archivos. Para hacerlo utilizaremos el comando &lt;em&gt;file&lt;/em&gt; para determinar el tipo de archivo. Como vimos antes, los nombres de archivo en Linux no necesitan reflejar el contenido del archivo. Mientras que un nombre de archivo como “picture.jpg” se espera que contenga una imagen comprimida JPEG, esto no tiene por qué ser así en Linux. Podemos invocar el comando file de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;file nombre_del_archivo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cuando se invoca, el comando file mostrará una breve descripción del contenido del archivo. Por ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;file lince.jpg
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Genera una salida como la siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;lince.jpg: JPEG image data, JFIF standard 1.01
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/fLFKNtNs/Screenshot-20200724-092502.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Hay muchos tipos de archivos. De hecho, una de las ideas comunes en los sistemas operativos tipo Unix, como es Linux, es que &lt;strong&gt;“todo es un archivo”&lt;/strong&gt;. Mientras que muchos de los archivos en tu sistema son familiares, por ejemplo MP3 y JPEG, hay otros muchos que son un poco menos obvios y algunos que son un poco raros.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="viendo-el-contenido-de-un-archivo-con-less"&gt;
Viendo el contenido de un archivo con less
&lt;a href="#viendo-el-contenido-de-un-archivo-con-less" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El comando less es un programa para ver archivos de texto. En nuestro sistema Linux, hay muchos archivos que contienen texto legible por humanos. El programa less proporciona una forma adecuada para examinarlos.&lt;/p&gt;
&lt;p&gt;¿Para qué querríamos examinar archivos de texto? Porque muchos de los archivos que contienen la configuración del sistema (llamados archivos de configuración) están almacenados en este formato, y ser capaces de leerlos nos permite ver cómo funciona el sistema por dentro. Además, muchos de los programas que el sistema utiliza (llamados scripts) están almacenados en este formato. En capítulos posteriores, aprenderemos cómo editar archivos de texto para modificar configuraciones del sistema y escribiremos nuestros propios scripts, pero por ahora sólo veremos su contenido.&lt;/p&gt;
&lt;p&gt;El comando less se usa de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;less nombre_del_archivo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una vez ejecutado, el programa less nos permite desplazarnos arriba y abajo a través de un archivo de texto. Por ejemplo, para examinar el archivo que define todas las cuentas de usuario del sistema, usamos el siguiente comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;less /etc/passwd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/D0XcyvvX/Screenshot-20200724-092653.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Una vez que el programa less arranca, podemos ver el contenido del archivo. Si el archivo ocupa más de una página, podemos desplazarnos arriba y abajo. Para salir de less, pulsamos la tecla “q”.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="menos-es-más-less-is-more"&gt;
Menos es Más (Less is More)
&lt;a href="#menos-es-m%c3%a1s-less-is-more" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El programa less fue diseñado como un reemplazo mejorado de un programa anterior de Unix llamado more. El nombre &amp;ldquo;less&amp;rdquo; viene de un juego de palabras “menos es mas – less is more” - un lema de los arquitectos y diseñadores modernistas.&lt;/p&gt;
&lt;p&gt;less entra en la clase de programas llamados “paginadores”, que permiten ver fácilmente documentos de texto largos en forma de páginas. Mientras que el programa more sólo permitía avanzar páginas, el programa less permite avanzar y retroceder por las páginas y cuenta también con otras características.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>¿No se puede o no se hace?</title><link>https://patojad.com.ar/post/2020/07/no-se-puede-o-no-se-hace/</link><pubDate>Fri, 17 Jul 2020 08:40:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/no-se-puede-o-no-se-hace/</guid><description>&lt;p&gt;En esta oportunidad vamos a volver a hablar o comentar un video de nuestro amigo Zatiel. Antes que nada te recomiendo ver el video completo de Zatiel para que puedas entender su punto de vista y apreciar su video. Una vez que veamos esto va a ser más fácil seguir!&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/5DagExGuWZ4?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Quiero aclarar que no tengo ningún tipo de problema con zatiel e incluso creo que es un gran Linuxtuber y se esfuerza siempre en dar videos en cantidad y calidad lo cual muchos que intentamos ingresar en este mundo no podemos&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="respuesta"&gt;
Respuesta
&lt;a href="#respuesta" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En esta oportunidad vamos a ir respondiendo a medida que vemos el video, dinamica bastante util para no perderse…&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/i3cmsvrOI2w?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;En esta oportunidad la idea es diferenciar como primordial que linux si es un sistema que está preparado para todo. Y el gran problema se debe a que muchas cosas no se hacen (ya sea porque no hay desarrolladores a los que le interese o porque nadie se imagino como sacar dinero con eso)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="a-tener-en-cuenta"&gt;
A tener en cuenta
&lt;a href="#a-tener-en-cuenta" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Yo soy partidario de muchas cosas que presentan su antagónico en el video de nuestro amigo, por lo cual puede que mi punto de vista sea obnubilado por esta posturas y las voy a detallar acá:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2020/07/se-puede-jugar-en-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Se puede jugar en linux
&lt;/a&gt; y no requieres una master race.&lt;/li&gt;
&lt;li&gt;Los programas tienen que cumplir su funcionalidad y nada más&lt;/li&gt;
&lt;li&gt;No porque haya recursos significa que sea necesario consumirlos (apuntando a los malos hábitos de programación solo porque los equipos son más potentes, desaparovechandolos y bajando la performance que deberían tener)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Puede que mis ideas sean un tanto “extremistas” en algun punto (mas hablando de la última) pero no siento que sea correcto hacer las cosas mal para que sea problema del otro…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¡No te olvides de comentarnos qué te parece a vos!&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Más diversión con ls</title><link>https://patojad.com.ar/post/2020/07/m%C3%A1s-diversi%C3%B3n-con-ls/</link><pubDate>Wed, 15 Jul 2020 09:17:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/m%C3%A1s-diversi%C3%B3n-con-ls/</guid><description>&lt;p&gt;El comando ls es &lt;em&gt;probablemente el más usado&lt;/em&gt;, y por una buena razón. Con él, podemos ver los contenidos de un directorio y determinar varios atributos importantes de los archivos y directorios. Como hemos visto, podemos usar simplemente ls para ver una lista de los archivos y subdirectorios contenidos en el directorio de trabajo actual:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;obteniendo una salida&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Desktop Documents Music Pictures Public Templates Videos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Además del directorio de trabajo actual, podemos especificar el directorio a listar, de esta forma:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls /usr&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;obteniendo una salida&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin games kerberos libexec sbin src
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;etc include lib &lt;span class="nb"&gt;local&lt;/span&gt; share tmp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;O incluso especificar múltiples directorios. En este ejemplo listaremos el directorio home del usuario (simbolizado por el carácter “~”) y el directorio /usr:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls ~ /usr&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;obteniendo una salida&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/pato:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Desktop Documents Music Pictures Public Templates Videos
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/usr:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin games kerberos libexec sbin src
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;etc include lib &lt;span class="nb"&gt;local&lt;/span&gt; share tmp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;También podemos cambiar el formato de la salida para que nos muestre más detalles:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls -l&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;con una salida&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;total &lt;span class="m"&gt;56&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxrwxr-x &lt;span class="m"&gt;2&lt;/span&gt; me me &lt;span class="m"&gt;4096&lt;/span&gt; 2007-10-26 17:20 Desktop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxrwxr-x &lt;span class="m"&gt;2&lt;/span&gt; me me &lt;span class="m"&gt;4096&lt;/span&gt; 2007-10-26 17:20 Documents
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxrwxr-x &lt;span class="m"&gt;2&lt;/span&gt; me me &lt;span class="m"&gt;4096&lt;/span&gt; 2007-10-26 17:20 Music
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxrwxr-x &lt;span class="m"&gt;2&lt;/span&gt; me me &lt;span class="m"&gt;4096&lt;/span&gt; 2007-10-26 17:20 Pictures
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxrwxr-x &lt;span class="m"&gt;2&lt;/span&gt; me me &lt;span class="m"&gt;4096&lt;/span&gt; 2007-10-26 17:20 Public
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxrwxr-x &lt;span class="m"&gt;2&lt;/span&gt; me me &lt;span class="m"&gt;4096&lt;/span&gt; 2007-10-26 17:20 Templates
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;drwxrwxr-x &lt;span class="m"&gt;2&lt;/span&gt; me me &lt;span class="m"&gt;4096&lt;/span&gt; 2007-10-26 17:20 Videos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Añadiendo “-l” al comando, cambiamos la salida al formato largo.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Kz0rYX84/Screenshot-20200715-084652.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="opciones-y-argumentos"&gt;
Opciones y argumentos
&lt;a href="#opciones-y-argumentos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Esto nos ofrece un aspecto muy importante sobre cómo funcionan la mayoría de los comandos. A los comandos, a menudo, le siguen una o más opciones que modifican su comportamiento, y adicionalmente, uno o más argumentos, los elementos sobre los que el comando actúa. Así que la mayoría de los comandos se muestran así:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;comando -opciones argumentos&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;La mayoría de los comandos usan opciones que consisten en un sólo carácter precedido por un guión, por ejemplo, “-l”, pero muchos comandos, incluidos los del Proyecto GNU, también soportan opciones largas, consistentes en una palabra precedida por dos guiones. Además, muchos comandos permiten múltiples opciones cortas enlazadas. En este ejemplo, al comando ls se le han dado dos opciones, la opción “l” para mostrar la salida en formato largo, y la opción “t” para ordenar el resultado por la fecha de modificación de los archivos.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls -lt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Añadiremos la opción larga “&amp;ndash;reverse” para invertir el orden de la lista:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls -lt --reverse&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Fíjate que las opciones de los comandos, como los nombres de archivo en Linux, distinguen entre mayúsculas y minúsculas.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/4NqPtTb9/Screenshot-20200715-084749.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El comando ls tiene un gran número de posibles opciones. Las más comunes están listadas a continuación.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-a &amp;ndash;all&lt;/strong&gt; Lista todos los archivos, incluso aquellos cuyo nombre empieza con un punto, que normalmente no se listan (es decir, ocultos).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-A &amp;ndash;almost-all&lt;/strong&gt; Como la opción -a anterior, salvo que no lista . (el directorio actual) y .. (el directorio padre).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-d &amp;ndash;directory&lt;/strong&gt; Por lo general, si especificamos un directorio, ls listará los contenidos del directorio y no el directorio en sí. Usa esta opción junto con la opción -l para ver detalles del directorio en lugar de su contenido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-F &amp;ndash;classify&lt;/strong&gt; Esta opción añadirá un carácter indicador al final de cada nombre listado. Por ejemplo, una “/” es que el nombre es un directorio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-h &amp;ndash;human-readable&lt;/strong&gt; En los listados en formato largo, muestra el tamaño de los archivos en un formato comprensible, en lugar de en bytes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-l&lt;/strong&gt; Muestra los resultados en formato largo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-r &amp;ndash;reverse&lt;/strong&gt; Muestra los resultados en orden inverso. Normalmente, ls muestra los resultados en orden alfabético ascendente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-S&lt;/strong&gt; Ordena los resultados por tamaño.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-t&lt;/strong&gt; Ordena por la fecha de modificación.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="un-vistazo-más-profundo-al-formato-largo"&gt;
Un vistazo más profundo al formato largo
&lt;a href="#un-vistazo-m%c3%a1s-profundo-al-formato-largo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como vimos antes, la opción “-l” hace que ls muestre sus resultados en formato largo. Este formato contiene gran cantidad de información útil. Aquí está el directorio Examples de un sistema Ubuntu:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r-- &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;3576296&lt;/span&gt; 2007-04-03 11:05 Experience patojad.ogg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r-- &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;1186219&lt;/span&gt; 2007-04-03 11:05 patojad-leaflet.png
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r-- &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;47584&lt;/span&gt; 2007-04-03 11:05 logo-LynxOS.png
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r-- &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;44355&lt;/span&gt; 2007-04-03 11:05 logo-PatoJAD.png
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r-- &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;34391&lt;/span&gt; 2007-04-03 11:05 logo-Antix.png
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r-- &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;32059&lt;/span&gt; 2007-04-03 11:05 oo-cd-cover.odf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r-- &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;159744&lt;/span&gt; 2007-04-03 11:05 oo-derivatives.doc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r-- &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;27837&lt;/span&gt; 2007-04-03 11:05 oo-maxwell.odt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r-- &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;98816&lt;/span&gt; 2007-04-03 11:05 oo-trig.xls
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r-- &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;453764&lt;/span&gt; 2007-04-03 11:05 oo-welcome.odt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r-- &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;358374&lt;/span&gt; 2007-04-03 11:05 patojad Sax.ogg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Veamos los diferentes campos de uno de los archivos y examinemos su significado:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-rw-r&amp;ndash;r&amp;ndash;&lt;/strong&gt; Permisos de acceso al archivo. El primer carácter indica el tipo de archivo. Entre los diferentes tipos, un guión al principio significa un archivo normal, mientras que una “d” indica un directorio. Los siguientes tres caracteres son los permisos de acceso para el propietario del archivo, los tres siguientes los de los miembros del grupo del archivo, y lo tres últimos los del resto de usuarios. El significado completo de esto lo trataremos en el Capítulo 9 – Permisos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1&lt;/strong&gt; Número de enlaces fuertes del archivo. Veremos el tema de los enlaces más adelante.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;root&lt;/strong&gt; El nombre del propietario del archivo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;root&lt;/strong&gt; El nombre del grupo propietario del archivo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;32059&lt;/strong&gt; Tamaño del archivo en bytes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2007-04-03 11:05&lt;/strong&gt; Fecha y hora de la última modificación del archivo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;oo-cd-cover.odf&lt;/strong&gt; Nombre del archivo.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Crea tus .deb con Checkinstall</title><link>https://patojad.com.ar/post/2020/07/crea-tus-.deb-con-checkinstall/</link><pubDate>Tue, 14 Jul 2020 09:05:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/crea-tus-.deb-con-checkinstall/</guid><description>&lt;p&gt;En esta oportunidad vamos a ver como generar un deb utilizando &lt;strong&gt;checkinstall&lt;/strong&gt; en el proceso de compilación. Esto es extremadamente útil para los usuarios que acostumbramos compilar algunas piezas de software que no se encuentran en deb, nos permite generar nuestros propios debs para simplificar el proceso a futuro&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="recomendaciones"&gt;
Recomendaciones
&lt;a href="#recomendaciones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien no soy nadie para decir que hacer siempre recomiendo seguir un hilo para facilitar el aprendizaje… Por esto mismo recomiendo ver la publicación anterior y entender como funciona eso antes de seguir dado que esta oportunidad entiendo que esos conocimientos ya estan y avanzo un poco más rápido para evitar alargar el video (saben que me gusta conciso y útil)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="preparando-tu-equipo"&gt;
Preparando tu equipo
&lt;a href="#preparando-tu-equipo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente este proceso es un poco más complejo que lo vimos anteriormente usando dpkg, dado que ahora no solo vamos a empaquetar sino que también vamos a compilar. Recomiendo arrancar con programas realmente pequeños e ir aumentando la complejidad de a poco. En líneas generales vamos a tener 2 dependencias &lt;strong&gt;siempre&lt;/strong&gt; que las vamos a instalar así:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install checkinstall make&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Uno es para compilar y el otro para generar el deb. Sin embargo siempre debemos leer la documentación del proyecto que queramos compilar para poder entender qué dependencias tiene adicionales a esta e instalarlas antes de iniciar el proceso y así evitar errores.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="generando-el-deb"&gt;
Generando el deb
&lt;a href="#generando-el-deb" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En este caso no voy a explicar cómo compilar sino que voy a explicar como generar el deb por lo cual la compilación corre por cuenta de uno (leer la documentacion de git básicamente)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comandos"&gt;
Comandos
&lt;a href="#comandos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El único comando que nos importa o mejor dicho que le da relevancia al tutorial que vemos aquí que es simplemente el siguiente&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo checkinstall --install&lt;span class="o"&gt;=&lt;/span&gt;no&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;El install=no puede omitirse si queremos que aparte de generar el deb se instale el programa en nuestra distro, sin embargo recomiendo evitarlo e instalarlo desde el deb que generamos para probar que funcione correctamente.&lt;/p&gt;
&lt;p&gt;No te olvides de comentarnos qué te parece y preguntarnos tus dudas en nuestro canal de Telegram.&lt;/p&gt;</description></item><item><title>Conectarse al WiFi desde la Terminal</title><link>https://patojad.com.ar/post/2020/07/conectarse-al-wifi-desde-la-terminal/</link><pubDate>Mon, 13 Jul 2020 09:41:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/conectarse-al-wifi-desde-la-terminal/</guid><description>&lt;p&gt;Seguimos trabajando para que no le tengas miedo a la hermosa terminal que tenemos, por eso en esta oportunidad vamos a ver como se puede conectar al wifi utilizando la terminal. Esto es importante porque muchas veces queremos instalar una distro core o net y no tenemos un cable de red a mano, ahora no va a ser problema, porque la terminal nos va a permitir conectarnos al wifi sin más&amp;hellip;&lt;/p&gt;
&lt;p&gt;El procedimiento para conectarte a una red Wifi usando la terminal, que vamos a ver a continuación, puede ser aplicado tanto para redes con seguridad &lt;strong&gt;WEP&lt;/strong&gt; como &lt;strong&gt;WPA&lt;/strong&gt;, es independiente de la distro en la que estemos en ese momento y funciona con cualquier tarjeta de red (siempre y cuando el sistema la reconozca, es decir que si es privativa debemos instalar los drivers).&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="breve-presentación"&gt;
Breve presentación.
&lt;a href="#breve-presentaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Es importante destacar que las herramientas para este procedimiento se encuentran instaladas por defecto en la mayoría de las distros actuales (pero nunca está de mas chequear que se encuentren correctamente instaladas), y suelen utilizarse de la siguiente manera:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;iwconfig&lt;/strong&gt;: Nos permite ver y configurar los parámetros de una interfaz de red inalámbrica.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ifconfig&lt;/strong&gt;: Nos permite encender el dispositivo inalámbrico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;iwlist&lt;/strong&gt;: Se obtiene información detallada de las redes inalámbricas disponibles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;nmcli&lt;/strong&gt;: Nos permite controlar NetworkManager y reportar el estado de la red, brindándonos la posibilidad de crear, mostrar, editar, eliminar, activar y desactivar las conexiones de red.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para conocer a detalle la sintaxis y el uso de cada uno de estos comandos podemos ejecutar el comando acompañado del argumento de ayuda, o bien &lt;a href="https://patojad.com.ar/post/2019/01/man-tu-manual-para-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
utilizar man como ya vimos antes en el blog
&lt;/a&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conectandonos"&gt;
Conectandonos
&lt;a href="#conectandonos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Lo primero que debemos hacer para conectarnos a cualquier red Wifi usando el terminal es identificar el nombre de la tarjeta de red de nuestro equipo, el cual seguramente no conozcamos, con el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iwconfig&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Una vez tengamos el nombre de la tarjeta de red, debemos proceder a encenderla (puede que ya se encuentre encendida pero nunca esta de mas asegurarse) para ellos ejecutemos el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ifconfig &amp;lt;InterfazWifi&amp;gt; up&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Seguidamente debemos analizar las redes inalámbricas disponible y conocer el SSID de la misma, lo que se puede hacer de manera sencilla con iwlist para ello debemos ejecutar:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo iwlist &amp;lt;InterfazWifi&amp;gt; scanning&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Teniendo los datos de la tarjeta y de la red inalámbrica a la que deseamos conectarnos, simplemente debemos ejecutar a nmcli con los parámetros correspondientes (que obtuvimos anteriormente):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nmcli d wifi connect &amp;lt;WifiSSID&amp;gt; password &amp;lt;ContraseñaWifi&amp;gt; iface &amp;lt;InterfazWifi&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Con esto pasos ya nos hemos conectado a una red wifi utilizando la terminal, debemos tener en cuenta que en los comandos anteriormente mencionados debemos cambiar los siguientes datos por los que correspondan:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;InterfazWifi&lt;/em&gt;: El nombre de la tarjeta de red&lt;/p&gt;
&lt;p&gt;&lt;em&gt;WifiSSID&lt;/em&gt;: El SSID de la red inalámbrica a la que deseamos conectarnos&lt;/p&gt;
&lt;p&gt;&lt;em&gt;ContraseñaWifi&lt;/em&gt;: La contraseña de acceso a la red inalámbrica en cuestión.&lt;/p&gt;
&lt;p&gt;En caso de que nos deseemos conectar a una red wifi que ya se encuentra en nuestro historial basta con que ejecutemos desde la terminal el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nmcli c up &amp;lt;NombreDadaALaRedAlmacenada&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Realizado todos los pasos anteriores deberíamos poder acceder de manera adecuada a la red inalámbrica que hayamos elegido.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fuente: profesionalreview&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Mainte un Conky diferente</title><link>https://patojad.com.ar/post/2020/07/mainte-un-conky-diferente/</link><pubDate>Fri, 10 Jul 2020 13:15:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/mainte-un-conky-diferente/</guid><description>&lt;p&gt;En esta oportunidad vamos a hablar de un Conky en especial aprovechemos el viernes de escritorio para recomendar un conky que realmente permita lucir realmente nuestro escritorio.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mainte-un-conky-diferente"&gt;
Mainte un conky diferente
&lt;a href="#mainte-un-conky-diferente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Mainte es un conky que muestra una información útil de nuestro equipo y lo hace de una forma muy estética. Este conky fue pensado para un caso muy específico, sin embargo, gracias a todo el desarrollo hoy se puede utilizar para todos los equipos y todas las distros así que sin más preámbulos vamos a ir a como instalar esta distro.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://camo.githubusercontent.com/d679002e85fe798a3b6787abc59d87ac0bc742c1/68747470733a2f2f692e6962622e636f2f52486371464c782f53637265656e73686f742d32303139313230322d3232333131382e706e67" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En primer lugar, abra el terminal e instalar conky si no lo tienes, y adicionalmente a eso un conky manager (en mi caso voy a utilizar conky-manager2 del repositorio de la comunidad) mediante el comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install conky conky-manager2 libgee-0.8-2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Una vez instalado debemos descargar el theme mainte para poder ponerlo en nuestro escritorio y eso lo hacemos desde el siguiente link&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/gvoze32/Mainte/releases/tag/v3.0" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Descargar Mainte
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una vez descargado debemos extraer toda la carpeta y copiarla en /home/$USER/.conky (configure el archivo oculto como visible en su administrador de archivos porque la carpeta está oculta)&lt;/p&gt;
&lt;p&gt;Una vez realizado esto basta con iniciar el conky manager y activar los dos conky de Mainte para poder verlo de la siguiente forma&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ibb.co/pKD0qLw/Screenshot-20200710-130504.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Y poder mostrar un ViernesDeEscritorio así…&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ibb.co/w6VJh6Q/Screenshot-20200710-130523.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>¿Se puede jugar en linux?</title><link>https://patojad.com.ar/post/2020/07/se-puede-jugar-en-linux/</link><pubDate>Thu, 09 Jul 2020 11:33:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/se-puede-jugar-en-linux/</guid><description>&lt;p&gt;Muchas veces me preguntaron si es posible jugar en linux, y siempre me lo vuelven a preguntar. Es momento de hablar un poco de este tema y ser 100% sincero. por lo cual vamos un poco a esto y espero que estas palabras sirvan para todo&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="una-cruda-realidad"&gt;
Una cruda realidad
&lt;a href="#una-cruda-realidad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Linux no es un sistema operativo pensado para jugar videojuegos, y me cargo a todos pero digo la verdad. En la actualidad es verdad que muchos desarrolladores y muchas empresas (como valve) se encuentran tirando para que Linux sirva para jugar pero es un camino que empezó a recorrer hace no más de 8 años.&lt;/p&gt;
&lt;p&gt;Y si bien eso es un montón de tiempo para este tipos de cosas aún falta desarrollar mucho en este aspecto y que el sistema crezca, por lo cual al día de hoy podemos decir que no es un sistema &lt;strong&gt;PENSADO&lt;/strong&gt; para videojuegos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="esto-no-es-limitante"&gt;
Esto no es limitante
&lt;a href="#esto-no-es-limitante" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien Linux no es un sistema pensado para jugar no significa que no se pueda jugar, y de eso soy fiel testigo. Yo llevo ya años en Linux y nunca me limito a la hora de jugar.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/iF0CT_cikRg?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;En mi experiencia, siempre pude jugar sin problemas incluso juegos que no están nativos y por lo cual pude liberarme de otros sistemas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ni-a-ni-b"&gt;
Ni a ni b
&lt;a href="#ni-a-ni-b" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien podemos jugar y muchos blogs, o canales demuestran eso es una realidad que debemos tener en cuenta los juegos nativos para linux a la hora de medir que tan adaptado está el sistema a los juegos. Sin embargo teniendo en cuenta el crecimiento exponencial que tuvo en estos últimos años podemos definir que linux el sistema en el cual no se jugaba está creciendo en esta “pata rota” que tenía…&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/tRVPP4hK9kQ?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="un-consejo"&gt;
Un consejo
&lt;a href="#un-consejo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien no soy el gran experto siempre suelo dejar algún que otro consejo dentro de mis publicaciones. En mi experiencia es siempre mejor optar por alternativas nativas que intentar portear un juego, siempre se obtiene un mejor resultado, es algo obvio ¿no?&lt;/p&gt;
&lt;p&gt;Sin embargo si es posible portear juegos y hacerlo suele dar buenos resultados si se tiene paciencia…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="tu-opinión"&gt;
Tu opinión
&lt;a href="#tu-opini%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Me gustaría conocer tu opinión y/o consejo en este tema para eso tenes los comentarios al final de la publicación… No te vayas sin contarnos qué pensas….&lt;/p&gt;</description></item><item><title>Moviendose en la Terminal</title><link>https://patojad.com.ar/post/2020/07/moviendose-en-la-terminal/</link><pubDate>Wed, 08 Jul 2020 09:17:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/moviendose-en-la-terminal/</guid><description>&lt;p&gt;En esta oportunidad queremos ver un poco como es la navegación mediante la terminal, y como siempre digo, esto lo hacemos a modo de amigarnos con la terminal. No siempre es necesario hacerlo de tal manera pero es útil y rápido en muchas ocasiones&amp;hellip;&lt;/p&gt;
&lt;p&gt;Lo primero que necesitamos aprender es &lt;strong&gt;cómo navegar&lt;/strong&gt; por el sistema de archivos en nuestro sistema GNU/Linux. En este inicio presentaremos los siguientes comandos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;pwd&lt;/strong&gt; – Muestra el nombre del directorio de trabajo actual&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;cd&lt;/strong&gt; – Cambia de directorio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ls&lt;/strong&gt; – Muestra el contenido del directorio&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-directorio-de-trabajo-actual"&gt;
El directorio de trabajo actual
&lt;a href="#el-directorio-de-trabajo-actual" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La mayoría de nosotros, probablemente, &lt;strong&gt;estamos familiarizados con un gestor de archivos gráfico&lt;/strong&gt; que representa el árbol del sistema de directorios. Fíjate que el árbol, normalmente, aparece colgando boca abajo, o sea, con la raíz arriba y las ramas hacia abajo.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://multimedia.uoc.edu/blogs/sqsw/files/2013/01/sfjerar.gif" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Sin embargo, la línea de comandos no tiene imágenes (o al menos no nativamente), así que para navegar por el árbol del sistema de ficheros tenemos que pensar de una forma &lt;strong&gt;un poco diferente&lt;/strong&gt; a lo que venimos &lt;em&gt;acostumbrados&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Imagina que el sistema de ficheros es como un laberinto con forma de árbol boca abajo y que podemos estar dentro de él. En un momento dado, estamos dentro de un directorio en concreto y podemos ver los archivos contenidos en él, y la ruta hacia el directorio que está sobre nosotros (llamado directorio padre) y los subdirectorios debajo de nosotros. Este directorio, en el cual estamos, se llama directorio de trabajo actual. Para mostrar el directorio de trabajo actual, utilizamos el comando pwd (print working directory):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pwd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Obteniendo una salida similar a esta&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/home/pato
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/6pxrpC3d/Screenshot-20200708-090455.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La primera vez que accedemos al sistema nuestro directorio de trabajo actual es nuestro directorio home (~). Cada cuenta de usuario tiene su propio directorio home y es el &lt;strong&gt;único lugar donde un usuario sin privilegios puede escribir archivos&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="listando-los-contenidos-de-un-directorio"&gt;
Listando los contenidos de un directorio
&lt;a href="#listando-los-contenidos-de-un-directorio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para listar los archivos y directorios en el directorio de trabajo actual, usamos el comando ls.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Obteniendo una salida similar a esta&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Desktop Documents Music Pictures Public Templates Videos
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/J4ZTxrH5/Screenshot-20200708-090638.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En realidad, podemos usar el comando ls para listar el contenido de cualquier directorio, no solo el directorio de trabajo actual, y hay muchas otras cosas curiosas que puede hacer también…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cambiando-el-directorio-de-trabajo-actual"&gt;
Cambiando el directorio de trabajo actual
&lt;a href="#cambiando-el-directorio-de-trabajo-actual" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para cambiar el directorio de trabajo actual utilizamos el comando cd. Para hacer esto, escribe cd seguido de la ruta del directorio de trabajo que queramos. Una ruta es el camino de tomamos a través de las ramas del árbol para llegar al directorio que queremos. Las rutas pueden ser &lt;strong&gt;especificadas de dos formas&lt;/strong&gt;; como rutas &lt;strong&gt;absolutas&lt;/strong&gt; o como rutas &lt;strong&gt;relativas&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="rutas-absolutas"&gt;
Rutas Absolutas
&lt;a href="#rutas-absolutas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una ruta absoluta comienza con el &lt;strong&gt;directorio raíz&lt;/strong&gt; y sigue &lt;em&gt;rama tras rama&lt;/em&gt; hasta que la ruta al directorio o archivo que queremos está completa. Por ejemplo, hay un directorio en nuestro sistema en el que la mayoría de los programas de sistema están instalados. La ruta de dicho directorio es /usr/bin. Esto significa que en el directorio raíz (representado por la barra inclinada en la ruta) hay un directorio llamado “usr” que contiene un directorio llamado “bin”.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /usr/bin
pwd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Obtendremos una salida como&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/usr/bin
ls
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y esto listará muchísimos archivos&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/5ywwBtKH/Screenshot-20200708-090822.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ahora podemos ver que &lt;strong&gt;hemos cambiado el directorio&lt;/strong&gt; de trabajo a /usr/bin y que está lleno de archivos. ¿Ves cómo ha cambiado el prompt del shell? Por defecto, normalmente está configurado para mostrar automáticamente el nombre del directorio de trabajo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="rutas-relativas"&gt;
Rutas Relativas
&lt;a href="#rutas-relativas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Mientras que una ruta absoluta empieza desde el directorio raíz y sigue hasta su destino, &lt;strong&gt;una ruta relativa comienza en el directorio de trabajo&lt;/strong&gt;. Para hacer esto, utiliza un par de símbolos especiales que representan posiciones relativas en el árbol del sistema de archivos. Estos símbolos son “.” &lt;em&gt;(punto)&lt;/em&gt; y “..” &lt;em&gt;(punto punto)&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;El símbolo “.” se refiere al directorio de trabajo y el símbolo “..” se refiere al directorio padre del directorio de trabajo. Veamos cómo funciona. Ahora le diremos que queremos cambiar el directorio de trabajo al padre de /usr/bin que es /usr. Podríamos hacerlo de dos formas diferentes. Tanto con una ruta absoluta:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /usr
pwd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Obteniendo una salida como esta&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/usr
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como, con una ruta relativa:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd ..
pwd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Obteniendo una salida como esta&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/usr
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dos métodos diferentes con idénticos resultados. ¿Cuál usamos? ¡El que requiera teclear menos!&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/HszMdRqC/Screenshot-20200708-091020.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ahora, hay algo importante que se debe señalar aquí. En la mayoría de los casos, puedes omitir el “./”. Está implícito. Escribir:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;hace lo mismo. En general, si no especificas una ruta a algo, se asumirá el directorio de trabajo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="algunos-atajos-útiles"&gt;
Algunos atajos útiles
&lt;a href="#algunos-atajos-%c3%batiles" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Veamos algunas formas útiles para cambiar rápidamente el directorio de trabajo actual.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cambia el directorio de trabajo a tu directorio home.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd -
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cambia el directorio de trabajo al anterior directorio de trabajo.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd ~nombre_de_usuario
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cambia el directorio de trabajo al directorio home de nombre_de_usuario. Por ejemplo, cd ~pato cambiará el directorio al directorio home del usuario “pato”.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/sxV2LDDG/Screenshot-20200708-091153.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="resumiendo"&gt;
Resumiendo
&lt;a href="#resumiendo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En este capítulo hemos visto como el shell trata la estructura de directorios del sistema. Hemos aprendido sobre las rutas absolutas y relativas y los comandos básicos que se usan para moverse por dicha estructura. En el próximo capítulo utilizaremos este conocimiento para darnos una vuelta por un sistema Linux moderno.&lt;/p&gt;
&lt;p&gt;Fuente: &lt;strong&gt;&amp;ldquo;The Linux Command Line - Second Internet Edition&amp;rdquo;&lt;/strong&gt; de &lt;em&gt;William E. Shotts, Jr.&lt;/em&gt; - (es) &lt;strong&gt;Adriano Sánchez&lt;/strong&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="tambien-leer"&gt;
Tambien Leer
&lt;a href="#tambien-leer" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/posts/2020/07/por-qu%c3%a9-usar-la-l%c3%adnea-de-comandos/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
¿Por qué usar la línea de comandos?
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>AdBlock Spotify</title><link>https://patojad.com.ar/post/2020/07/adblock-spotify/</link><pubDate>Tue, 07 Jul 2020 09:23:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/adblock-spotify/</guid><description>&lt;p&gt;Muchos de nosotros usamos diferentes reproductores de música, y algunos de nosotros incluso usamos servicios de música online, en este caso vamos a hablar de una en específico: &lt;strong&gt;Spotify&lt;/strong&gt;, un servicio de música online que cuenta con una versión Free la cual nos permite escuchar música &lt;em&gt;100% gratis&lt;/em&gt; con unas publicidades que suelen ser tolerables al inicio pero cada vez son más invasivas&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="una-comunidad-que-no-quiere-publicidad"&gt;
Una comunidad que no quiere Publicidad
&lt;a href="#una-comunidad-que-no-quiere-publicidad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La comunidad &lt;strong&gt;no quiere publicidad&lt;/strong&gt; cuando escucha música. Y como siempre la comunidad encuentra la forma de obtener lo que quiere. Y en esta solución que ofrecemos hoy es nada más ni nada menos que un filtro que bloquea la publicidad en el momento de su obtención.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La instalación de este &lt;em&gt;&amp;ldquo;complemento&amp;rdquo;&lt;/em&gt; como nos marcan en su README se realiza mediante la compilación del mismo, lo cual suena realmente más difícil de lo que es, bastará con correr algunos comandos. Sin embargo, &lt;strong&gt;nosotros armamos un deb&lt;/strong&gt; para simplificar un poco la instalación. El mismo lo pueden descargar a continuación.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mediafire.com/file/ag5vyxovkv53f15/spotify-adblock_1-PatoJAD_amd64.deb/file" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar en formato DEB
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-utilizarlo"&gt;
Cómo utilizarlo
&lt;a href="#c%c3%b3mo-utilizarlo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Se puede utilizar simplemente con la línea de comandos, o terminal, o shell. Recuerden que esto se utiliza teniendo instalado Spotify y desde la terminal lo podemos hacer con el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;LD_PRELOAD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/local/lib/spotify-adblock.so spotify&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Sin embargo, es molesto cada vez que queramos usarlo tener que ejecutar este comando por lo cual podemos, por única vez, armar este archivo que nos permite generar un lanzador en nuestro menú, que nos permite ejecutar todo esto desde un simple botón.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano ~/.local/share/applications/spotify-adblock.desktop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Y dentro de ese archivo que creamos debemos poner lo siguiente.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;cfg&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cfg" data-lang="cfg"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[Desktop Entry]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Application&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Spotify (PatoJAD)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;GenericName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Music Player&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Icon&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;spotify-client&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;TryExec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;spotify&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Exec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;env LD_PRELOAD=/usr/local/lib/spotify-adblock.so spotify %U&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Terminal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;MimeType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;x-scheme-handler/spotify;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Categories&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Audio;Music;Player;AudioVideo;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;StartupWMClass&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;spotify&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Es posible que ni bien después de crearlo no aparezca en el menú esto puede llegar a demorar unos minutos (Hasta que se refresque o se reinicie) sin embargo obtendremos dentro del menú un nuevo &amp;ldquo;Spotify&amp;rdquo; que inicia con el bloqueador de una&lt;/p&gt;</description></item><item><title>¿SystemD no es el problema? Respuesta a Zatiel</title><link>https://patojad.com.ar/post/2020/07/systemd-no-es-el-problema-respuesta-a-zatiel/</link><pubDate>Mon, 06 Jul 2020 08:34:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/systemd-no-es-el-problema-respuesta-a-zatiel/</guid><description>&lt;p&gt;Ya en este blog es un poco recurrente hablar de inits, en especial del tan aclamado SystemD un init tan popular que muchas personas dudan de que puedan existir otros en su lugar. Las miradas sobre este init suelen ser muy divididas. Mientras existe un grupo de personas que lo defienden a muerte otros intentan extinguir a como dé lugar… Después estamos lo que estamos en un limbo bajo la teoría de “vive y deja vivir” donde si bien no procedemos a estar de acuerdo con SystemD en general tampoco linchamos a quienes lo usan…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-origen"&gt;
El origen
&lt;a href="#el-origen" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En esta ocasión no vengo a hablar de init simplemente por generar polémica(¿o si?), o porque sea un tema que suele generar bastantes entradas. Simplemente lo hago para responder el punto de vista de una de las estrellas Linuxtubers más famosas de los últimos tiempo. Sí, estoy hablando del único e inigualable Zatiel, el cual publicó hace unos días el siguiente Video:&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/iq1hyPOA0rA?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;En el cual plantea su idea sobre SystemD y es ampliamente válida…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-respuesta"&gt;
Mi respuesta
&lt;a href="#mi-respuesta" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Siempre desde la amistad me tomé el atrevimiento de responder, no porque creo que Zatiel este confundido ni mucho menos, simplemente porque la concepción de “lo que está mal” de systemD no es la realidad de SystemD. Para lo cual lo hice el siguiente video:&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/x4EUIrLeA_0?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Antes de verlo recuerdo que estaría bueno ver el video de Zatiel si ya no lo viste…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="antecedentes"&gt;
Antecedentes
&lt;a href="#antecedentes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como dije antes es recurrente en este blog hablar de inits, tal vez a estas alturas muchos ya los tengan entendido (a su funcionalidad) pero otros no para lo cual estoy dejando abajo todo lo que nosotros ya hablamos anteriormente con el fin de obtener más información&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2020/06/systemd-solucion-o-problema/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
https://patojad.com.ar/post/2020/06/systemd-solucion-o-problema/
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2019/04/systemd-al-volante-mata/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
https://patojad.com.ar/post/2019/04/systemd-al-volante-mata/
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2019/01/lo-que-la-gente-opina-sobre-los-inits/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
https://patojad.com.ar/post/2019/01/lo-que-la-gente-opina-sobre-los-inits/
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2019/01/lo-que-la-gente-opina-sobre-los-inits/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
https://patojad.com.ar/post/2019/01/lo-que-la-gente-opina-sobre-los-inits/
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>¿Por qué usar la línea de comandos?</title><link>https://patojad.com.ar/post/2020/07/por-qu%C3%A9-usar-la-l%C3%ADnea-de-comandos/</link><pubDate>Fri, 03 Jul 2020 09:41:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/por-qu%C3%A9-usar-la-l%C3%ADnea-de-comandos/</guid><description>&lt;p&gt;A continuación vamos a dejar la traducción de, &lt;em&gt;&amp;ldquo;The Linux Command Line - Second Internet Edition&amp;rdquo; de William E. Shotts, Jr.&lt;/em&gt; La traducción en carácter literal fue realizado por Adriano Sánchez.&lt;/p&gt;
&lt;p&gt;En esta oportunidad vamos a tomar un fragmento que es el que nos interesa a la temática de hoy:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;¿Te has dado cuenta alguna vez que, en las películas, cuando el &amp;ldquo;súper hacker&amp;rdquo; - ya sabes, el tío que puede entrar en la computadora militar ultra-segura en menos de treinta segundos - se sienta en el ordenador y nunca toca un ratón? Es por que los que hacen las películas saben que nosotros, como seres humanos, instintivamente sabemos que la única forma de hacer algo en un ordenador ¡es escribiendo en el teclado!&lt;/p&gt;
&lt;p&gt;La mayoría de los usuarios de ordenadores de hoy sólo están familiarizados con la interfaz gráfica de usuario o GUI (del inglés graphical user interface) y los vendedores y los expertos les han enseñado que la interfaz de línea de comandos o CLI (del inglés command line interface) es una cosa espantosa del pasado. Es una pena, porque una buena interfaz de línea de comandos es una maravillosa y expresiva forma de comunicarse con el ordenador, muy parecida a lo que el lenguaje escrito es para los seres humanos. Se ha dicho que &amp;ldquo;las interfaces gráficas de usuario hacen fáciles las tareas fáciles, mientras que las interfaces de línea de comandos hacen posibles las tareas difíciles&amp;rdquo; y eso es muy cierto aún hoy.&lt;/p&gt;
&lt;p&gt;Dado que Linux fue desarrollado desde la familia de sistemas operativos Unix, comparte la misma rica herencia de herramientas de línea de comandos que Unix. Unix saltó a la fama en los primeros años ochenta (aunque fue desarrollado una década antes), antes de que se extendiera la adopción de las interfaces gráficas de usuario, y por eso, se desarrolló una amplia interfaz de línea de comandos en su lugar. De hecho, una de las razones más potentes para que los primeros que utilizaron Linux lo eligieran sobre, digamos, Windows NT, era la poderosa interfaz de línea de comandos que hacía las &amp;ldquo;tareas difíciles posibles&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="opinión"&gt;
Opinión
&lt;a href="#opini%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En esta oportunidad decidí comentar esto en forma de video para aprovechar un poco las facilidades de esto.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/_TMLLegoGAI?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;</description></item><item><title>4 Formas de buscar archivos</title><link>https://patojad.com.ar/post/2020/07/4-formas-de-buscar-archivos/</link><pubDate>Wed, 01 Jul 2020 09:41:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/07/4-formas-de-buscar-archivos/</guid><description>&lt;p&gt;En linux existen muchas formas de buscar archivos, directorios, binarios, códigos fuente, etc. La terminal es una de nuestras herramientas favoritas (y digo nuestras porque vos seguramente si no te llevas bien vas a irte amigando y viendo que es realmente útil) que nos permite hacerlo más simple y manejar prácticamente todo el sistema. por lo cual hoy vamos a ver como buscar archivos desde la terminal…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="find"&gt;
Find
&lt;a href="#find" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ibb.co/Qc1pGqZ/Screenshot-20200701-091150.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Para buscar archivos en la línea de comando puedes usar el comando find, su sintaxis es la siguiente:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find ruta criterio acción&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Donde:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ruta&lt;/strong&gt; es la sección del sistema de archivo donde buscar (el directorio especifico y todos los subdirectorios). Si no se especifica nada el directorio que se usará será donde te encuentras actualmente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Criterio&lt;/strong&gt; es las propiedades del archivo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acción&lt;/strong&gt; son opciones que influyen en la condición o control de la búsqueda&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ibb.co/44QS1PY/Screenshot-20200701-091308.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="locate"&gt;
Locate
&lt;a href="#locate" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ibb.co/DtZN6vh/Screenshot-20200701-091835.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El comando locate es una &lt;strong&gt;alternativa&lt;/strong&gt; al comando find. El comando find debe buscar a través de la parte del sistema de archivos seleccionado, proceso que puede ser un poco lento.&lt;/p&gt;
&lt;p&gt;Por otro lado, locate busca a través de una base de datos previamente creada para ese propósito (/var/lib/locatedb), haciéndolo más rápido. La base de datos es automáticamente creada y actualizada diariamente. Pero los cambios hechos después de haber sido actualizado no se tomarán en cuenta por locate, a menos que actualices la base datos manualmente usando el comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;updatedb&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ibb.co/yV0Bdh7/Screenshot-20200701-091923.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="whereis"&gt;
Whereis
&lt;a href="#whereis" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ibb.co/nzR3SJ6/Screenshot-20200701-092220.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;el comando whereis retorna los binarios (opción -b), página de manual (opción -m) y los código fuentes (opción -s) de un comando específico. Si no se usa ninguna opción devolverá toda la información, si está disponible. Este comando es más rápido que find pero es menos minucioso.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ibb.co/9pc9JD9/Screenshot-20200701-092342.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="which"&gt;
Which
&lt;a href="#which" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ibb.co/jDKmtRN/Screenshot-20200701-092617.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El comando wich busca todas las rutas listadas en la variable PATH para un comando específico y devuelve la ruta completa del comando. El comando es específicamente útil si existen varias versiones del mismo comando en diferentes directorios y si quieres saber qué versión se ejecuta cuando no se especifica ninguna ruta.&lt;/p&gt;
&lt;p&gt;Muchas veces necesitamos saber dónde están los binarios y esta solución no solo es práctica sino que es muy fácil de usar.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ibb.co/hC19jv5/Screenshot-20200701-092711.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>Instalcion MilagrOS</title><link>https://patojad.com.ar/post/2020/06/instalcion-milagros/</link><pubDate>Tue, 30 Jun 2020 08:30:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/instalcion-milagros/</guid><description>&lt;p&gt;El otro dia hablamos sobre el init en linux (despues de eso me di cuenta que era un tema recurrente en mi blog) Y como parte de mi compromiso con esto decidí comentar como es la instalación de MilagrOS un Sistema Basado en MX Linux que no usa SystemD y el cual nos va a servir como punto para retomar las instalaciones en el canal…&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://proyectotictac.files.wordpress.com/2020/04/pantallazo-escritorio-conky-milagros-2.0.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“MilagrOS GNU/Linux, es una edición no oficial (Respin) de la Distro MX-Linux. La cual viene con una personalización y optimización extrema, que la hace ideal para ordenadores de bajos recursos o viejos, y para usuarios con nulo o limitado potencial de Internet y conocimientos de GNU/Linux. Una vez obtenida (descargada) e instalada, ya se pueda usar eficaz y eficientemente sin necesidad de Internet, ya que todo lo necesario y más está pre-instalado”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="video"&gt;
Video
&lt;a href="#video" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;iframe src='https://www.youtube.com/embed/EuYdLQXShrc?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Mi idea de las instalaciones no es tener videos de 15 minutos sin aporte alguno o donde hablamos pavadas, por lo cual vamos a ir sacando pequeños videos con los pasos y detalles de instalaciones…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="más-info"&gt;
Más Info
&lt;a href="#m%c3%a1s-info" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://proyectotictac.files.wordpress.com/2020/04/pantallazo-mx-herramienta2-milagros-2.0.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Vamos a dejar un poco de información importante para los usuarios de MilagrOS, sobre todo relevante para antes de su instalación.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usuario Principal: Sysadmin MilagrOS (sysadmin)&lt;/li&gt;
&lt;li&gt;Contraseña Usuario Principal: Sysadmin&lt;em&gt;2020&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Usuario Administrador: Root (root)&lt;/li&gt;
&lt;li&gt;Contraseña Usuario Principal: Root&lt;em&gt;2020&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="bonus"&gt;
Bonus
&lt;a href="#bonus" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Quería recordar y agradecer, porque MilagrOS cuenta con el repositorio de la Comunidad PreInstalado, basta con activarlo para que se encuentre en funcionamiento… Muchas gracias por ese pequeño gran detalle!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://proyectotictac.org.ve/distros/MilagrOS/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar MilagrOS
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>LBRY, en busca de la libertad</title><link>https://patojad.com.ar/post/2020/06/lbry-en-busca-de-la-libertad/</link><pubDate>Mon, 29 Jun 2020 09:03:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/lbry-en-busca-de-la-libertad/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Los mejores creadores, los usuarios que se respetan a sí mismos, los que se preocupan por la privacidad, los fanáticos de las computadoras, los amantes de la libertad, los amantes adorables y los lectores de pequeños textos grises en todas partes eligen LBRY, porque es abierto, justo y gratuito.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;De esta forma se presenta ante nosotros LBRY una alternativa LIBRE a youtube que busca enfocar de otra manera el punto de vista de los usuario y creadores&amp;hellip;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;LBRY es un mercado digital seguro, abierto y gestionado por la comunidad. Disfruta del contenido más reciente de tus creadores favoritos, como usuario, &lt;strong&gt;no como producto&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;LBRY es un nuevo protocolo que permite a cualquiera crear aplicaciones que interactúen con contenido digital en la red LBRY. Las aplicaciones creadas con el protocolo permiten a los creadores subir su trabajo a la red de hosts LBRY (como BitTorrent), establecer un precio por transmisión o descarga (como iTunes) o regalarlo gratis (como YouTube sin anuncios). El trabajo que publica puede ser videos, archivos de audio, documentos o cualquier otro tipo de archivo.&lt;/p&gt;
&lt;p&gt;Los sitios tradicionales de video (u otro contenido) como YouTube, Instagram y Spotify almacenan sus cargas en sus servidores y permiten a los espectadores descargarlas. También permiten a los creadores ganar dinero a través de la publicidad u otros mecanismos. Sin embargo, hay algunos inconvenientes bien conocidos, especialmente para las personas cuyo material se percibe como no apto para anunciantes.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://spee.ch/f/2019-08-lbry-interface-poster.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;LBRY pretende ser una alternativa a estos sitios, permitiendo a los editores y sus fanáticos interactuar directamente sin el riesgo de desmonetización u otra intromisión.&lt;/p&gt;
&lt;p&gt;Lo que hace que todo esto sea posible es la tecnología blockchain desarrollada por el creador de Bitcoin.&lt;/p&gt;
&lt;p&gt;¿Tienes que entender algo de esto para usar y disfrutar de LBRY? No. ¿Sigue siendo importante para los usuarios? ¡Si!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="basta-de-tanta-palabra"&gt;
Basta de tanta palabra
&lt;a href="#basta-de-tanta-palabra" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien la informacion que puse arriba es relevante se puede encontrar en cualquier sitio. Yo comencé a usar LBRY hace muy poco e incluso ya elimine el canal y cree uno nuevo. Me gusto saber que pude migrar mi canal de Youtube para evitarme tener que subir todo a mano…&lt;/p&gt;
&lt;p&gt;Por ahora mi experiencia es pobre, no llegue a indagar a fondo, sin embargo lo use para entretenerme y sin problemas. Incluso lo instale en mi sistema operativo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lo-recomiendo"&gt;
¿Lo recomiendo?
&lt;a href="#lo-recomiendo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien no le dedique la cantidad de horas que quería, no aguantaba las ganas de escribir sobre esto, y eso se debe a que si lo recomiendo, tanto para creadores como para usuarios, el registro es completamente simple y rápido por lo cual no hay problemas, y siempre está bueno tener ese lugar donde podes subir esos videos que Youtube no te deja… Para arrancar te quiero dejar mi referido para que te registres… No se bien en qué me beneficia a mi pero se que no te perjudica en nada, sin embargo si no queres el referido más abajo te voy a dejar links sin referido…&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lbry.tv/$/invite/@PatoJAD:d" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Registrarme
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="que-puedo-ver"&gt;
¿Que puedo ver?
&lt;a href="#que-puedo-ver" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En particular todavía no tengo tanto para recomendar en español, sin embargo voy a dejarte 2 canales que no podes perderte ni por casualidad (Si, uno es el mio&amp;hellip;). Pero más allá de esto encontré muchísimo contenido en base al entretenimiento o la música que me contentaron… Y mucho contenido (en inglés) que vale la pena…&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lbry.tv/@PatoJAD:d" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Mi Canal
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lbry.tv/@SePuedeJugarConLinux:9" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Se Puede Jugar Con Linux
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="para-cerrar"&gt;
Para cerrar
&lt;a href="#para-cerrar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien estamos acostumbrados a Youtube es importante siempre conocer tecnologías y darles una oportunidad, en el peor de los casos no nos suman nada. Y más cuando hablamos de tecnologías libres que no corremos riesgos de que nos roben hasta las ganas de vivir! &lt;strong&gt;Tampoco te olvides SIEMPRE de apoyar a todos los creadores, un MG o una suscripción no cuestan nada pero valen un monton&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>SystemD ¿Solucion o Problema?</title><link>https://patojad.com.ar/post/2020/06/systemd-solucion-o-problema/</link><pubDate>Fri, 26 Jun 2020 10:46:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/systemd-solucion-o-problema/</guid><description>&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://nosystemd.org/img/nosystemd.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Cuando escribo mis artículos trato de no ser fanático, incluso intento explicar mis puntos de vistas y comprender las personas que piensan diferente, en este caso la idea es explicar un poco el motivo por el cual yo &lt;strong&gt;no apoyo SystemD&lt;/strong&gt; y para hacerlo me voy a apoyar en otro sitio que obviamente se tomó el tiempo de hacer todo el trabajo que no hice yo…&lt;/p&gt;
&lt;p&gt;Mi idea no es generar odiadores de systemd ni mucho menos, ni tampoco voy a ser extremista de pedir que nadie lo use (a muchos no les importa) Pero creo que sí es importante entender que SystemD no es algo que este muy bueno para nuestros equipos y &lt;strong&gt;facilitando esta información cada uno es dueño de sus decisiones…&lt;/strong&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="que-es-systemd"&gt;
¿Que es systemd?
&lt;a href="#que-es-systemd" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;em&gt;SystemD&lt;/em&gt; afirma ser un reemplazo bueno y moderno para &lt;strong&gt;SysVinit&lt;/strong&gt;, un llamado &lt;em&gt;demonio&lt;/em&gt; init (o init para los amigos). Por lo general, el demonio init es el primer proceso generado por el núcleo y, por lo tanto, tiene el &lt;strong&gt;PID&lt;/strong&gt; #1 y es responsable de generar otros demonios que son necesarios para que el sistema operativo funcione, por ejemplo, redes, cron, syslog, etc.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://live.mrf.io/statics/i/ps/www.muylinux.com/wp-content/uploads/2018/05/systemd.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ahora en criollo el init es el primer proceso y &lt;strong&gt;se encarga de que los demás inicien&lt;/strong&gt;&amp;hellip; Esto es muy importante la función del init es que lo demás inicie, un policía atrapa delincuentes, un bombero apaga incendios, un init inicia otros procesos…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="solución-o-problema"&gt;
¿Solución o Problema?
&lt;a href="#soluci%c3%b3n-o-problema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;SystemD &lt;em&gt;intenta&lt;/em&gt; solucionar dificultades para los desarrolladores de linux, pero en su intento de hacer eso termino volviendo al sistema en algo totalmente dependiente y peligroso… Explico con un ejemplo…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Supongamos&lt;/strong&gt; que nuestro sistema operativo es una ciudad… Y la policía se llama SystemD &lt;em&gt;(Porque se pone la gorra)&lt;/em&gt; y luego existen otros procesos u otras &lt;em&gt;“cosas”&lt;/em&gt;. Cada vez que los bomberos quieren salvar una vida dependen de que la policía (SystemD) les diga que si… Imaginemos el caos de que la policía no está disponible un tiempo… Sería el caos y media ciudad se prendería fuego…&lt;/p&gt;
&lt;p&gt;Ahora existen otras ciudades donde los policías se implementan de otra forma (alternativas a systemd) y aquí nadie tiene que preguntarle a la policía nada, incluso una vez que la policía reconoció al cuartel de bomberos lo dejan cumplor sus funciones sin mas… Imaginence lo eficiente que es esto…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="alternativas-a-systemd"&gt;
Alternativas a SystemD
&lt;a href="#alternativas-a-systemd" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;SysVinit&lt;/li&gt;
&lt;li&gt;OpenRC&lt;/li&gt;
&lt;li&gt;Upstart&lt;/li&gt;
&lt;li&gt;InitNG&lt;/li&gt;
&lt;li&gt;cinit&lt;/li&gt;
&lt;li&gt;runit&lt;/li&gt;
&lt;li&gt;minit&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="como-eliminar-systemd"&gt;
Como eliminar SystemD
&lt;a href="#como-eliminar-systemd" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;De momento no realize ningun tutorial, sin embargo existen sitios donde explican de una forma impecable como liberarse de este &lt;em&gt;demonio&lt;/em&gt; (al que entendió entendió) y por lo cual voy a recomendar un sitio que explica como hacerlo&lt;/p&gt;
&lt;p&gt;&lt;a href="https://wiki.ubuntu.com/SystemdForUpstartUsers#Permanent_switch_back_to_upstart" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Como Cambiar SystemD
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="más-fácil"&gt;
¿Más Fácil?
&lt;a href="#m%c3%a1s-f%c3%a1cil" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Muchos no queremos ponernos a instalar y sabemos que esto puede generar errores así que existen otras alternativas que son más simples y voy a nombrar las que yo use y recomiendo…&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="devuan"&gt;
Devuan
&lt;a href="#devuan" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/bed4ed/devuan-jessie-screenshot/1366_2000.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Se ve a simple vista, devuan es el debian sin SystemD y en mi experiencia es uno de los más limpios y rápidos. La instalación no es difícil, pero tampoco es linda, su instalador es simple pero feo estéticamente… Esto puede generar algún rechazo al inicio pero es una opción impecable…&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="antix"&gt;
Antix
&lt;a href="#antix" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ytimg.com/vi/B0NmniRxCpg/maxresdefault.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Antix es el revividor de ordenadores, está basado en Debian pero sin systemd (especie de devuan) Tiene escritorios como fluxbox que es extremadamente liviano y esta distro apenas llega a los 300 mb iniciados (con los conkys y todo eso..)&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="mx-linux"&gt;
MX Linux
&lt;a href="#mx-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.muylinux.com/wp-content/uploads/2019/05/mxlinux183.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esta es una distro intentando ser el Mint del mundo SystemD, también usa Debs y trae muchas apps preinstaladas y configuradas para simplificar al usuario final. Si bien no tiene relación alguna con Mint es una linda comparación para entender a quien va Orientado. Sin embargo desde mi punto de vista es una distro muy cargada con muchas apps.&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="artix"&gt;
Artix
&lt;a href="#artix" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i0.wp.com/entornosgnulinux.com/wp-content/uploads/2019/03/Calamarares.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si sos mas del palo de ARCH Artix es para vos, desde mi punto de vista es la mejor distro, rápida y una vez instalado KDE (en mi caso me gusta ponerle KDE) queda impecable, la instalacion es mas al estilo de manjaro porque es muy simple.&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="mención-especial"&gt;
Mención Especial
&lt;a href="#menci%c3%b3n-especial" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://proyectotictac.files.wordpress.com/2020/04/pantallazo-menu-milagros-2.0.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Este último no es una distro en si, o al menos eso aclara en su sitio, pero para mi vale mucho la pena dedicarle un tiempo porque es magnífica y está hecho por una de las personas mas importantes en este mundo de Linux hispanohablante. Hablo nada más ni nada menos de &lt;strong&gt;MilagrOS&lt;/strong&gt; la cual podemos ver en su web.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-punto-de-vista"&gt;
Mi punto de vista
&lt;a href="#mi-punto-de-vista" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Existen alternativas y mucho se nota en el rendimiento… Pero cada cual debe buscar su propia opinión y formar su opinión. Ahora te toca contarnos tu punto de vista y que distro recomendarias vos&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://nosystemd.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Mas info
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Shells disponibles</title><link>https://patojad.com.ar/post/2020/06/shells-disponibles/</link><pubDate>Thu, 25 Jun 2020 09:13:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/shells-disponibles/</guid><description>&lt;p&gt;El otro día comenzamos a hablar de &amp;ldquo;&lt;a href="https://patojad.com.ar/post/2020/06/el-shell-de-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
el Shell de GNU/Linux
&lt;/a&gt;&amp;rdquo; (No quiero entrar en debates pero tampoco quiero que se enojen por poner solo Linux) y comprendimos que no es tan malo como muchos creen, y ahora estoy acá para contarte un poco que existen &lt;strong&gt;varios shells&lt;/strong&gt; y queremos que sepas cual es el que tienes instalado…&lt;/p&gt;
&lt;h1 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="shell-usuario-usuario-shell"&gt;
Shell Usuario, Usuario Shell&amp;hellip;
&lt;a href="#shell-usuario-usuario-shell" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;Los shells utilizados en GNU/Linux no pertenecen exclusivamente a este sistema operativo. Estos están disponibles &lt;em&gt;libremente&lt;/em&gt; y pueden ser &lt;em&gt;compilados&lt;/em&gt; en cualquier sistema &lt;strong&gt;Unix&lt;/strong&gt;. Cuando instalamos GNU/Linux, tendremos acceso a los shells y herramientas de &lt;strong&gt;GNU&lt;/strong&gt;, no a los shells y herramientas estándares de &lt;strong&gt;Unix&lt;/strong&gt;. A pesar de que Linux &lt;em&gt;puede ejecutar una gran cantidad de shells&lt;/em&gt;, los más populares en el sistema del pingüino son el &lt;strong&gt;BASH&lt;/strong&gt; (Bourne Again shell) y el &lt;strong&gt;TCSH&lt;/strong&gt; (TC shell).&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;Z shell&lt;/strong&gt; es otro shell de Linux que incorpora diferentes características del &lt;strong&gt;BASH&lt;/strong&gt;, &lt;strong&gt;TCSH&lt;/strong&gt; y del &lt;strong&gt;Korn Shell&lt;/strong&gt; (un shell nativo de Unix desarrollado por David Korn de AT&amp;amp;T).&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cual-tengo-instalado"&gt;
¿Cual Tengo instalado?
&lt;a href="#cual-tengo-instalado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si tienes curiosidad por ver que Shells tienes instalados en tu distribución GNU/Linux basta que desde la línea de comandos ingreses el siguiente comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat /etc/shells
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ó&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat /etc/shell
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(esto depende de tu distribución), deberás obtener algo similar a:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/screen
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Por ejemplo esto tengo instlado yo:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ibb.co/cyxfR7q/Screenshot-20200625-090630.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Con esto ya podemos interiorizarnos más si nos interesa, y en caso contrario ya podemos entender que existen diferentes shells dentro del mundo de GNU/Linux. Ya conociendo esto nos vamos dando cuenta que en realidad no es algo tan complejo y podemos ser amigos de estos “shells”&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>El Shell de Linux</title><link>https://patojad.com.ar/post/2020/06/el-shell-de-linux/</link><pubDate>Tue, 23 Jun 2020 08:56:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/el-shell-de-linux/</guid><description>&lt;p&gt;El &lt;strong&gt;Shell&lt;/strong&gt; es un programa &lt;em&gt;especial&lt;/em&gt; utilizado como una interfaz entre el usuario y el núcleo del Sistema Operativo tambien conocido como &lt;strong&gt;Kernel&lt;/strong&gt;. A grandes rasgos, el &lt;strong&gt;Kernel&lt;/strong&gt; (junto a otro conjunto de apps) es un programa que se carga en memoria al momento en el que el PC se inicia, y se encarga de administrar el sistema hasta que apagamos el computador; es decir, crea y controla procesos, gestiona la memoria, el sistema de archivos y mucho más.&lt;/p&gt;
&lt;p&gt;Volviendo al &lt;strong&gt;Shell&lt;/strong&gt;, lo podemos definir como un Programa Utilitario que se inicia cuando accedemos a nuestra sesión en el sistema operativo. Este, &lt;em&gt;le permite al usuario interactuar con el Kernel&lt;/em&gt; a través de la interpretación de los comandos que el usuario ingresa en la línea de comandos ó a través de los &lt;strong&gt;&amp;ldquo;scripts&amp;rdquo;&lt;/strong&gt; (archivos que ejecutan un conjunto de comandos).&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lo-que-hace-el-shell"&gt;
Lo que hace el Shell
&lt;a href="#lo-que-hace-el-shell" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/c701d7/terminal/1366_2000.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Después de que tipeamos un comando, la responsabilidad del Shell es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Analizar la línea de Comandos&lt;/li&gt;
&lt;li&gt;Manejar los comodines, las redirecciones, tuberías y planificar el control de ejecución de los comandos.&lt;/li&gt;
&lt;li&gt;Buscar el comando, si lo encuentra, ejecutar el comando, en caso contrario emitir un error.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En muchas ocasiones, para realizar una tarea tenemos que digitar un &lt;strong&gt;conjunto de comandos&lt;/strong&gt;. Si esta tarea la realizamos en reiteradas ocasiones lo más probable será querer &lt;em&gt;automatizarla&lt;/em&gt;. Para hacer esto posible, hacemos uso de los &lt;strong&gt;&amp;ldquo;Shell Scripts&amp;rdquo;&lt;/strong&gt;, que no son otra cosa que archivos ejecutables que contienen &lt;em&gt;una secuencia de comandos&lt;/em&gt;. Los &amp;ldquo;Shell Scripts&amp;rdquo; oscilan entre archivos que ejecutan un conjunto de comandos (como los &amp;ldquo;batch files&amp;rdquo;), pudiendo llegar a ejecutar programas para toma de decisiones, comprobación de archivos y mucho más. &lt;em&gt;No basta con tener conocimientos de programación para desarrollar &amp;ldquo;Shell Scripts&amp;rdquo;&lt;/em&gt;, también es necesario contar con un basto entendimiento de los utilitarios y herramientas de linux, y como estos trabajan. Algunas utilidades como &lt;strong&gt;grep&lt;/strong&gt;, &lt;strong&gt;sed&lt;/strong&gt; y &lt;strong&gt;gawk&lt;/strong&gt; se convierten en herramientas muy poderosas cuando se utilizan en los &amp;ldquo;Shell Scripts&amp;rdquo; para gestionar la salida de comandos y archivos.&lt;/p&gt;
&lt;p&gt;Para concluir, podemos decir que cuando ejecutamos comandos desde un &amp;ldquo;Shell Script&amp;rdquo;, estamos utilizando el Shell como un lenguaje de programación.&lt;/p&gt;</description></item><item><title>La gente Opina Universidades</title><link>https://patojad.com.ar/post/2020/06/la-gente-opina-universidades/</link><pubDate>Mon, 22 Jun 2020 09:01:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/la-gente-opina-universidades/</guid><description>&lt;p&gt;El otro dia hable sobre el uso de sistemas &lt;strong&gt;privativos&lt;/strong&gt; en universidades públicas y como esto podía ser limitantes para los estudiantes. Y el punto de vista no va pura y exclusivamente por el caso sino también a nivel general (no conocemos las realidades de todos los estudiantes).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://patojad.com.ar/post/2020/06/universidades-p%c3%bablicas-privativas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Ver Publicacion
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-gente-opina"&gt;
La gente Opina
&lt;a href="#la-gente-opina" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como siempre nos gusta nuestra comunidad siempre da su opinión y nos gusta mostrar que todas las criticas son bien recibidas, todas las opiniones deben ser escuchadas y cada uno debe formar su propia idea, es al menos lo que intentamos nosotros…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Muy interesante. Tanto yo como mi pareja, estamos cursando en la Universidad Nacional del comahue (UNCO). Hace un tiempo largo se trabajo para migrar todo el sistema a software libre. Hoy en dia es un hecho.&lt;/p&gt;
&lt;p&gt;Sobre todo en la facultad de informática, las carreras tiene su base en software libre. Ya que los talleres de las distintas carreras (desde historias y filosofia, hasta las ingenierias) tiene talleres de informaticas con equipos con Debian.&lt;/p&gt;
&lt;p&gt;Tambien, desde la misma facultad hay una puja por migrar los sistemas de la provincia y el municipio también. Me sorprendió gratamente ir a hacer tramites de pantentes y contrarme con que las maquinas de provincia estaban usando manjaro.&lt;/p&gt;
&lt;p&gt;Pienso igual. Quizas, sea ausencia de decisión politica.
Por otro lado, un conocido de chile, trabajo para migrar a software libre las instituciones de su ciudad. Me supo comentar que encontro mucha resistencia. No recuerdo bien como, pero en los intentos aparecian licencias gratuitas donandas por microsoft para evitar la migración.&lt;/p&gt;
&lt;p&gt;Los estados y las instituciones publicas deben ser dueños de su sistema y de sus datos. Y solo se consigue con software libre.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Cristian B.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;El estado no se puede imponer, sino nos acusarian de ser rusia, cuba, venezuela lo dejan para otras ocasiones, el estado debe imponer el SL en la administración y obligar a los docentes a capacitarse en SL, por premios y castigos o por puntos, pero cuando tuvimos la oportunidad los docentes y los referentes hacían que los chicos arranquen con win las net, uno de ellos me respondió, si les dejo usar linux yo de que vivo??? lo bueno es que reconocía la supremacía de linux y sus comunidades en robustez de equipo&lt;/p&gt;
&lt;p&gt;una escuela no puede tener directivas en cuanto a los sistemas a usar, equivale a decirle al alumno que debe pensar y que no, a no ser que te hayas inscripto explicitamente en una escuela de microsoft&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Silvia
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Quiero ver las pavadas que les van a decir. Vamo arriba @PatoJAD&lt;/p&gt;
&lt;p&gt;Porqué estoy seguro, de que les van a decir que usen winbugs y office. Los van a tratar de &amp;ldquo;convencer&amp;rdquo; de seguro.&lt;/p&gt;
&lt;p&gt;Es Lamentable !!! Recuerdo mis clases de Analista en Sistemas, todo bajo ambiente winbugs (y aparte, por si eso no bastara los trabajos había que hacerlos con extensión .doc&amp;hellip;. )
Creo que solo tuvimos una clase con una sola máquina corriendo Linux. Así salen los &amp;ldquo;futuros profesionales&amp;rdquo;, con una visión miope y corta de la realidad. Luego me saqué las ganas e hize el curso de Adm. Linux.
Hay mucho &amp;ldquo;profe de Informática&amp;rdquo; chantún, que realmente no saben una mierda. Los sacás del libreto y se pierden en la neblina&amp;hellip;&lt;/p&gt;
&lt;p&gt;También hay unos pocos, que realmente saben muchísimo (pero son una minúscula minoría).&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Jose
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Dicen gobierno publico informática publica 😏😏😏 y estoy de acuerdo con ello 👍👍👍&lt;/p&gt;
&lt;p&gt;Y la vaga y típica creencia estúpida de que la gente cree que la computadora &amp;ldquo;es windows&amp;rdquo; y que si no tienen esa cosa o si se les descompone y no sirve creen que su computadora muere y ya no hay solución &amp;hellip; Y ya me ha pasado con varia gente eso de que tienen esa estúpida creencia y ps no 😑😑😑&lt;/p&gt;
&lt;p&gt;Si y no pero si les &amp;ldquo;preocupara&amp;rdquo; que los alumnos usaran lo que ellos creen que es &amp;ldquo;mejor&amp;rdquo; y &amp;ldquo;correcto&amp;rdquo; en base a sus programas o normas deberían de proporcionarles eso sin costo&amp;hellip; Y lo digo porque en la.universidad que estaba así era, que si uno no tenia el sistema windows u office para utilizarlo la escuela lo daba sin ningún costo, nomas había que inscribirse en no se que convenio y ya pero igual era opcional si uno quería o no o podía usar otra cosa, hasta eso no era tan obligado usar windows ni office del todo&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Miguel R 🙋‍♂🇲🇽👨‍✈
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Y hay profes de ciencia de la computaccion que son unos cabrones hijos de puta, einsinan malo para que los otros piensen que son genios.
Son unos pendejos que solo hacen pendejadas.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
🇧🇷 Alessandro Ebersol 🇧🇷
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;¿ Muchos ?.
Si de una institucion se saca uno solo, ¡ Bingo !.&lt;/p&gt;
&lt;p&gt;También hay unos pocos, que realmente saben muchísimo.
Coincido de punta a punta, realidad pura.&lt;/p&gt;
&lt;p&gt;Y si, pela el quinto forro de las pelotas.
El estamento educativo en Argenta al menos, es un reflejo de Argenta misma.
Docentes que titularizan por acomodo: T O D O S.&lt;/p&gt;
&lt;p&gt;Ponen un marcachiflo que no sabe ni prender una computadora como titular en cátedras de el calibre de Sistemas Operativos, Análisis y Diseño de Sistemas, y mejor paro aca, porque es calentarse en serio.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
⊲ Tano ⊳
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Totalmente. Yo me encuentro constantemente en contacto con mi secundario del que me recibi. Desde hace 7 años sigo aportando a donore servicios del que fuera. Asesoramiento electricidad carpinteria lo que se les ocurra y jamas escuche semejante injusticia&lt;/p&gt;
&lt;p&gt;Yo no estoy de acuerdo en realidad a que la educacion &amp;ldquo;publica&amp;rdquo; es gratis por el simple echo que se mantiene bajo impuestos. Pero si estoy totalmente de acuerdo a que la educacion sea totalmente LIBRE y abierta para todos por igual. La educacion es un derecho y punto. Mientras el fin sea entregar el tp y que sea genuino , todo lo demas es escoria&lt;/p&gt;
&lt;p&gt;Es lo mismo que pienso sobre la internet. No tengo el plan en las manos obviamente pero tienen que hacer una parte de internet libre y accesible para todos. Es un derecho el educarse. Hay chicos que no tienen internet y se pierden la oportunidad de estudiar. Que yo sepa no hay ninguna biblioteca que te obligue a pagar por el acceso a informacion a un libro de estudio . Lo mismo tiene que ser con parte de la internet&amp;hellip;no digo su totalidad pero si gran parte.&lt;/p&gt;
&lt;p&gt;De que me sirve tenes wifi en un colegio publico si donde vive tal persona no llega internet o no tiene sus medios&lt;/p&gt;
&lt;p&gt;Si hay algo que entiendo es que no existe la gente pobre, sino que existen faltas de POSIBILIDADES&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Luis
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;No me sorprende, me acuerdo un tiempo que hacia practicas en una escuela, recomendaba libreoffice para reducir gastos y lo que me dijieron es que se veia muy obsoleto&amp;hellip;.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Drindie
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;está muy mal.. precisamente anoche una cliente me pidió instalarle urgentemente &amp;ldquo;Photoshop&amp;rdquo; a la laptop de su hijo, porque mañana tenía que entregar una tarea que les dejó el inútil del profesor de su hijo.. se lo instalé y le cobré $$$.. el muchacho ni si quiera sabía usarlo.. dijo que iba a ver tutoriales en Youtube.. increible!!!&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
alexey nemovff
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;No me sorprende, me fui de una consultora que decia &amp;ldquo;si no es software pago no sirve&amp;rdquo; y querian obligarme a usar Windows porque dicen que es el mejor, me quedo con linux que lo que preciso lo tengo.&lt;/p&gt;
&lt;p&gt;Es mas hace unos dias hice una entrevista y me dicen si no sabes Photoshop no te podemos tomar, es una mentalidad de querer imponerte que compres lo que ellos dicen o estas mal, bueno entonces vengo bien fallado porque no voy a ponerme de mal humor con aus actualizaciones y actualizaciones que nonprenden mas la pc!!!!&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Samuel Vasilovski
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Sabes cuál es el problema la gente solo cree que Windows existe cuando dices qué hay otros so aparte de Mac se sorprenden y dicen enserio no savia por que la gente no le interesa la verdad solo usan lo que tienen a la mano no buscan ni nada pero hay otros que si otros solo ven el interés no deja dinero no lo aprendo pues no me sirve para vivir pero hay otros que son curiosos y les intriga todo y les importa aprender otros simplemente dicen es una clase más de mierda tengo que tomarla y pasarla que más da igual eso no me va a servir pero tengo que pasar si o si&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Marcelo Collado
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;Como podemos ver dentro de nuestra comunidad existen muchas experiencias y opiniones, y eso es lo que nos vuelve una hermosa comunidad y hermosos debates que terminan en conocer un poco más sobre la vida de algún miembro…&lt;/p&gt;
&lt;p&gt;¿Y vos que pensas?&lt;/p&gt;</description></item><item><title>Universidades Públicas ¿Privativas?</title><link>https://patojad.com.ar/post/2020/06/universidades-p%C3%BAblicas-privativas/</link><pubDate>Fri, 19 Jun 2020 10:40:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/universidades-p%C3%BAblicas-privativas/</guid><description>&lt;p&gt;En Argentina (y creo que en gran parte de latinoamérica) la piratería de software es una moneda corriente y no siempre por &lt;em&gt;“necesidad”&lt;/em&gt; muchas veces es por &lt;strong&gt;ignorancia&lt;/strong&gt;. En este caso voy a comentar una historia que vivo actualmente la cual me genera un alto nivel de indignación…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="contexto"&gt;
Contexto
&lt;a href="#contexto" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Actualmente mi pareja se encuentra cursando &lt;strong&gt;informática&lt;/strong&gt; (Materia) en la Universidad Nacional de Quilmes en la carrera de Biotecnología. Y seamos realista, ella desde que está conmigo se encontró con la obligación técnica de usar Linux (Porque dudo que tenga ganas de formatear una pc para ponerse otro sistema). Siempre usa la distro que yo elijo, por lo cual podríamos concluir que es una persona que tiene un dominio básico/intermedio de la tecnología.&lt;/p&gt;
&lt;p&gt;En este periodo de la cursada están viendo &lt;strong&gt;Ofimática&lt;/strong&gt; (Cosa que ni yo se porque yo uso un editor de textos plano o un IDE ni idea de nada de eso pero aprendimos juntos) Y obviamente ella usa &lt;strong&gt;LibreOffice&lt;/strong&gt; (y quiero recalcar que esto es libre, gratis y multiplataforma y no nos olvidemos de esto) lo cual le trae algunos problemas porque la clase está diseñada para las herramientas de MS y no tiene una explicación más amplia, así que sumemos a cada clase la necesidad de buscar en internet un poco mas de info para poder hacer las prácticas correspondientes&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="docentes-que-no-están-preparados"&gt;
Docentes que no están preparados
&lt;a href="#docentes-que-no-est%c3%a1n-preparados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://aedlorotava.files.wordpress.com/2016/11/equipo-docente-informatica.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Yo trato de ser muy justo en lo que hablo, pienso y digo, más allá de que en los videos me ponga picante &lt;em&gt;(Es que a ustedes les gusta lo picante)&lt;/em&gt;. La historia que traigo hoy es realmente indignante, porque deja claro que existen muchas personas que no se toman el tiempo de hacer bien su trabajo.&lt;/p&gt;
&lt;p&gt;Yo entiendo que un docente que &lt;em&gt;toda su vida usó las herramientas de MS&lt;/em&gt; solo sepa usar eso, esto lo entiendo de cualquier docente que &lt;strong&gt;no esté relacionado a la informática&lt;/strong&gt;. ¿Por qué solo para ellos? Porque muchos de estos docentes solo lo ven como una herramienta y nos les interesa en lo más mínimo la tecnología, por lo cual puedo comprender que el miedo de conocer nuevas tecnologías o simplemente tecnologías diferentes le impidan conocer &lt;strong&gt;alternativas libres&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Sin embargo si sos un profesor de Informática &lt;strong&gt;no podes no saber que existen otras tecnologías&lt;/strong&gt;, y lo peor es que &lt;strong&gt;no podes no estar preparado para un alumno que no use herramientas pagas o piratas&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-problema"&gt;
El problema
&lt;a href="#el-problema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En la parte de Hojas de cálculo (O mal llamado excel por este “docente”) devolvió el trabajo con supuesto &lt;em&gt;“errores”&lt;/em&gt; que tiene que ver con la compatibilidad (MS Office cambia algunas funciones por nombres raros&amp;hellip;) por lo cual podemos verlo como dos cosas, o decidió no tomarse el tiempo de instalar LibreOffice para corregir lo cual sería una &lt;strong&gt;discriminación&lt;/strong&gt;, o simplemente ignora la existencia del mismo y no estaría en condiciones de corregir el trabajo.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://blog.fromdoppler.com/wp-content/uploads/problemasdecontenido.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;¿Es realmente aceptable que esto pase? ¿Una persona no puede cursar si no tiene el dinero suficiente como para comprar un sistema operativo y un paquete de informatica? O peor aún, caer en la &lt;strong&gt;piratería&lt;/strong&gt; (delito punible en argentina). Estamos hablando de un establecimiento público. ¿Las autoridades de la institución avalan esto limitantes impuestos a sus estudiantes?&lt;/p&gt;
&lt;h1 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="otra-cara-de-la-misma-moneda"&gt;
Otra cara de la misma moneda
&lt;a href="#otra-cara-de-la-misma-moneda" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;![](&lt;a href="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcTHtg6hmjidPlV_zZ6dUgJUem1HxRSGGgAaOWls6prsdTmBg_qT&amp;amp;usqp=CAU%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcTHtg6hmjidPlV_zZ6dUgJUem1HxRSGGgAaOWls6prsdTmBg_qT&amp;usqp=CAU"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Yo curso en la &lt;strong&gt;misma Facultad&lt;/strong&gt;, en el &lt;strong&gt;mismo Departamento&lt;/strong&gt; (Ciencia y Tecnología) pero &lt;em&gt;otra carrera&lt;/em&gt; (Lic. en Desarrollo de Software) y desde que entré a la facultad siempre se incentivo a usar sistemas libres (o al menos en la mayoría de las materias cursadas) ¿Como es posible que dentro de un mismo departamento las cosas sean tan antagónicas?&lt;/p&gt;
&lt;h1 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="mi-crítica"&gt;
Mi crítica…
&lt;a href="#mi-cr%c3%adtica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://promocionmusical.es/wp-content/uploads/2018/03/xcriticas-redes-sociales-big-810x455.jpg.pagespeed.ic.ZWrrVB9BqD.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Claramente no pido que todos usen linux (aunque no es una mala idea), simplemente &lt;strong&gt;razono&lt;/strong&gt; por mi parte que debería ser todo apto para aquellos usuarios que usan Windows y sus herramientas y para aquellos que no lo usan por diferentes motivos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No les gusta&lt;/li&gt;
&lt;li&gt;No tienen dinero para pagarlo&lt;/li&gt;
&lt;li&gt;No quieren delinquir con piratería&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Como configurar Proton con Protontricks</title><link>https://patojad.com.ar/post/2020/06/como-configurar-proton-con-protontricks/</link><pubDate>Thu, 18 Jun 2020 08:04:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/como-configurar-proton-con-protontricks/</guid><description>&lt;p&gt;&lt;strong&gt;Proton&lt;/strong&gt; es la propuesta de Steam para ejecutar juegos de Windows desde Linux, pero no deja de ser un Wine optimizado por Valve y con una lista de con una lista de compatibilidad que va creciendo poco a poco.&lt;/p&gt;
&lt;p&gt;Muchos conocen Winetricks, una herramienta &lt;em&gt;imprescindible&lt;/em&gt; para tunear Wine que nos ha facilitado las cosas entre otras alternativas como PlayOnLinux.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://1.bp.blogspot.com/-aKkpJFMZfKk/XXzj8U5jyzI/AAAAAAAAdbA/Na65dUYJHigRbZ7_OKJoubCC7qaLAWxmwCLcBGAsYHQ/s320/Steam.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Pero ¿y si pudiéramos tener una herramienta parecida a Winetricks pero con perfiles al estilo de PlayonLinux dentro de Steam?&lt;/p&gt;
&lt;p&gt;Claramente ya alguien se hizo esta pregunta, la compartió y diseño una respuesta: &lt;strong&gt;Protontricks&lt;/strong&gt; es la respuesta para hacer funcionar esos juegos que aún no están soportados de forma oficial por Steam.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalando-protontricks"&gt;
Instalando Protontricks
&lt;a href="#instalando-protontricks" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para usar &lt;strong&gt;Protontricks&lt;/strong&gt; es necesario instalar algunas herramientas primero, así como &lt;strong&gt;Winetrick&lt;/strong&gt;, entre otras cosas. También es altamente recomendable que Instales y/o &lt;strong&gt;actualices los controladores de la GPU y Vulkan para mejor rendimiento&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Para arrancar vamos a instalar &lt;em&gt;PIP&lt;/em&gt;, &lt;em&gt;Git&lt;/em&gt; y &lt;em&gt;Winetricks&lt;/em&gt; en primer lugar, esto lo vamos a hacer de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install python3-pip python3-setuptools python3-venv git winetricks
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A continuación vamos a Instalar Pipx. No es estrictamente necesario pero si es muy recomendado y en esta ocasión vamos a usarlo.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python3 -m pip install --user pipx
~/.local/bin/pipx ensurepath
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para continuar vamos a &lt;em&gt;cerrar la terminal y la volvemos a abrir&lt;/em&gt; es necesario para que se apliquen los paths. A continuación de esto vamos a instalar &lt;strong&gt;Protontricks&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pipx install protontricks
pipx upgrade protontricks
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para instalar la última versión de desarrollo.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pipx install --spec git+https://github.com/Matoking/protontricks.git protontricks
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="hora-de-usarlo"&gt;
Hora de Usarlo!
&lt;a href="#hora-de-usarlo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Primero instala el juego con &lt;strong&gt;SteamPlay&lt;/strong&gt; (Proton). A continuación buscaremos el APPID de la siguiente forma.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;protontricks -s JUEGO
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto nos mostrará la APPID de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Found the following games:
JUEGO (NUMERO_APPID)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora instalamos los componentes necesarios para hacer funcionar ese juego como por ejemplo DirectX9.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;protontricks APPID d3dx9 d3dcompiler_43 win10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Listo, con eso sería todo en principio, aunque hay que tener en cuenta que como sucedía en Wine, cada juego puede llegar a necesitar algunas modificaciones o instalar ciertos elementos para que funcione correctamente.&lt;/p&gt;
&lt;p&gt;Para saber que componentes debes instalar busca el juego en &lt;a href="https://www.protondb.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
ProtonDB
&lt;/a&gt; para ver las configuraciones de otros usuarios.&lt;/p&gt;
&lt;p&gt;Fuente: Mis Juegos en Linux&lt;/p&gt;</description></item><item><title>Vaciar la papelera de root</title><link>https://patojad.com.ar/post/2020/06/vaciar-la-papelera-de-root/</link><pubDate>Wed, 17 Jun 2020 09:36:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/vaciar-la-papelera-de-root/</guid><description>&lt;p&gt;No se si realmente esto le pasa a todos pero alguna vez nos queda en la papelera ese archivo que el filemanager no puede borrar y se asienta ahí como un archivo intocable ocupando una parte de nuestro disco (aunque sea mínimo) pero estando siempre ahí para molestarnos con su presencia&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="solución"&gt;
Solución
&lt;a href="#soluci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Lamentablemente para todos aquellos que no son fanáticos de la terminal yo sí lo soy, no porque crea que todos debieran usarla, sino porque en mi tiempo en linux entendí que es la forma mas rapida y sencilla de solucionar algunos problemas. Por lo cual lo que traigo hoy es esa línea de la terminal que nos permite vaciar la papelera como root para que no quede nada vivo, y esto podemos hacerlo de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo rm -rf ~/.local/share/Trash/*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;¡ATENCIÓN!&lt;/strong&gt; Esto no tiene vuelta atrás por lo cual es posible que si borras algo que querías recuperar no puedas hacerlo de forma sencilla, te recomiendo saber bien que tenes en la papelera para evitar problemas…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="entender-para-hacer"&gt;
Entender para hacer
&lt;a href="#entender-para-hacer" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como siempre digo es importante entender lo que estamos haciendo porque lo más importante es aprenderlo (&lt;em&gt;OJO no digo aprender de memoria pero siempre que leemos para qué funciona algo después nuestro cerebro nos da la info cuando lo vemos y es más fácil entender qué está pasando en muchos casos…&lt;/em&gt;). Por lo cual dejamos una &lt;strong&gt;mínima&lt;/strong&gt; explicacion de que es cada parte de este comando que dejamos ahí…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;sudo&lt;/strong&gt; muy popular es ya el comando que nos permite obtener todos los &lt;strong&gt;privilegios&lt;/strong&gt; de administrador&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;rm&lt;/strong&gt;: nos sirve para eliminar archivos o carpetas &lt;em&gt;por lo tanto debe ejecutarse con mucho cuidado, especialmente si estás como superusuario porque es amigo fiel de las cagadas&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-f&lt;/strong&gt;: esa &lt;em&gt;«f»&lt;/em&gt; es de &lt;strong&gt;«force»&lt;/strong&gt;, porque no nos gusta las terminales que hacen demasiadas preguntas, a la hora de borrar archivos. Es más bien como un “si a todo” con posibilidad de venderle el alma al demonio!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-r&lt;/strong&gt;: tiene una función recursiva, elimina las carpetas contenidas contenidas en la papelera (Trash) y todo su contenido. Digamos que limpiamos hasta lo mas recóndito del directorio&amp;hellip;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;~/.local/share/Trash/*:&lt;/strong&gt; Es la dirección donde está la papelera, el símbolo inicial (creo que se llama &lt;em&gt;«virgulilla»&lt;/em&gt;) nos sirve para identificar el directorio principal del usuario root y el asterisco final es una especie de comodín para eliminar todas las carpetas incluidas en Trash.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="bonus"&gt;
Bonus
&lt;a href="#bonus" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ya entendiendo el comando por ahí queramos jugar un poco más con la terminal, por lo cual vamos (antes de borrar) a revisar que tiene nuestra papelera desde la terminal, comando de terminal muy importante que nos va a servir muchisimo…&lt;/p&gt;
&lt;p&gt;Primero nos logueamos como &lt;strong&gt;superusuario&lt;/strong&gt; &lt;em&gt;(el guión nos va a servir para cambiarnos al directorio de root)&lt;/em&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;su -
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;nos vamos a la papelera con el conocido &lt;em&gt;cd&lt;/em&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd ~/.local/share/Trash/*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;y echamos un vistazo a lo que contiene &lt;em&gt;ls&lt;/em&gt; (incluyendo los archivos ocultos &lt;em&gt;-a&lt;/em&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;en especial a la carpeta &lt;em&gt;carpeta&lt;/em&gt; siendo carpeta el nombre de cualquier carpeta que tengamos nosotros dentro de la papelera:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -a carpeta
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Fuente: La Mirada del Replicante&lt;/p&gt;</description></item><item><title>Anbox ¿La solución definitiva?</title><link>https://patojad.com.ar/post/2020/06/anbox-la-soluci%C3%B3n-definitiva/</link><pubDate>Wed, 10 Jun 2020 09:52:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/anbox-la-soluci%C3%B3n-definitiva/</guid><description>&lt;p&gt;Parece que últimamente estoy haciendo saga de los mismos temas, pero esto suele pasar cuando uno investiga y busca nuevas alternativas, y hoy vamos a estar un poco cargaditos de críticas hacia ubuntu distro que yo no recomiendo pero admito que es muy buena para el target de usuarios al que apunta…&lt;/p&gt;
&lt;p&gt;Ya ayer hablamos de Shashlik una app que nos permite ejecutar aplicaciones android en nuestro sistema operativo sin emularlo completamente, sin embargo esta aplicación se encuentra abandonada desde 2016, y si bien aún puede levantar aplicaciones sin problemas muchas veces lo ideal es mantenernos actualizados por seguridad y funcionalidad, por lo cual decidí traer su &lt;strong&gt;equivalente actualizado&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Sin embargo de esta app hay cosas que no me gustan aunque entiendo su decisión y es ahí donde vamos a &lt;strong&gt;bardear un poco&lt;/strong&gt; a Ubuntu así que… Vamos a eso!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sobre-la-app"&gt;
Sobre la app
&lt;a href="#sobre-la-app" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como dijimos anteriormente esta aplicación no utiliza QEMU ni ningún otro emulado para levantar una aplicación por lo cual mejora el rendimiento haciéndolo más &lt;strong&gt;PERFORMANTE&lt;/strong&gt; (Abrazo a todos los que me &lt;em&gt;bardearon&lt;/em&gt; de forma cariñosa por usar performante y les tengo que dar la derecha es una palabra que no existe pero que todo Linuxnauta entiende) Por lo cual lo vuelve una de las &lt;strong&gt;mejores opciones&lt;/strong&gt; porque sería una capa de compatibilidad (Como wine) que hace que nuestro sistema no baje el rendimiento bruscamente&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://c1.staticflickr.com/1/913/41527912900_68ce4a25d5_o.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Anbox es una solución &lt;strong&gt;convergente&lt;/strong&gt;. Funciona de igual forma en una computadora portátil y un teléfono móvil, siempre que ejecuten alguna variante de Linux, claramente. Sin ir muy lejos, los orígenes de esta iniciativa radica en &lt;strong&gt;Ubuntu Touch&lt;/strong&gt; por lo cual podemos ver hasta donde planean alcanzar la compatibilidad…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="su-lado-negativo-aprende-ubuntu"&gt;
Su lado Negativo (Aprende Ubuntu)
&lt;a href="#su-lado-negativo-aprende-ubuntu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La instalación es directamente snap, esto es algo que no me agrada a simple vista dado que snap podría llegar reiterar librerias y demas sin ningun tipo de sentido al igual que sus hermanos como flatpack y demás…&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cdn.lignux.com/wp-content/uploads/2018/07/anbox-1.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Sin embargo después de revisar cómo está implementado este increíble proyecto comprendí que es &lt;strong&gt;realmente importante&lt;/strong&gt; que esto sea así dado que necesita versiones muy específicas y una actualización podría llegar a rompernos todo y al ser una app tan delicada con una función tan importante (Piensen en un smart donde se use wpp laboralmente instalado en Anbox no debería romper nunca) por lo cual podemos decir que Anbox es &lt;strong&gt;un buen ejemplo&lt;/strong&gt; de cómo se debe usar snap&lt;/p&gt;
&lt;p&gt;Ubuntu tomó la decisión de poner snap como defecto (Cosa que no quiero comentar mucho) Pero esto no está bueno porque desaprovechamos muchas cualidades de las bibliotecas compartidas. Está bien usar snap, pero en casos como los de Anbox.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ahora el repo de la comunidad no pudo hacer nada por nosotros pero si podemos explicarte paso a paso cómo hacer para tener una instalación simple y funcional… Por lo cual vamos a proceder a eso:&lt;/p&gt;
&lt;p&gt;Debemos agregar un repositorio que es una &lt;strong&gt;ppa&lt;/strong&gt;, pero con el fin de hacer mas lindo el tuto vamos a agregarlo &lt;em&gt;a mano&lt;/em&gt; de la siguiente forma&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; deb http://ppa.launchpad.net/morphis/anbox-support/ubuntu bionic main &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/anbox.list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Una vez que este agregado debemos agregar la &lt;strong&gt;clave pública&lt;/strong&gt; para poder acceder al repositorio y esto lo hacemos de la siguiente forma&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 21C6044A875B67B7&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Y teniendo esto ya estamos preparados para seguir con el siguiente paso! que es nada más ni nada menos que instalar &lt;strong&gt;los módulos del kernel&lt;/strong&gt;. Esto nos agrega 2 módulos que se actualizan automáticamente cuando se actualiza el kernel.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install anbox-modules-dkms&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Después de instalar el paquete anbox-modules-dkms, debe cargar manualmente los módulos del kernel. &lt;em&gt;La próxima vez que se inicie su sistema, se cargarán automáticamente&lt;/em&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo modprobe ashmem_linux
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo modprobe binder_linux&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://vidatecno.net/wp-content/uploads/2019/05/como-ejecutar-aplicaciones-android-en-ubuntu-linux-con-anbox-1.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ahora debería tener dos nuevos nodos en su directorio de sistemas /dev el cual podemos probar con el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls -1 /dev/&lt;span class="o"&gt;{&lt;/span&gt;ashmem,binder&lt;span class="o"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Donde vamos a estar esperando una salida como la que vemos a continuación.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/dev/ashmem
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/dev/binder&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;El segundo paso &lt;em&gt;instalará el complemento Anbox&lt;/em&gt; de la tienda y le dará todo lo que necesita para ejecutar la experiencia completa de Anbox. Instalar el complemento de Anbox es muy simple:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo snap install --devmode --beta anbox&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Por el momento, requerimos el uso de &amp;ndash;devmode ya que el complemento de Anbox aún no está completamente limitado. Se ha comenzado a trabajar con el proyecto snapd upstream para obtener soporte para el confinamiento completo. Como efecto secundario del uso de &amp;ndash;devmode, el ajuste &lt;strong&gt;no se actualizará automáticamente&lt;/strong&gt;. Para actualizar a una versión más nueva, puede ejecutar:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo snap refresh --beta --devmode anbox&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalar-aplicaciones"&gt;
Instalar aplicaciones
&lt;a href="#instalar-aplicaciones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://instatecno.com/wp-content/uploads/2020/02/Anbox-700x400.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ya teniendo instalado Anbox tenemos que instalar aplicaciones, o mejor dicho queremos por lo cual debemos proseguir de la siguiente forma. Requerimos tener el adb instalado si no lo tenes podes hacerlo asi:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install android-tools-adb&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Anbox &lt;strong&gt;no proporciona ninguna funcionalidad para obtener aplicaciones de Android&lt;/strong&gt;. Necesitamos obtenerlos de una fuente en Internet. Una vez que tenga el paquete &lt;em&gt;APK&lt;/em&gt; para la aplicación, puede instalarlo en el contenedor de Android con el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adb install aplicacion.apk&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Si el contenedor de Anbox aún &lt;em&gt;no se está ejecutando&lt;/em&gt;, podemos comenzar cargando la aplicación del administrador de aplicaciones:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;anbox.appmgr&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Shashlik más que un emulador</title><link>https://patojad.com.ar/post/2020/06/shashlik-m%C3%A1s-que-un-emulador/</link><pubDate>Tue, 09 Jun 2020 09:33:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/shashlik-m%C3%A1s-que-un-emulador/</guid><description>&lt;p&gt;Shashlik es, básicamente, un conjunto de componentes de software que permite a los usuarios de Linux instalar y ejecutar APK de Android &lt;strong&gt;directamente&lt;/strong&gt; en su distribución GNU / Linux. Shashlik logra eso mediante el uso de una versión simplificada de Android &lt;strong&gt;en lugar de emular una&lt;/strong&gt;, que se anida dentro de la sesión del usuario al iniciar una aplicación de Android instalada.&lt;/p&gt;
&lt;p&gt;Si bien el desarrollo de este prometedor proyecto &lt;strong&gt;murio en 2016&lt;/strong&gt; aun la version instalable funciona perfectamente con algunas apps (Por ejemplo la utilizo con una app de clima, lo que podriamos hacer es enumerar las apps que si funcionan entre toda la comunidad)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalando-shashlik"&gt;
Instalando Shashlik
&lt;a href="#instalando-shashlik" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;la instalación es completamente sencilla gracias, nuevamente, al repo de la comunidad, basta con tenerlo instalado y ejecutar el simple comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install shashlik
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y en unos minutos tendremos instalado esta increíble app&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalar-y-ejecutar-apk-de-android"&gt;
Instalar y ejecutar APK de Android
&lt;a href="#instalar-y-ejecutar-apk-de-android" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.howtoforge.com/images/how-to-install-and-run-android-apk-on-linux-with-shashlik/pic_4.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Después de instalar Shashlik, descarguamos la aplicación que deseamos ejecutar con Shashlik. Luego abrimos una terminal en la ubicación de los APK descargados y escribimos el siguiente comando para instalarlo en nuestro sistema:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/opt/shashlik/bin/shashlik-install name-app.apk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.howtoforge.com/images/how-to-install-and-run-android-apk-on-linux-with-shashlik/big/pic_2.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;(Las imágenes no son mías, a mi al terminar la instalación de una app, creo que la del clima, me devolvió un error sobre notificaciones y no se que mas, pero la app me abre genial y funciona, estimo que las notificaciones no funcionan pero no es relevante porque es de clima y lo veo cuando quiero&amp;hellip;)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;El siguiente paso es &lt;strong&gt;ejecutar el APK&lt;/strong&gt; escribiendo el siguiente comando en la misma sesión de terminal:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/opt/shashlik/bin/shashlik-run splash.png name-app.apk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una cosa importante a tener en cuenta en este punto es que durante la instalación, Shashlik ha creado y almacenado algunos archivos necesarios en &lt;code&gt;/.local/share/shashlik&lt;/code&gt;. Esos archivos incluyen el archivo de imagen PNG splash y el userdata.img. Al iniciar un APK, Shashlik busca el archivo que ha indicado en el comando. Entonces, si hay un splash.png correspondiente a una aplicación llamada test.apk, el comando se convierte en:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/opt/shashlik/bin/shashlik-run splash test.apk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.howtoforge.com/images/how-to-install-and-run-android-apk-on-linux-with-shashlik/pic_3.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-menu"&gt;
El Menu
&lt;a href="#el-menu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para simplificar las cosas, debo señalar que los &lt;strong&gt;APK están instalados en nuestro sistema&lt;/strong&gt; con el comando que se mostró anteriormente, por lo que si los buscamos en el menú de aplicaciones, debemos encontrarlos y &lt;strong&gt;ejecutarlos con un simple clic&lt;/strong&gt;. Sin embargo, esto &lt;em&gt;puede no funcionar bien&lt;/em&gt; para todas las aplicaciones, pero si lo hace, es bastante útil. Cualquiera sea el caso, debe saber cómo ejecutarlo desde la terminal para obtener la información necesaria para resolver cualquier problema.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.howtoforge.com/images/how-to-install-and-run-android-apk-on-linux-with-shashlik/pic_5.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Como actualmente &lt;strong&gt;no hay una función de desinstalación implementada&lt;/strong&gt;, podemos eliminar manualmente los archivos binarios instalados por Shashlik navegando a &lt;code&gt;/.local/share/applications&lt;/code&gt; y eliminando los archivos correspondientes. Esto debería eliminarlos del menú de aplicaciones.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="pantalla-lateral"&gt;
Pantalla Lateral
&lt;a href="#pantalla-lateral" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como el software ni siquiera ha alcanzado su &lt;strong&gt;primera versión estable&lt;/strong&gt;, no se puede jugar con ninguna opción que pueda ser crítica para la experiencia del usuario con ciertas aplicaciones. El caso de configurar el emulador en el modo de pantalla horizontal es habitual, así que aquí está cómo hacerlo. Abrimos nuestro administrador de archivos como administrador y navegamos a &lt;code&gt;/opt/shashlik/bin&lt;/code&gt; ahi abrimos &lt;code&gt;shashlik.run&lt;/code&gt; con nuestro editor de texto favorito. Luego ubicamos el argumento &lt;code&gt;-noskin&lt;/code&gt; y lo remplazamos con &lt;code&gt;-skin 480x320&lt;/code&gt; o cualquier otra resolución en las proporciones estándar.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.howtoforge.com/images/how-to-install-and-run-android-apk-on-linux-with-shashlik/pic_6.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Precisamente Shashlik no es el más estable y es triste que se haya dejado su desarrollo, sin embargo aun al dia de hoy &lt;strong&gt;corre perfectamente muchas apps&lt;/strong&gt; y es mucho más &lt;strong&gt;performante&lt;/strong&gt; que los emuladores en sí, el hecho de correr solo lo mínimo y no emular todo el sistema nos facilita muchas cosas.&lt;/p&gt;
&lt;p&gt;Si dependemos o utilizamos algunas apps no muy complejas es altamente recomendable utilizarlo, ya que de esta manera podemos hacerlo aprovechando los recursos de nuestra máquina. Sin embargo no está de más tener otro emulador a mano…&lt;/p&gt;
&lt;p&gt;Dejo un video de un juego que corre sin problemas para que vean que realmente está pulido aunque no tenga updates hace más de 3 años&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/9SC6c_ih_Ac?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;</description></item><item><title>Tilling en kwin (Deepin)</title><link>https://patojad.com.ar/post/2020/06/tilling-en-kwin-deepin/</link><pubDate>Mon, 08 Jun 2020 08:45:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/tilling-en-kwin-deepin/</guid><description>&lt;p&gt;En esta oportunidad vamos a estar &lt;strong&gt;configurando nuestro desktop&lt;/strong&gt; para que se acomode en forma de grilla o como todos conocemos con el nombre de tilling. y en esta oportunidad vamos a hacerlo con nuestro Deepin.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/rGom75QA_HA?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Para iniciar entendamos que este “tutorial” funciona en cualquier distro con kwin es decir que funciona con kde y en este caso lo vamos a hacer con &lt;strong&gt;Deepin&lt;/strong&gt;.&lt;/p&gt;
&lt;h1 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="instalando-lo-necesario"&gt;
Instalando lo necesario
&lt;a href="#instalando-lo-necesario" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;Para arrancar tenemos que instalar (como explica el video) las configuraciones de KDE que son las que nos permite modificar o personalizar, en este caso, kwin. Recordemos que si vamos a hacerlo en KDE este paso no es necesario y puede seguir con el siguiente. En el caso de deepin debemos instalarlo y lo hacemos de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install systemsettings
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="configurando-kwin"&gt;
Configurando Kwin
&lt;a href="#configurando-kwin" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;Una vez instalado vamos a abrir la configuración y nos dirigimos a la parte de gestión de ventana y de ahí a la sección de guiones de KWin.&lt;/p&gt;
&lt;p&gt;Ahí vamos a Obtener nuevos guiones y buscamos “tilling” y vamos a instalarlo (Para ver la opción precisa verifiquen en el video) y luego podemos activarlo.&lt;/p&gt;</description></item><item><title>Crea Tu Propio Pack de Stickers en Telegram</title><link>https://patojad.com.ar/post/2020/06/crea-tu-propio-pack-de-stickers-en-telegram/</link><pubDate>Sat, 06 Jun 2020 14:04:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/crea-tu-propio-pack-de-stickers-en-telegram/</guid><description>&lt;p&gt;En esta oportunidad vamos a ver como hacer &lt;strong&gt;nuestro propio pack de stickers&lt;/strong&gt;, en este caso, no vamos a meternos en edición de imagen, o vamos a hacer lo menos posible por lo cual no vamos a usar ni GIMP ni ninguna herramienta por el estilo.&lt;/p&gt;
&lt;p&gt;En mi caso los voy a usar mi propia cara y para eso voy usar &lt;strong&gt;BitMoji&lt;/strong&gt; (Gracias Cumpi por darlo a conocer) y voy a descargar de ahi en formato PNG todos lo que quiera convertir en sticker.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://sdk.bitmoji.com/render/panel/9c3e3a09-773c-4836-a93c-7efe79b8b562-c796801f-3d03-48e6-9753-c6df668cc1af-v1.png?transparent=1&amp;amp;palette=1%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://sdk.bitmoji.com/render/panel/9c3e3a09-773c-4836-a93c-7efe79b8b562-c796801f-3d03-48e6-9753-c6df668cc1af-v1.png?transparent=1&amp;palette=1"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Una vez descargados las imágenes nos daremos cuenta que &lt;strong&gt;no coinciden con el requisito de telegram&lt;/strong&gt; que sean de por lo menos 512*512 pero sí son perfectamente cuadradas, lo cual es perfecto para el uso que le queremos dar.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="hackaso-para-evitar-editar-las-imágenes"&gt;
Hackaso para evitar editar las imágenes
&lt;a href="#hackaso-para-evitar-editar-las-im%c3%a1genes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;A muchos no les gusta la terminal y si es tu caso podes tranquilamente abrir las imágenes una por una y redimensionarlas y volver a guardarlo. Si no te molesta usar un poco la terminal te voy a contar este &lt;em&gt;“Hackaso”&lt;/em&gt; que te va a permitir transformarlas en poco tiempo &lt;em&gt;(Tenía un script que tardaba un seg pero lo borre sin querer)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Abrimos una terminal y nos ubicamos donde descargamos las imágenes y a continuación basta con ejecutar el siguiente comando &lt;em&gt;(por cada imagen)&lt;/em&gt; para generar la redimensión de la misma sin ningún inconveniente:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;convert -resize 512×512 nombredelaimagen.png nombredelaimagen512.png
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y esto nos crea el archivo &lt;em&gt;nombredelaimagen512.png&lt;/em&gt; que tiene la medida perfecta para nuestro sticker.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="creando-el-pack"&gt;
Creando el Pack
&lt;a href="#creando-el-pack" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para comenzar tenemos que &lt;strong&gt;iniciar una conversación&lt;/strong&gt; con un bot que va a hacer casi todo por nosotros y para iniciarla te dejo aca abajo un hermoso botón!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://telegram.me/stickers" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
@stickers
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una vez iniciada la conversación nos va mostrar toda la lista de opciones y comandos que utiliza. Pero nosotros sabemos que es lo que queremos hacer, para iniciar vamos a &lt;strong&gt;crear un nuevo pack&lt;/strong&gt; de stickers enviando el siguiente comando&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/newpack
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lo primero que te pedirá el bot es un nombre para el paquete de stickers. Este nombre será visible para quien vea cualquiera de sus stickers, así que intenta que sea descriptivo. En mi caso vamos a usar &lt;em&gt;PatoJAD&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/4NtJ3vtN/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="agregando-stickers"&gt;
Agregando Stickers
&lt;a href="#agregando-stickers" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ahora tenemos que ir agregando de a uno cada uno de los stickers que queremos, para eso tenemos que enviarlo &lt;strong&gt;COMO ARCHIVO&lt;/strong&gt; y no como &lt;em&gt;imagen&lt;/em&gt;, y luego enviar los emojis con los que queremos relacionarlos, y así consecutivamente con todos los stickers que tengamos.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/c45QsSRN/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Una vez que hayamos subido todos los que nos gustan debemos terminar &lt;strong&gt;publicando el paquete&lt;/strong&gt; de stickers para su uso, esto lo podemos hacer simplemente enviando el comando publish al bot de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/publish
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y nos pedira 2 datos más, &lt;strong&gt;una imagen que represente al pack&lt;/strong&gt; que también debemos enviar como archivo y debe ser un PNG de 100x100 para lo cual les reitero el comando para que sea más simple&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;convert -resize 100×100 nombredelaimagen.png logo.png
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y una vez enviado nos pedirá &lt;strong&gt;el nombre Corto del Pack&lt;/strong&gt;, en nuestro caso vamos a volver a usar &lt;em&gt;PatoJAD&lt;/em&gt; dado que es corto y fácil de aprender.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/B6VqjMMt/image.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Y ya nos genero una url para compartir el sticker con quienes queramos y poder empezarlo a utilizar… Te dejo el pack que cree por &lt;em&gt;si queres usarlo&lt;/em&gt; y espero que te sirva y no te olvides de enviarnos los packs que hagas a &lt;a href="https://t.me/PatoJADCommunity" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-telegram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
nuestro grupo de telegram
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://t.me/addstickers/PatoJAD" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-telegram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Stickers PatoJAD
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Distros Raras</title><link>https://patojad.com.ar/post/2020/06/distros-raras/</link><pubDate>Fri, 05 Jun 2020 08:25:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/distros-raras/</guid><description>&lt;p&gt;Dentro del hermoso mundo de GNU/linux existen muchas libertades, por ejemplo cualquiera puede crear su distribución de linux, esto puede llegar a ser algo fascinante, porque podemos personalizar lo que deseemos y de esta forma tener una distro que se acomoda a nosotros, y no solo eso, sino que podemos compartirlo con todas las personas para que la usen.&lt;/p&gt;
&lt;p&gt;Pero como todo lo bueno en este mundo tiene su lado “malo” y si bien para esto quería hacer un video (Me di cuenta que les gusta verme sufrir o reirme de otras cosas) prefiero escribirlo en esta oportunidad…&lt;/p&gt;
&lt;p&gt;Así como muchas distros dia a dia nacen y quieren contribuir con el mundo, allá en el fondo de linux, en las partes mas oscuras y recónditas podemos encontrar distros que harían que cualquier linuxnauta ponga una cara similar a esta:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/JhmrwpxX/que512.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Vamos a ver algunas de las distros de que me dejaron asi…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="hannah-montana-linux"&gt;
Hannah Montana Linux
&lt;a href="#hannah-montana-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://hannahmontana.sourceforge.net/Site/Home_files/hml.2.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Hannah Montana Linux es un sistema operativo Linux basado en Kubuntu. Si bien esta distro no saco mas versiones hace tiempo es perfectamente usable y entendemos que es para Fanáticos de la cantante…&lt;/p&gt;
&lt;p&gt;La verdad es que no se que decir sobre esto, no es algo que esté mal, incluso la instale en una virtual porque vale la pena probar… Pero es que me dejo sin palabras…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="suicide-linux"&gt;
Suicide Linux
&lt;a href="#suicide-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Nunca conociste a una persona que no podías decirle nada porque se ofendia (a puesto a que muchos pensaron en Pato hablándole a cualquier pedro sobre la tierra). Bueno esa persona volvió y en forma de Distro de Linux!!!!!&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ytimg.com/vi/knbfwin6lIg/maxresdefault.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esta distro es perfecta para todos los que son habilidosos con la terminal, dado que si fallas un comando se ejecuta automáticamente el tan famoso&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rm -r /&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Suicidando literalmente a nuestra distro… Diganme si no es hermoso, yo la reinstale 3 veces y despues me canse… Saben cual es el comando con el que mate la distro 3 veces? ls que lo ponía como sl y no tenía instalada sl XD&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="apartheid"&gt;
Apartheid
&lt;a href="#apartheid" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Apartheid es una distribución Linux desarrollada por miembros del Stormfront de Estados Unidos, basada en PCLinuxOS y con entorno de escritorio LXDE, y de tipo Out Of The Box, es decir, lista para ser utilizada tras su instalación por la paquetería que ya integra. A simple vista parece una distro normal pero…&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.linuxadictos.com/wp-content/uploads/apartheid-1.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Por si no sabes de donde proviene la palabra Apartheid, se trata de un sistema de segregación racial que hubo en Sudáfrica y Namibia, separando a los ciudadanos por razas en espacios diferentes. Stromfront es un website, básicamente un foro, donde se reúne gente de orientación racista.&lt;/p&gt;</description></item><item><title>¿Que es DuckDNS? ¿Como lo instalo?</title><link>https://patojad.com.ar/post/2020/06/que-es-duckdns-como-lo-instalo/</link><pubDate>Tue, 02 Jun 2020 12:17:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/que-es-duckdns-como-lo-instalo/</guid><description>&lt;p&gt;Ya hablamos anteriormente sobre dyndns y noip y como se sabe no puede faltar ningun Pato en esta familia. Por lo cual te traemos DuckDNS otro DNS Gratuito pero mas cariñoso!!!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-es-esto-gratis"&gt;
¿Cómo es esto gratis?
&lt;a href="#c%c3%b3mo-es-esto-gratis" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Hemos creado un servicio que hemos querido para nosotros y creemos que es &lt;strong&gt;gratuito o lo más barato posible&lt;/strong&gt; para cubrir los costos de funcionamiento, nuestro intento es alojar y ejecutar el servicio con un desembolso casi nulo, excluyendo nuestro tiempo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-datos-guardas"&gt;
¿Qué datos guardas?
&lt;a href="#qu%c3%a9-datos-guardas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La respuesta simple es: &lt;strong&gt;lo menos posible&lt;/strong&gt;. Además de los registros de datos que se utilizan para facilitar y monitorear nuestros servicios, solo almacenamos su dirección de correo electrónico, ip, token, dominios y, por supuesto, sus ips de destino.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalar-gui-para-linux"&gt;
Instalar GUI para linux
&lt;a href="#instalar-gui-para-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Muchos queremos actualizar la ip para mantener siempre al dia los datos y para eso &lt;strong&gt;DuckDNS nos ofrece una GUI simple&lt;/strong&gt; de instalar que nos mantiene actualizados. Para esto debemos instalar primero una serie de dependecias (En este caso vamos a usar apt pero tu puedes instalarlo con tu gestor de paquetes)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install zenity cron curl
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para el siguiento paso n ecesitamos descargar el Script de la GUI el cual podemos hacerlo desde el siguiente link&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.duckdns.org/scripts/duck-setup-gui.sh" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar Script
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una ves descargado ya solo queda darle los permisos necesarios para ejecutar y obviamente ejecutarlo (Los siguientes comandos se ejecutan dentro de la carpeta donde se descargo el archivo)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chmod +x duck-setup-gui.sh
./duck-setup-gui.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Agregamos nuestro dominio&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.duckdns.org/img/linux-gui-01.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El token que obtuvimos en la WEB&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.duckdns.org/img/linux-gui-02.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ahora habrá un archivo de registro y un script de shell (que puede probar manualmente) instalado en algo como&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;~/duckdns/duck.log
~/duckdns/duck.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El script de shell se habrá agregado a un cron que se llama cada 5 minutos como su usuario, puede ver esto con&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;crontab -l
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="puedo-escribir-mi-propia-actualización"&gt;
¿Puedo escribir mi propia actualización?
&lt;a href="#puedo-escribir-mi-propia-actualizaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Sí, puedes hacer esto en http o https. puede separar los dominios por comas si desea actualizar más de uno, el parámetro ip es opcional, si lo deja en blanco detectaremos su ip de puerta de enlace&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://www.duckdns.org/update?domains={YOURVALUE}&amp;amp;token={YOURVALUE}[&amp;amp;ip={YOURVALUE}font&amp;gt;[&amp;amp;ipv6={YOURVALUE}font&amp;gt;[&amp;amp;verbose=truefont&amp;gt;[&amp;amp;clear=true]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La URL de actualización se puede solicitar en HTTPS o HTTP. Se recomienda que siempre use HTTPS. Ofrecen servicios HTTP para usuarios desafortunados que tienen HTTPS bloqueado.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El dominio puede ser un dominio único o una lista de dominios separados por comas.&lt;/li&gt;
&lt;li&gt;El dominio no necesita incluir la parte .duckdns.org de su dominio, solo el subnombre.&lt;/li&gt;
&lt;li&gt;Si no especifica la dirección IP, se detectará; esto solo funciona para las direcciones IPv4&lt;/li&gt;
&lt;li&gt;Puede poner una dirección IPv4 o una dirección IPv6 en el parámetro ip.&lt;/li&gt;
&lt;li&gt;Si desea actualizar AMBOS registros IPv4 e IPv6 a la vez, entonces puede usar el parámetro opcional ipv6&lt;/li&gt;
&lt;li&gt;Para borrar ambos registros, use el parámetro opcional clear=true&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Una buena respuesta normal es&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Okay
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una mala respuesta normal es&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;KO
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;si agrega el parámetro &amp;amp; verbose = true a su solicitud, entonces las respuestas OK tienen más información&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Okay
127.0.0.2 [La dirección IP actual para su actualización - puede estar en blanco]
2002: DB7 :: 21f: 5bff: febf: ce22: 8a2e [La dirección IPV6 actual para su actualización - puede estar en blanco]
ACTUALIZADO [ACTUALIZADO o SIN CAMBIO]
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="experimental--mac-os-x-linux-solaris-no-oficial"&gt;
EXPERIMENTAL – Mac OS X, Linux, Solaris (No oficial)
&lt;a href="#experimental--mac-os-x-linux-solaris-no-oficial" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Tambien existe una alternativa en JAVA que procura ser mas simple pero no la utilice nunca, tampoco la probe dado que &lt;strong&gt;no es oficial&lt;/strong&gt; pero vale marcarlo y dejarlo.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://etx.ca/downloads/duckdns.jar" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar JAR
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Esto podemos ejecutarlo desde la siguiente manera en nuestra terminal:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;java -jar duckdnsupdater.jar
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Recordemos que &lt;strong&gt;debemos tener Java Instalado&lt;/strong&gt; en nuestra PC&lt;/p&gt;</description></item><item><title>Intro a la Seguridad Informática</title><link>https://patojad.com.ar/post/2020/06/intro-a-la-seguridad-inform%C3%A1tica/</link><pubDate>Mon, 01 Jun 2020 08:10:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/06/intro-a-la-seguridad-inform%C3%A1tica/</guid><description>&lt;p&gt;En esta ocasión de alguna forma nos permitimos listar una serie de publicaciones relacionada entre sí con el fin de generar unos &lt;strong&gt;conceptos básicos&lt;/strong&gt; como base para la seguridad informática. Muchos relacionan esto con el “hacking” lo cual por tener las mismas bases es perfectamente válido.&lt;/p&gt;
&lt;p&gt;El contenido es netamente lectura, sin videos de por medios porque comprende muchos conceptos que son requeridos para comenzar a entender si queremos entrar en este mundo. En el campo de la informática una forma de aprender es probando y realizando cosas. Sin embargo &lt;strong&gt;soy partidario de que debemos tener un poco de conocimiento teórico previo&lt;/strong&gt; que nos ayudará a entender que pasa y muchas veces a resolver inconvenientes.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="las-publicaciones"&gt;
Las publicaciones
&lt;a href="#las-publicaciones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/posts/2020/01/direcciones-ips-nuestra-huella-en-la-red/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Direcciones IP: Nuestra Huella en la Red
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/posts/2020/02/qu%c3%a9-hay-detr%c3%a1s-de-una-ip/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
¿Qué hay detrás de una IP?
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/posts/2020/02/servidor-ftp-qu%c3%a9-es-instalando-nuestro-propio-servidor/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Servidor FTP qué es, instalando nuestro propio servidor
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/posts/2020/02/comandos-ftp/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Comandos FTP
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/posts/2020/02/ftp-problemas-de-conexion-port-y-pasv/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
FTP problemas de conexion, PORT y PASV
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/post/2020/02/ingenieria-social-informatica/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Ingenieria social informatica
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/posts/2020/02/que-es-la-virtualizacion/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
¿Qué es la Virtualización?
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/posts/2020/04/el-papel-de-javascript-en-la-seguridad/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
El papel de Javascript en la seguridad
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/posts/2020/04/servidor-proxy.-oculta-tu-identidad/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Servidor proxy. Oculta tu identidad
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Con estas pocas lecturas alcanza para comenzar a entender los conceptos iniciales de la seguridad informática.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="bonus"&gt;
Bonus
&lt;a href="#bonus" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En este mundo es importante estar al día con los datos y las actualizaciones, por lo cual te dejamos un bonus que es realmente interesante para todos los usuarios centrados en la seguridad&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://patojad.com.ar/posts/2020/03/http/3-una-internet-mas-rapida/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTTP/3 ¿Una internet mas rapida?
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Glava</title><link>https://patojad.com.ar/post/2020/05/glava/</link><pubDate>Fri, 29 May 2020 08:53:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/05/glava/</guid><description>&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://camo.githubusercontent.com/a4d7fd8c67e2e061f508c492fbe1f12187196bb9/68747470733a2f2f7468756d62732e6766796361742e636f6d2f44656669616e74496e666f726d616c496e6469616e7370696e796c6f6163682d73697a655f726573747269637465642e676966" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;GLava es un visualizador de espectro de audio OpenGL &lt;strong&gt;altamente configurable&lt;/strong&gt; y de uso general para X11. &lt;strong&gt;El desarrollo es activo&lt;/strong&gt; y se alienta la presentación de informes sobre problemas.&lt;/p&gt;
&lt;p&gt;Un visualizador de audio funciona extrayendo información de forma de onda y / o frecuencia del audio y alimenta esta información a través de algunas reglas de visualización, que producen lo que ve en la pantalla. Las imágenes generalmente &lt;strong&gt;se generan y se representan en tiempo real&lt;/strong&gt; y de manera sincronizada con la música a medida que se reproduce.&lt;/p&gt;
&lt;div style="width: 100%; height: 0px; position: relative; padding-bottom: 56.250%; border-radius: 20px;"&gt;
&lt;iframe
src='https://streamable.com/e/dgpj8'
title='https://streamable.com/e/dgpj8'
width="100%"
height="100%"
allowfullscreen
style="width: 100%; height: 100%; position: absolute;"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;GLava hace que un visualizador de audio en tiempo real aparezca como si estuviera incrustado en el fondo de su escritorio o en una ventana. Cuando se muestra como fondo, se mostrará en la parte superior de su fondo de pantalla, dando la apariencia de un fondo de pantalla &lt;strong&gt;animado y en vivo&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="configuración"&gt;
Configuración
&lt;a href="#configuraci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;GLava ofrece &lt;strong&gt;5 módulos diferentes&lt;/strong&gt;. Si queres probar los otros visualizadores, ejecutalos con el indicador &lt;code&gt;-m&lt;/code&gt; o edita el archivo &lt;code&gt;~/.config/glava/rc.glsl&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Si te qieres cambiar a algo diferente, podes probar el visualizador radial. Comparte similitudes con las barras, excepto que las barras se dibujan alrededor de un círculo.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;glava -m radial
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se puede probar de esa forma&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="otras-características"&gt;
Otras características
&lt;a href="#otras-caracter%c3%adsticas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Podes incrustar el visualizador de espectro de audio GLava OpenGL en el fondo del escritorio. Usar la bandera de escritorio. El software detecta el entorno de escritorio que está ejecutando y establece las propiedades apropiadas.&lt;/li&gt;
&lt;li&gt;Configura los módulos, editando los archivos (que están en GLSL 1 ). Cambia los colores, la transparencia y mucho más.&lt;/li&gt;
&lt;li&gt;Capacidad para transmitir tipos simples de datos a GLava en tiempo de ejecución a través de la función –pipe.&lt;/li&gt;
&lt;li&gt;Admite la mayoría de los administradores de ventanas compatibles con EWMH. Incluyen Mutter (GNOME, Budgie), KWin (KDE), Openbox (LXDE), Xfwm (XFCE), Fluxbox, IceWM y Bspwm. Algunos administradores de ventanas no son totalmente compatibles o necesitan pruebas como Enlightenment y Xmonad.&lt;/li&gt;
&lt;li&gt;Podes crear tus propios módulos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalacion"&gt;
Instalacion
&lt;a href="#instalacion" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La instalación, nuevamente &lt;strong&gt;gracias a la comunidad&lt;/strong&gt;, es más simple y no requiere andar compilando nada, basta con tener instalado nuestro repositorio. y podrás simplemente instalarlo de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install glava
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El único detalle a marcar es que está pensado para x11, por lo cual no se puede asegurar ni negar, de momento, su funcionamiento el wayland.&lt;/p&gt;</description></item><item><title>Thrive el Spore Open Sorce</title><link>https://patojad.com.ar/post/2020/05/thrive-el-spore-open-sorce/</link><pubDate>Thu, 21 May 2020 06:37:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/05/thrive-el-spore-open-sorce/</guid><description>&lt;p&gt;Remontando a mi infancia, puedo recordar pasarme horas jugando al un hermoso juego llamado spore, consiste básicamente en evolucionar tu célula hasta, prácticamente, dominar el mundo.&lt;/p&gt;
&lt;p&gt;Pasado el tiempo uno crece y con eso deja algunas cosas de lados, por ejemplo, el sistema operativo que venia en la máquina para instalar Linux o los juegos que jugaba de joven.&lt;/p&gt;
&lt;p&gt;Sin embargo navegando por internet me encontré con algo que merece una publicación por muchos motivos, y como digo siempre si tienes que compartirlo hazlo…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mas-que-una-alternativa"&gt;
Mas que una alternativa
&lt;a href="#mas-que-una-alternativa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Encontre navegando en internet lo que a simple vista era una alternativa a este juegazo que acompañó los años dorados de mi secundaria… Pero al investigar bien me di cuenta que es mucho más que un juego parecido… Es una alternativa Open Source que es nativa en linux y eso no es para menos…&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/Yyzmh-FmKos?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="a-lo-que-vinimos"&gt;
A lo que vinimos!!
&lt;a href="#a-lo-que-vinimos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;![](&lt;a href="https://i0.wp.com/revolutionarygamesstudio.com/wp-content/uploads/2015/01/Ocean-Slide-1.jpg?w=1080&amp;amp;ssl=1%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://i0.wp.com/revolutionarygamesstudio.com/wp-content/uploads/2015/01/Ocean-Slide-1.jpg?w=1080&amp;ssl=1"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Desde los bajos pozos de marea de su planeta natal, ascenderá al dominio cósmico. En cada paso, las potentes herramientas de creación y la mecánica de simulación profunda ayudarán al desarrollo de su especie. Revolutionary Games es el equipo de código abierto de voluntarios dedicados con el objetivo de hacer que Thrive sea una realidad.&lt;/p&gt;
&lt;p&gt;Nuestro equipo busca lograr dos objetivos principales: crear un juego atractivo y convincente que respete la inteligencia de nuestros jugadores y que sea lo más preciso posible en nuestra descripción de la teoría científica conocida sin comprometer la primera.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://i2.wp.com/revolutionarygamesstudio.com/wp-content/uploads/2015/01/Lizard-Slide-1.jpg?w=1079&amp;amp;ssl=1%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://i2.wp.com/revolutionarygamesstudio.com/wp-content/uploads/2015/01/Lizard-Slide-1.jpg?w=1079&amp;ssl=1"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Thrive encapsulará al jugador en las maravillas de la ciencia y el universo, permitiéndole manipular el mundo virtual a su alrededor con editores para modificar la tecnología, la cultura, los organismos y los sistemas solares completos. Se planean siete etapas: microbio, multicelular, consciente, despertar, sociedad, industrial y espacial, aunque por el momento solo nos estamos centrando en la primera de ellas, ya que todo el proyecto es una empresa masiva.&lt;/p&gt;
&lt;p&gt;Thrive toma muchos juegos como inspiración, desde roguelikes hasta juegos de gran estrategia, pero planeamos seguir nuestro propio camino con muchas mecánicas de juego. No esperes un clon.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://i1.wp.com/revolutionarygamesstudio.com/wp-content/uploads/25b746db34e91b981a22486b2fa72a371aeac0fb.jpeg?fit=1080%2C763&amp;amp;ssl=1%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://i1.wp.com/revolutionarygamesstudio.com/wp-content/uploads/25b746db34e91b981a22486b2fa72a371aeac0fb.jpeg?fit=1080%2C763&amp;ssl=1"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Nuestro objetivo es explorar las posibilidades de simulación dentro del contexto del juego, enfrentando al jugador contra el entorno del juego mientras ejercen las fuerzas de la evolución. Los jugadores crearán y editarán un organismo en su viaje desde la insignificancia hasta las estrellas, utilizando múltiples herramientas de creación para elevarse por encima de sus adversarios, ellos mismos productos de la evolución por selección natural en el ecosistema más amplio del juego.&lt;/p&gt;
&lt;p&gt;Al recolectar sustancias del medio ambiente y procesarlas con un metabolismo simulado, puede aumentar la calificación de aptitud de su especie, creando resistencia contra la extinción. Los caminos evolutivos menos exitosos desaparecerán, y solo uno puede progresar a través de cada paso transformador crucial hacia la cohesión celular, la conquista terrestre, la sensibilidad, los asentamientos y los viajes espaciales. ¿Prosperarás?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/Revolutionary-Games/Thrive/releases" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Descargar Juego
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Cómo instalar paquetes DEB usando dpkg</title><link>https://patojad.com.ar/post/2020/05/c%C3%B3mo-instalar-paquetes-deb-usando-dpkg/</link><pubDate>Wed, 20 May 2020 06:40:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/05/c%C3%B3mo-instalar-paquetes-deb-usando-dpkg/</guid><description>&lt;p&gt;Anteriormente hablamos de &lt;a href="https://patojad.com.ar/post/2020/04/como-crear-un-deb-con-dpkg/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
cómo crear paquetes .deb
&lt;/a&gt; en Debian, Ubuntu o derivadas utilizando el gestor de paquetes dpkg, sin embargo hoy llego el dia de dar un pequeño paso hacia atrás y ver como se instala utilizando el mismo gestor.&lt;/p&gt;
&lt;p&gt;Antes de iniciar quiero agradecer a Julio por brindar la información y obviamente a la autora de todo esto que es nada más ni nada menos que Gabriela González.&lt;/p&gt;
&lt;p&gt;Explicamos cómo utilizar las opciones del gestor de paquetes de Debian, para instalar y desinstalar archivos .deb en Ubuntu, Debian o derivados&lt;/p&gt;
&lt;p&gt;Los usuarios estas distribuciones la tienen muy fácil hace rato, instalar cualquier programa es un paseo por el parque gracias al centro de software. Poco a poco muchas otras distros van implementando este tipo de tiendas de aplicaciones para que el usuario pueda descargar lo que quiera de la manera más sencilla posible. Esto también ha permitido que muchos desarrolladores pongan en venta sus aplicaciones de pago y de esta manera obtener algo a cambio de su trabajo, y sin preocuparse por conseguir un medio de distribución que llegue a todos los usuarios.&lt;/p&gt;
&lt;p&gt;Muchos programas no se encuentran en el centro de software, así que a veces es bueno recurrir a la terminal para instalarlos&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Existen muchos paquetes y aplicaciones que no están disponibles en el centro de software&lt;/strong&gt;, muchos de los cuales requieren el uso de la terminal para añadir un repositorio y poder descargarlos. Otros en cambio, como por ejemplo Google Chrome, hay que bajarlos como un paquete DEB para poder usarlo en Debian/Ubuntu y derivados. Este paquete DEB se puede instalar con el centro de software, haciendo doble clic sobre el. Si ya lo has hecho, probablemente más de una vez, seguro has notado que el proceso es un poquito lento, que el centro de software más deuna vez se «queda pegado», y además puedes hasta sentir lag en el sistema, y un retraso en la respuesta de las aplicaciones que estás ejecutando en ese momento, es caótico.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalar-paquetes-deb-usando-dpkg"&gt;
INSTALAR PAQUETES DEB USANDO DPKG
&lt;a href="#instalar-paquetes-deb-usando-dpkg" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;dpkg es el programa base para manejar paquetes .deb.Con dpkg puedes instalar, remover y obtener información sobre cualquier paquete .deb. Pero, se debe ver a dpkg como una herramienta de sistema que trabaja en conjunto con apt-get. Si una dependencia &lt;strong&gt;no se satisface&lt;/strong&gt;, dpkg fallará, por el contrario, herramientas como apt-get crearán una lista de dependencias para instalar todo tan automáticamente como sea posible. Es decir, con dpkg instalamos paquetes .deb que ya descargamos, porque dpkg &lt;strong&gt;no descarga nada&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Para &lt;strong&gt;instalar&lt;/strong&gt; paquetes con dpkg usamos la opción -i o -install, ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dpkg -i paquete.deb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para &lt;strong&gt;verificar&lt;/strong&gt; que un paquete se ha instalado podemos escribir en la terminal:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dpkg -l | grep 'chrome'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Entre las comillas colocamos una palabra clave para buscar elpaquete, en este caso quiero verificar si se instaló Chrome. Si la terminal arroja una lista y antes del paquete muestra «ii» quiere decir que está instalado&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/mDS9KHDP/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Para &lt;strong&gt;desinstalar&lt;/strong&gt; un paquete utilizando dpkg utilizamos la opción -r o -remove, ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dpkg -r paquete.deb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si queremos &lt;strong&gt;purgar&lt;/strong&gt; la isntalaición, es decir borrar todos los rastros del programa, utilizamos -P:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dpkg -P paquete.deb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si quieren conocer más a fondo esta herramienta, pueden leer el manual de Debian sobre la &lt;a href="https://debian-handbook.info/browse/es-ES/stable/sect.manipulating-packages-with-dpkg.html" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
manipulación de paquetes con dpkg
&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recorda &lt;strong&gt;apoyarnos&lt;/strong&gt; en nuestras redes para poder seguir adelante con todo lo que implica PatoJAD es un proyecto que poco a poco crece e intenta estar al lado de todos de los usuarios dándoles dia a dia herramientas o funcionalidades. Mostranos tu apoyo con pequeños gestos, desactivando el bloqueador de anuncios, apoyándonos en las redes sociales, donando o compartiendo el contenido, esto solo es posible gracias a cada lector y cada persona que demuestra su agradecimiento&lt;/p&gt;</description></item><item><title>Ulauncher</title><link>https://patojad.com.ar/post/2020/05/ulauncher/</link><pubDate>Tue, 19 May 2020 14:16:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/05/ulauncher/</guid><description>&lt;p&gt;Hace un tiempo hablamos de alternativas a Krunner y fue ahí cuando conocí a esta hermosa app, pero pasó mucho tiempo desde aquel entonces y creemos que teniamos que contar un poco más sobre esta hermosa aplicación que sobre todo aumenta nuestra productividad de una forma increíble.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://ulauncher.io/assets/images/demo.gif" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="búsqueda-dudosa"&gt;
Búsqueda &amp;ldquo;dudosa&amp;rdquo;
&lt;a href="#b%c3%basqueda-dudosa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Escriba el nombre de una aplicación sin preocuparse por la ortografía. Ulauncher descubrirá a qué te referías. También recuerda tus elecciones anteriores y selecciona automáticamente la mejor opción para ti&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="temas-de-colores-personalizados"&gt;
Temas de colores personalizados
&lt;a href="#temas-de-colores-personalizados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ulauncher proporciona 4 temas integrados. Pero si necesita algo diferente, siempre puede crear un &lt;a href="https://gist.github.com/gornostal/02a232e6e560da7946c053555ced6cce" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
tema de color personalizado
&lt;/a&gt;. Los documentos que necesitaras para esto están &lt;a href="https://docs.ulauncher.io/en/latest/themes/themes.html" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
aquí
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="atajos-y-extensiones"&gt;
Atajos y extensiones
&lt;a href="#atajos-y-extensiones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Mejore su flujo de trabajo con accesos directos y &lt;a href="https://ext.ulauncher.io/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
extensiones personalizables
&lt;/a&gt;. Cree un acceso directo para la búsqueda web o sus scripts o instale una extensión de terceros&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="navegador-rápido-de-directorios"&gt;
Navegador rápido de directorios
&lt;a href="#navegador-r%c3%a1pido-de-directorios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Explore archivos y directorios con facilidad. Escriba ~ o / para comenzar. Presione Alt + Intro para acceder a un menú alternativo&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como siempre nuestra comunidad busca que todos los linuxnautas tengan las apps de una forma simple y segura por lo cual te ofrecemos desde el repositorio de la comunidad una instalación fácil y sencilla.&lt;/p&gt;
&lt;p&gt;Una vez que tengamos instalado el repositorio de la comunidad que si aun no lo tienes instalado te recomiendo ingresar aquí para ver cómo se hace e instalarlo. basta con ejecutar la instalación desde la terminal:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install ulauncher
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;y una vez instalado ya podemos disfrutarlo, viene configurado para abrirlo con ctrl+space&lt;/p&gt;
&lt;p&gt;Muchas gracias por visitar el Blog, si te gusta el contenido te pedimos que colabores con nosotros siguiéndonos en las redes sociales y/o desactivando el bloqueador de anuncios. El blog es meramente a pulmón y esa es tu forma de colaborar para que podamos mejorar lo que ofrecemos a toda la comunidad.&lt;/p&gt;</description></item><item><title>Instalar GTA V en Linux</title><link>https://patojad.com.ar/post/2020/05/instalar-gta-v-en-linux/</link><pubDate>Mon, 18 May 2020 08:27:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/05/instalar-gta-v-en-linux/</guid><description>&lt;p&gt;Como muchos saben estos dias se estuvo entregando el GTA V gratis en la Epic Store. Es un juego bastante bueno aunque debo admitir que cuando salió se esperaba mas de él, sin embargo logró conformar a la gente e incluso el anuncio de que este juego se estaba regalando fue suficiente como para tirar los sitios de Epic Games.&lt;/p&gt;
&lt;p&gt;Como podemos ven &lt;a href="https://www.protondb.com/app/271590" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
en la página de protondb
&lt;/a&gt; este juego funciona bien con Proton aunque con wine no tenemos la misma suerte, lamentablemente no suele funcionar a la primera e incluso si funciona no obtiene un buen rendimiento (Si lo hiciste funcionar en wine y con buen rendimiento enséñanos porque no lo logramos)&lt;/p&gt;
&lt;p&gt;Por lo cual queremos compartir con ustedes lo que un usuario de reddit nos trae para que podamos instalar este hermoso juego y jugarlo casi sin problemas.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pasé bastante tiempo para que funcione con Wine / Proton, así que pensé en compartir mi experiencia aquí. Esperemos que sea útil para otros.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Requisitos:&lt;/strong&gt; Steam con proton instalado, winetricks, protontricks y wine&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="crea-una-cuenta-y-reclama-el-gta-v-gratis"&gt;
Crea una cuenta y reclama el GTA V gratis
&lt;a href="#crea-una-cuenta-y-reclama-el-gta-v-gratis" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si aun no tenes el juego, &lt;strong&gt;todavía estás a tiempo&lt;/strong&gt;, quedan algunos días para reclamarlo tienes aun hasta el 21 de mayo, así que si no tienes cuenta puedes registrarte, activar la autenticación en 2 pasos y reclamar el juego en &lt;a href="https://www.epicgames.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Epic Games
&lt;/a&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="descargue-e-instale-epic-games-launcher"&gt;
Descargue e instale Epic Games Launcher
&lt;a href="#descargue-e-instale-epic-games-launcher" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Descargue el iniciador e instálelo. Puede usar un prefijo de vino por separado si lo desea. Puede obtener un error, esto se resuelve utilizando el argumento &lt;code&gt;-SkipBuildPatchPrereq&lt;/code&gt; en el iniciador.&lt;/p&gt;
&lt;p&gt;El lanzador &lt;strong&gt;no&lt;/strong&gt; funciona con dxvk, hay muchos parpadeos que lo hacen inutilizable. Para solucionarlo, puede usar el argumento &lt;code&gt;-opengl&lt;/code&gt; para forzar el iniciador al modo opengl. Esto requiere que dotnet48 esté instalado en el wineprefix con winetricks.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="agregue-epic-games-launcher-como-un-juego-que-no-sea-steam-a-steam"&gt;
Agregue Epic Games Launcher como un juego que no sea steam a Steam
&lt;a href="#agregue-epic-games-launcher-como-un-juego-que-no-sea-steam-a-steam" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Esto es necesario porque Rockstar Games Launcher no funciona en wine o en wine staging en este momento (al menos no lo hace para mí). Por alguna razón, los cursores van debajo de la ventana, lo que hace que sea imposible completar la instalación del iniciador de Rockstar Games.&lt;/p&gt;
&lt;p&gt;Sin embargo, funciona bien en &lt;code&gt;&amp;gt;=proton-5.0&lt;/code&gt;. Por lo tanto, agregamos Epic Games Launcher que acabamos de instalar en steam: &amp;lsquo;Juegos&amp;rsquo;-&amp;gt;&amp;lsquo;Agregar juegos que no sean de steam a mi biblioteca&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;Actualmente hay un error en Steam donde una ruta que contiene espacios no se analiza correctamente al agregar un juego que no sea Steam. Por lo tanto, después de agregar el juego, haga clic derecho en la biblioteca y seleccione &amp;lsquo;Propiedades&amp;rsquo;. Asegúrese de que &amp;ldquo;Destino:&amp;rdquo; esté configurado en la ruta correcta, y que &amp;ldquo;Establecer opciones de inicio&amp;rdquo; esté configurado en &lt;code&gt;-opengl&lt;/code&gt; (Si la ruta contenía espacios, la parte de la ruta después de que el espacio termine en las opciones de inicio, si esto es el caso, límpielo y agregue &lt;code&gt;-opengl&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Además, seleccione &amp;ldquo;Forzar el uso de una herramienta de compatibilidad específica de Steam Play&amp;rdquo; y elija &lt;code&gt;Proton 5.0-7&lt;/code&gt;. Por alguna razón, no guardó correctamente la configuración para mí, por lo que es posible que deba volver a abrir el menú de propiedades y confirmar que todo esté configurado correctamente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="add-dotnet48-to-the-proton-prefix"&gt;
Add dotnet48 to the proton prefix
&lt;a href="#add-dotnet48-to-the-proton-prefix" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Inicie el iniciador a través de Steam una vez, obtendrá una pantalla negra después de iniciar sesión. Esto se debe a que el argumento &lt;code&gt;-opengl&lt;/code&gt; no funciona sin dotnet48. Así que cierre el iniciador (&amp;lsquo;Salir&amp;rsquo; en la bandeja del sistema). Y luego use &lt;code&gt;protontricks -s &amp;lt;nombre del 'juego que no sea steam' en la biblioteca de steam&amp;gt;&lt;/code&gt;, esto debería devolver algo como esto:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;% protontricks -s GTA
Found the following games:
Non-Steam shortcut: GTA V (2677306004)
To run protontricks for the chosen game, run:
$ protontricks APPID COMMAND
NOTE: A game must be launched at least once before protontricks can find the game.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tome nota de la ID del juego, la usamos para instalar dotnet48 en el prefijo de protones correcto, por ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;protontricks 2677306004 dotnet48
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una vez hecho esto (hay algunos clics manuales y aceptación de los términos involucrados), inicie Epic Games Launcher desde steam nuevamente. Esta vez debería funcionar.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="descarga-el-juego-desde-el-lanzador-de-epic-games"&gt;
Descarga el juego desde el Lanzador de Epic Games
&lt;a href="#descarga-el-juego-desde-el-lanzador-de-epic-games" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El proceso de descarga de Epic es simple, basta con dirigirnos a nuestra biblioteca y seleccionar el juego que queremos instalar. Una vez seleccionado podemos simplemente instalarlo. En este caso tiene que descargar casi 100GB por lo cual puede demorar un poco dependiendo de la velocidad de internet.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ejecuta-el-juego-una-vez"&gt;
Ejecuta el juego una vez
&lt;a href="#ejecuta-el-juego-una-vez" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que se realiza la descarga, presiona iniciar en el Lanzador de Epic Games para iniciar el juego. Esto debería iniciar el proceso de instalación del Lanzador de Rockstar Games (Aquí es donde me quedé atascado usando wine (-staging) en lugar de protón, el cursor va debajo de la ventana de instalación y no puedo hacer clic en el botón &amp;ldquo;Inglés&amp;rdquo;). Una vez que esto se haya completado, Rockstar Games Launcher intentará lanzar el juego, fallará (al menos lo hizo para mí). Sin embargo, si vuelve al Lanzador de Epic Games e intenta nuevamente, debería funcionar.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="disfrutar"&gt;
Disfrutar
&lt;a href="#disfrutar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El juego ahora debería comenzar y ser jugable (se te pedirá que inicies sesión con una cuenta de Rockstar Social Club). Para mí, la configuración de gráficos se estableció en las opciones más bajas, incluida la resolución. Entonces quizás tengas que modificar eso un poco&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Desde ya y dia a dia agradecemos a todos los usuarios que colaboran para que todos podamos disfrutar de todos los juegos sin problemas.&lt;/p&gt;</description></item><item><title>PlasmApple</title><link>https://patojad.com.ar/post/2020/05/plasmapple/</link><pubDate>Mon, 11 May 2020 09:22:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/05/plasmapple/</guid><description>&lt;p&gt;Este es un proyecto libre sin fines de Lucro, esta dedicado para aquellos que les gusta GNU/linux y lo que es el entorno Mac, ya que como muchos sabemos en Youtube la mayoría de vídeos que hay para personalizar están en ingles, y yo para innovar lo único que necesitaran es descargar el archivo y otras cosas sin necesidad de configurar.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/JX3bh0XgTSE?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Quiero mencionar también que el bajo de calidad no se pudo arreglar por más que lo intente mi PC no logra resistir las animaciones y este tipo de calidad, aún así por buscar traerles el mejor contenido me di la tarea de hacerlo de esta manera, cualquier cosa respecto a lo que es la calidad así como tips para evitar el &amp;ldquo;lag&amp;rdquo; en los vídeos con gusto la miraré.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cosas-nuevas"&gt;
Cosas nuevas&amp;hellip;
&lt;a href="#cosas-nuevas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Implementación de la tipografía San Francisco para Linux&lt;/li&gt;
&lt;li&gt;Bajo el consumo (siempre y cuando desactiven los programas que se ejecutan cuando prendes el PC entre ejemplos para mencionar Spotify, Discord y Steam)&lt;/li&gt;
&lt;li&gt;Una pequeña separacion tanto arriba como abajo con los iconos que se encuentran en el panel superior&lt;/li&gt;
&lt;li&gt;Se eliminaron muchas Apps que habían por defecto en el Dock de Abajo para aprovechar el espacio para que ustedes después puedan agregar sus lanzadores (Navegadores, programas como Steam, juegos, y otras cosas) ademas que en diferentes resoluciones se ve algo grande, así que es para no ocupar mucho espacio y se ve ha feo.&lt;/li&gt;
&lt;li&gt;Se mostró las animaciones que serán opcionales si gustas activar&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-opinion"&gt;
Mi Opinion
&lt;a href="#mi-opinion" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Existen muchos usuarios que aman el estilo del desktop de MacOS X (Seamos realista por mas que en linux existan miles de cosas mejores iOS tiene un entorno hermoso y a algunos les puede gustar y a otros no, en mi caso no&amp;hellip;) Y este usario nos trae a nosotros la posibilidad de poner nuestro desktop como el sistema de la manzana.&lt;/p&gt;
&lt;p&gt;Muchos usuarios critican que imiten entornos de otros sistemas (MacOS o Win) Sin embargo es importante tener posibilidades&amp;hellip;&lt;/p&gt;
&lt;p&gt;Contanos tu experiencia en nuestro grupo y apoyanos en nuestras redes sociales.&lt;/p&gt;</description></item><item><title>La gente Opina sobre los mitos</title><link>https://patojad.com.ar/post/2020/05/la-gente-opina-sobre-los-mitos/</link><pubDate>Fri, 08 May 2020 08:47:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/05/la-gente-opina-sobre-los-mitos/</guid><description>&lt;p&gt;Como bien saben hace unos dias hice el post &lt;a href="https://patojad.com.ar/post/2020/05/4-mitos-falsos-de-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
4 Mitos Falsos de Linux
&lt;/a&gt; esperando aclarar un poco lo que se piensa o lo que se debate sobre linux. Sin embargo esto desató muchas voces postulando sus ideas y como todos sabemos que nadie tiene la verdad absoluta, decidí tomarme el permiso de publicar sus ideas, como siempre digo, cualquiera puede usar este post para plasmar una idea porque lo importante es que no se pierda en una conversación.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-consigna"&gt;
La consigna
&lt;a href="#la-consigna" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para organizar un poco las ideas postule una consiga, la cual era básicamente de lo que hablaba la publicación antes mencionada la cual se podía leer asi:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;PREGUNTA!!!&lt;/p&gt;
&lt;p&gt;¿Que Pensas de las siguientes afirmaciones sobre Linux?&lt;/p&gt;
&lt;p&gt;ES DIFÍCIL DE USAR
NO VA A FUNCIONAR EN MI PC
NO PUEDES PONER JUEGOS
NO TIENE SOPORTE&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
PatoJAD
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="las-opiniones"&gt;
Las Opiniones
&lt;a href="#las-opiniones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;« “si es mejor un iPhone que un Android&amp;quot;, o una Mac en lugar de una PC, o el Software Libre en lugar del privativo&amp;quot; »&lt;/p&gt;
&lt;p&gt;Bueno lo primero es que iPhone es un tipo de dispositivo y Android es un sistema operativo.&lt;/p&gt;
&lt;p&gt;Mac es un sistema operativo y un PC es un tipo de dispositivo, ya que en el PC o en la C.P de Computadora Personal, puedes instalar sistemas operativos diversos como : Mac, Windows, Liñux, FreeBSD, Haiku, etc . . .&lt;/p&gt;
&lt;p&gt;Yo prefiero el Software Libre o en su defecto el de codigo abierto, o el de codigo abierto privativo, solo si no tengo alternativa me quedo con el software privativo.&lt;/p&gt;
&lt;p&gt;« ES DIFÍCIL DE USAR (FALSO) » Ciertamente desde hace mucho que se volvio falso eso de que es dificil de usar, de hecho ya principios del 2000 habian distros como SuSE Professional / SuSE Personal o Mandrake que facilitaban demasiado el uso Liñux&lt;/p&gt;
&lt;p&gt;« NO VA A FUNCIONAR EN MI PC (FALSO) » Bueno eso es relativo, depende de que quiera hacer funcionar en su pc y cuales sean sus componentes.&lt;/p&gt;
&lt;p&gt;« NO PUEDES PONER JUEGOS (FALSO) » Tengo mas de una decada y un lustro demostrando que esto es HiperSupraMega Falso 😆, Ya que desde 1998 tenia juegos aunque en aquel momento no entendi que tenia que hacer para hacerlos funcionar, eso lo comprendi en el 2004 y desde entonces uso el sistema operativo GNU con nucleo Linux principalmente para jugar.&lt;/p&gt;
&lt;p&gt;« NO TIENE SOPORTE (FALSO) » Si es de soporte como tal, siempre lo ha tenido principalmente de la propia comunidad, pero si hablamos de empresa, entonces Red Hat y Novell siempre lo han ofrecido por unas modicas sumas de dinero.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Inukaze Maquiavelo
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;todas son falsas XD&lt;/p&gt;
&lt;p&gt;DIFICIL DE USAR ? tal vez hace una o 2 decadas pero hoy en dia todo esta tan inundado de GUI que linux ha dejado ser un sistema exclusivamente para ingenieros y expertos de informatica&lt;/p&gt;
&lt;p&gt;NO VA A FUNCIONAR EN MI PC? tal vez pero solo en excasos casos ya que hoy en dia en raro que que linux no reconozca algun hardware , ya tendria que ser un hardware mas raro que un perro cuadrado, es mas esto lo escribo desde un pc que fue diseñado para win2&lt;/p&gt;
&lt;p&gt;NO PUEDES PONER JUEGOS? ya llevo vrios años jugando en linux actualmente juego solamente en linux excepto si es un juego que funciona exclusivamente en win2 pero hoy en dia tenemos a playonlinux, steam y demas asi que esta premisa a pasado a ser una falacia&lt;/p&gt;
&lt;p&gt;NO TIENE SOPORTE ? las actualizaciones de seguridad que recibe , ademas esta red hat que es la distro linux con mas soporte que hay ( al menos que yo conozco )&lt;/p&gt;
&lt;p&gt;si tienes mas ideas o argumentos por favor escribela aca abajo en los comentarios XDDDDDDD jajajajaa&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
🅜🅔🅡🅘🅞🅓🅐🅢🅤
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Las cuatro frases son TIPICAS respuestas de gente desinformada sobre el tema&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Delfi
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;listo: estaba escribiendo pero me quedo con esta idea, jaja&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;ldquo;esta idea&amp;rdquo; Hace referencia a lo que dijo Delfi&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Es difícil de usar: depende la distro. Hay muchísimas que no lo son, así que generalizar así no es correcto
No va a funcionar en mi pc: es más probable que puedas hacer funcionar linux que cualquier otro SO
No puedes poner juegos: preguntale a Pancram&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Manuel
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pancram o el Tio como le digo yo, es quien se tiene la posta sobre linuxitos y la lista increibles de juegos que ofrece!&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Fácil de usar tebgo soporte de @PatoJAD XD si funciona en mi pc y si puedo jugar&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Felipe Garcia
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Gracias Pipe, pero te aviso que tu soporte es de mala calidad XD&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;la que me encanta es la de &amp;ldquo;Difícil Usar&amp;rdquo; esa me mata te comento que mi pequeña de 7 años ya va 1 año con linux (deepin) y es un haz, hasta creo que me gana jaja&lt;/p&gt;
&lt;p&gt;el tema es el siguiente hasta hace unos años pongamosle 10, linux no era nada amigable y los otros SO nos daban por ese lao, y la gente nunca pensó en la potencia de linux como SO, seguridad y otras cosas, en juegos bueno, por fin se estan acordando que en linux existen tambien jugadores, y aunque el rendimiento de los juegos disponibles ya sea nativos o bajo wine o lutris ya es mejor no es excelente pero culpa de quien de los productores de juegos, y el tema de soporte yo considero que tenemos el soporte más grande que cualquier compañia quisiera tener, somo millones vs cientos (o menos) que puede poner los soft propietarios, y eso me parece que es a donde apunta Windows con su apertura al software libre&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Alvaric
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;es dificil de usar hasta que te acostumbras a una terminal
si funciona hasta en un tetris , linux no es para juegos sino para desarollo , linux tiene soporte pero para desarollo
si bien se puede pero no es lo ideal&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
ARN SARS
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;ES DIFÍCIL DE USAR: Depende de la distro, pero usando Mint es un paseo.
NO VA A FUNCIONAR EN MI PC: Funcionan más las distros de Linux en la mayoria de los pcs que Windows.
NO PUEDES PONER JUEGOS: No funcionan todos los juegos ni los mejores siempre nativamente, pero hay alternativas. Sin embargo, para mi jugar es en consola que está diseñada para eso.
NO TIENE SOPORTE: Parcialmente cierto, igual el 99% de los usuarios de Windows usan versiones pirata y no pueden pedir ayuda al fabricante y terminan buscando soluciones en internet, o sea, lo mismo que tocará hacer con tu distro Linux.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
jolnix
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Que en su mayoria todas son mas que falacias&lt;/p&gt;
&lt;p&gt;ES Dificil de usar? : Para nada hay distro que recomiendo como linux mint o manjaro que su objetivo es casi instalarlo y usar , no ocupas hacer muchas mejoras&lt;/p&gt;
&lt;p&gt;No Va Funcionar en mi pc: Si hablamos de linux muy muy dificil que funciona la unica forma que pase que tengas una pc de marca china desconocida&lt;/p&gt;
&lt;p&gt;No Puede poner juegos : Esto es que falso no por nada hice mi canal para demostrar que puedes jugar con linux y tiene una variedad de juegos&lt;/p&gt;
&lt;p&gt;No tiene soporte: Aqui si les puedo darle la razon en algunos sectores de linux pero esto no es culpa de linux si no mas de la empresa
&lt;p style="text-align: right;"&gt;
Drindie
&lt;/p&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;depende de la persona&lt;/li&gt;
&lt;li&gt;en tiempos modernos funciona bien en casi cualquier maquina&lt;/li&gt;
&lt;li&gt;no todos los juegos funciona, pero steam tiene una variedad muy amplia para compensar la falta de otros&lt;/li&gt;
&lt;li&gt;pueden contratar soporte con alguna empresas&lt;/li&gt;
&lt;li&gt;no pongas casi todo en mayúsculas, siento que me gritas&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="text-align: right;"&gt;
petrohs
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Perdon no queria gritarte :(&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Pensamientos de gente con miedo, gente que no se atreve a probar cosas nuevas, gente que no quiere un cambio o quiere quedarse cómodamente donde esta y gente inútil que no busca soluciones o hacer las cosas de otra forma&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Miguel R
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;En mi caso estoy atado a Windows. Actualmente tengo mint y me encantaría probarme con debian, pero office no se lleva a 100% ni con libreoffice ni OpenOffice. También uso Autocad y Solidworks. Estos últimos no hay alternativas que se acerquen&amp;hellip; Cada día que pasa me voy alejando más de Linux.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Alejandro
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;¿Es difícil de usar?
Actualmente no.
¿No va a funcionar?
Es poco probable que tengas problemas irresolubles, pero tendrás que estará preparado para aprender.
¿Juegos?
Creo que sí. Casi no uso el equipo para jugar pero generalmente leo sobre actualizaciones que permiten ejecutar juego incluso de otras plataformas, por no mencionar Steam.
¿Soporte?
Si y no. No tendrás soporte directo de una empresa porque para empezar no te están vendiendo un producto. Si tendrás todo el soporte de varias comunidades para cada programa de código abierto que uses.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
𝓐𝓵𝓮𝔁𝓲𝓼 𝓔𝓼𝓬𝓸𝓫𝓪𝓻
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Gracias a @PatoJAD le he contestado con una entrada en mi blog (&lt;a href="https://is.gd/NuK0Ys" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://is.gd/NuK0Ys
&lt;/a&gt;) por si quieren leerlo detenidamente luego.&lt;/p&gt;
&lt;p&gt;ES DIFÍCIL DE USAR
Pues, depende,
Un usuario sin conocimientos compra un Pc con Güindogs en una gran superficie lo enchufa y listo todo le suena por poco que conozca. Opciones con GNU/Linux existen listas para usar pero la Oferta no es variada y además es poco atractiva para los no iniciados.
OPCION 1)
Ahora imagínense sin conocimiento ninguno que llagan a casa con una Bios UEFI con Güidogs 10 pre-instalado y tiene que 1º Descargar una ISO GNU/Linux 2º Quemarla en un DVD o USb Autoarrancable 3º Modificar la Bios UEFI para arrancar desde el soporte previamente quemado y quitar la seguridad del UEFI para que deje instalar S.O sin Firmar, 4º Seguir un asistente de instalación que habla de particiones y sistemas de arranque cosa que este persona del ejemplo no ha oído hablar en su vida 5º Suponiendo que lo haya conseguido después de horas de preguntar por Internet o con amigos 6º Reconocer los programas a los que durante años a estado acostumbrado por poco que sepa y buscar alternativas funcionales en GNU/Linux.
OPCION 2)
La opción más sencilla, El Mismo usuario sin conocimiento ninguno, le han hablado maravillas de GNU/Linux y/o algún amigo le ha convencido y compra un Pc con GNU/Linux preinstalado, seguiria teniendo los problemas del punto 6 de la opción anterior, pero siempre podra tirar de la comunidad o amigos, aunque si es verdad que hace ya años que los entornos graficos han cambiado mucho y la terminal ya casí no es necesaria.
Conclusión TODO ES FACIL ó DIFICIL de usar dependiendo de donde partamos y el circulo del que estemos rodeados.
EJEMPLO:
Mis padres con +65 años usan GNU/Linux hace +5 años por que yo (Su Hijo) se lo instalo y adecuo para que pareciera un Güindougs y estan encantados (Velocidad, comodidad y funcionalidades), pero sinceramente no los veo haciendo todos los pasos de la Opción 1 antes descrita.
NO VA A FUNCIONAR EN MI PC
Si, es verdad que la compatibilidad hoy en día es muy grande con mucho hardware/software pero los que venimos de años, conocemos las horas de sueño que hemos perdido haciendo funcionar un determinado dispositivo por incompatibilidades con el Sistema horas y horas en foros y canales mIrC.
Solo piensen en comprar el ultimo modelo de una marca conocida (HP, Dell,etc..) con la ultima tarjeta Wifi6 por ejemplo, sin soporte oficial para controladores Gnu/Linux.
NO PUEDES PONER JUEGOS
Totalmente incorrecto, hoy día hay varias plataformas que ofrecen Juegos &amp;ldquo;adaptados&amp;rdquo;, pero que pasa si queremos jugar al Ultimo (Call of Dutty, TombRaider, Last of us, por poner unos ejemplos) 🧐 haa pues toca esperar 2 o 3 años hasta que hagan el port.
NO TIENE SOPORTE
Si bien es cierto que hay empresas como la mas conocida ©️RedHat que dan soporte (solo a sus sistemas y desarrollos propios), algunas como Ubuntu o Mint por poner algún ejemplo dan soporte más amplio de 💶 Pago, esto es obvio pues de alguna forma han de mantenerse, nunca lo hacen del Kernel y solo se puede tener soporte mediante la comunidad que gracias 🙏 (San Linus Trovalds) ha crecido mucho los últimos años, pero volviendo al ejemplo de mís padres, sigo sin verlos pasándose horas y horas consultando foros chats y Videos en linea o @Telegram esperando que un alma caritativa les entienda y pierda el tiempo en explicarles como solucionar su problema.&lt;/p&gt;
&lt;p&gt;==== CONCLUSIÓN ====
Como siempre digo todo depende del grado de implicación , ganas de aprender y sumergirse en este nuestro gran Sistema Operativo.
Pero todas las preguntas se pueden resumir en un GRAN &amp;ldquo;DEPENDE&amp;rdquo; 🥺🤪&lt;/p&gt;
&lt;p&gt;&amp;amp;======NOTA FINAL =====&amp;amp;
Si, queremos que esto cambie y mejore los usuarios que formamos las diferentes comunidades debemos de ser humildes y pensar que en algún momento todos empezamos y ayudar a los demás dando las mayores facilidades que podamos a los no iniciados.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Les paso el chivo a limpio pueden verlo bien en &lt;a href="https://is.gd/NuK0Ys" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
su blog
&lt;/a&gt; y este termino como una publicacion dentro de otra publicacion&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="tu-turno"&gt;
Tu Turno
&lt;a href="#tu-turno" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Y ahora te toca a vos&amp;hellip; ¿Vos que opinas? Sumate a nuestro grupo de telegram y seguinos en las redes sociales para formar parte de estas opiniones públicas, incluso si tenes ganas escribi tu propio artículo y nosotros lo publicamos!!&lt;/p&gt;
&lt;p&gt;Gracias por apoyarnos aca y en las redes, tu apoyo nos permite seguir con todo esto que no es mucho pero es hermoso y dia a dia crece mas!&lt;/p&gt;</description></item><item><title>4 Mitos Falsos de Linux</title><link>https://patojad.com.ar/post/2020/05/4-mitos-falsos-de-linux/</link><pubDate>Wed, 06 May 2020 09:52:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/05/4-mitos-falsos-de-linux/</guid><description>&lt;p&gt;Muchas veces cuando se habla de sistema operativos pareciese que se está discutiendo una &lt;strong&gt;religión&lt;/strong&gt;, en la que el rebaño de cada uno ve con &lt;strong&gt;ojos de hereje&lt;/strong&gt; a todos los demás. &lt;em&gt;Mi Dios es el verdadero y único camino&lt;/em&gt;. Puede que suene a exageración, pero si alguna vez te has visto envuelto en un debate sobre &amp;ldquo;si es mejor un &lt;strong&gt;iPhone&lt;/strong&gt; que un &lt;strong&gt;Android&lt;/strong&gt;&amp;rdquo;, o una Mac en lugar de una PC, o el &lt;strong&gt;Software Libre&lt;/strong&gt; en lugar del &lt;strong&gt;privativo&lt;/strong&gt;, de seguro notas las similitudes de inmediato.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Expande tus horizontes y mira un poquito más allá de tu propia nariz.”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Es normal que muchos sintamos cierta &lt;strong&gt;pasión&lt;/strong&gt; por las cosas que nos gustan, y que estemos dispuestos a &lt;strong&gt;defenderlas como lo mejor&lt;/strong&gt;, pero la linea que nos separa del fanatismo y la fe ciega es muy delgada, y a mucha gente le cuesta ver las cosas desde otro punto de vista, o siquiera darle una oportunidad a algo diferente.&lt;/p&gt;
&lt;p&gt;Dentro de los argumentos entre los cuales otros sistemas operativos son &lt;strong&gt;&amp;ldquo;mejores&amp;rdquo;&lt;/strong&gt; que GNU/Linux podemos encontrar 4 grandes que por mas que no existan los siguen utilizando&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="es-difícil-de-usar-falso"&gt;
ES DIFÍCIL DE USAR (&lt;strong&gt;FALSO&lt;/strong&gt;)
&lt;a href="#es-dif%c3%adcil-de-usar-falso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://articles-images.sftcdn.net/wp-content/uploads/sites/2/2012/11/iStock_000014382431Small-568x330.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Bueno, esto es relativamente falso. Ha de ser real si &lt;strong&gt;a mi hijo de 7 años le digo que instale arch&lt;/strong&gt;, o mi abuela, pero entendamos que &lt;strong&gt;existe una distribución de Linux para cada necesidad&lt;/strong&gt;, y para mi hijo y/o mi abuela existen distros como Deepin, Zorin, MX, o incluso Ubuntu (Quien me conoce, sabe que no suelo recomendar ubuntu, pero es real que lo instale muchas veces y es incluso la primera junto a mint que recomiendo cuando no puedo dar mucho soporte de mi parte).&lt;/p&gt;
&lt;p&gt;Volviendo al tema, hoy por hoy una persona &lt;strong&gt;puede utilizar una distribución de linux sin ningún problema&lt;/strong&gt;, no es necesario abrir la termina, ni saber informática ni mucho menos, los escritorios y las distribuciones (entendamos a esto como la comunidad) se esforzaron mucho para poder hacer esto posible y el mito de que linux es dificil de usar no tiene ningún fundamento.&lt;/p&gt;
&lt;p&gt;Esto podemos verlo en el experimento de &lt;a href="https://patojad.com.ar/post/2019/08/la-comunidad-opina-los-linuxnautas-con-do%C3%B1a-estela/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Doña Estela
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="no-va-a-funcionar-en-mi-pc-falso"&gt;
NO VA A FUNCIONAR EN MI PC (&lt;strong&gt;FALSO&lt;/strong&gt;)
&lt;a href="#no-va-a-funcionar-en-mi-pc-falso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://xarxatic.com/wp-content/uploads/2015/10/nofuncionanada15.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esto es más que falso, incluso en algún momento fue al revez (La netbook noblex que me asignó el gobierno en el año 2012 cualquier distro le reconoce todo el hardware pero windows 7 no) Si bien hoy &lt;strong&gt;Windows 10 y casi cualquier distribución de linux reconoce todo el hardware&lt;/strong&gt; hay posibilidades en ambos sistemas que tengamos que buscar los drivers a mano e instalarlo. Son pocos los componentes que no funcionan incluso muchas empresas de Hardware &lt;strong&gt;ya se encuentran trabajando en el soporte para linux&lt;/strong&gt; (ejemplo AMD)&lt;/p&gt;
&lt;p&gt;Si bien existen muchos equipos y componentes en el mundo y es difícil abarcar todos es posible que encontremos un sistema más adecuado para mi hardware, paso a explicar, muchas veces para los componentes de vanguardia linux lleva una demora en su funcionalidad por lo cual es probable que Windwos lleva la delantera ya que los drivers se desarrollan para este sistema. Sin embargo si nuestro equipo es bastante viejo, es recomendable una distro de linux ligera, dado que linux no elimina el soporte (casi nunca) de estos equipos.&lt;/p&gt;
&lt;p&gt;Si bien eso son solo consejos &lt;strong&gt;hoy en dia cualquier so se puede instalar casi en cualquier maquina&lt;/strong&gt;, con mas o menos esfuerzo. Por lo cual queda mas que claro que es un mito sin fundamentos que “linux no funciona en mi pc”&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="no-puedes-poner-juegos-falso"&gt;
NO PUEDES PONER JUEGOS (&lt;strong&gt;FALSO&lt;/strong&gt;)
&lt;a href="#no-puedes-poner-juegos-falso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://img.eldefinido.cl/portadas/650/2017-08-31-3402RQK4055.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esto es mucho más que falso, &lt;strong&gt;hoy en día existen muchos juegos nativos para linux&lt;/strong&gt;, incluso muchos proyectos que portan y configuran por vos juegos que no están nativos. Es una realidad que &lt;strong&gt;no se pueden jugar al 100% de los juegos en Linux&lt;/strong&gt;, sin embargo este catálogo está creciendo muchísimo en estos muchos años, esto es impulsado por empresas como Vale con protón, y demás…&lt;/p&gt;
&lt;p&gt;Pueden ver incluso en mi canal que juego juegos siempre desde linux, e incluso existen muchos canales que juegan desde linux. Hoy por hoy si se puede jugar, aunque no a un 100% de los catálogos, cada vez son más las empresas que comienzan a apostar por este hermoso sistema.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="no-tiene-soporte-falso"&gt;
NO TIENE SOPORTE (&lt;strong&gt;FALSO&lt;/strong&gt;)
&lt;a href="#no-tiene-soporte-falso" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.valoradata.com/files/uploads/2014/08/soporte1-1024x699.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esto es cierto, yo nunca he pagado por una distribución Linux, y en mi vida he llamado a soporte técnico… ya va, un momento. El Software Libre no es sinónimo de “software gratis”, de hecho hay empresas enormes como Red Hat que utilizan Linux para ofrecer soluciones empresariales, sí, esta gente cobra por su trabajo, son sumamente respetados y ofrecen calidad.&lt;/p&gt;
&lt;p&gt;Android es software libre, y adivinen que empresa hace dinero con Android, no es solo Google, sino vean a Samsumg. Canonical, los responsables de Ubuntu, si bien no cobran por Ubuntu, tienen muchos otros servicios basados en el open source. Y así muchas más. Muchos de estos proyectos ofrecen soporte especial para los usuarios a través de portales especiales, wikis, foros, comunidades llenas de gente que busca ayuda y gente que busca ofrecerla.&lt;/p&gt;
&lt;p&gt;Linux tiene una comunidad enorme que te ayuda a conseguir la solución a tu problema solo por amor al arte. Es de hecho una de las maneras en las que he terminado conociendo gente genial por muchos años, y haciendo amigos.&lt;/p&gt;
&lt;p&gt;No te olvides de unirte a nuestro grupo de telegram para mantenerte informado entre amigos, recorda tambien apoyarnos desactivando el AdBlock y siguiéndonos en las redes sociales, es completamente gratis y nos ayudaria muchisimo a continuar con esto!&lt;/p&gt;</description></item><item><title>Traducir documentos online</title><link>https://patojad.com.ar/post/2020/05/traducir-documentos-online/</link><pubDate>Tue, 05 May 2020 09:38:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/05/traducir-documentos-online/</guid><description>&lt;p&gt;Hasta ahora los métodos que me había encontrado para traducir un archivo tenían sus &lt;strong&gt;inconvenientes&lt;/strong&gt;, sin embargo hay que reconocer que se ha avanzado mucho en este sentido. El metodo que en esta ocacion les traigo parece ser que apunta en mucho a &lt;strong&gt;eliminar esos inconvenientes&lt;/strong&gt; que se presentaban.&lt;/p&gt;
&lt;p&gt;Por ejemplo: el metodo de convertir el archivo de PDF a &lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;, representa una &lt;strong&gt;perdida de formato&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Veamos que &lt;strong&gt;importante&lt;/strong&gt; es conservar el formato en un texto, por ejemplo si lo que estas manejando es un manual de cualquier programa, en el que los graficos son determinantes para poder aprender el uso de este de manera efectiva.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="verificar-el-archivo"&gt;
Verificar el archivo
&lt;a href="#verificar-el-archivo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Primero debemos &lt;strong&gt;verificar&lt;/strong&gt; que nuestro archivo &lt;strong&gt;no este protegido&lt;/strong&gt;, cosa que suele ocurrir en los PDF. esto se consigue abriendo nuestro archivo, realizando cualquier cambio y presionando las teclas de guardar. si nos envia un mensaje de only read entonces si esta protegido. Para desprotegerlo, en el caso de que este protegido, lo recomendable sera meter el archivo a una impresora virtual como &amp;ldquo;DoPdf&amp;rdquo;(free con anuncion), que la tratara como archivo nuevo y lo guardara sin restricciones.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="transformar"&gt;
Transformar
&lt;a href="#transformar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El sitio del que hablamos hoy solo acepta una pequeña lista de formatos, sin embargo podemos transformar los archivos a esos formatos. Personalmente recomiendo utilizar siempre PDF que no este protegido contra escrituras. Sin embargo pede traducir cualquiera de los siguientes formatos:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/NjsBh7Zy/image.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="finalmente-la-traduccion"&gt;
Finalmente la Traduccion
&lt;a href="#finalmente-la-traduccion" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;No es necesario explicar paso a paso basta con ingresar en la web que dejaremos a continuacion y darles el archivo para que lo traduzcan.. Lo impresionante es que no tiene limites pequeños es decir que podemos traducri lo que sea mientras que no les voltiemos el sistema&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.onlinedoctranslator.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Comenzar a traducir
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Contanos ti experiencia en nuestro grupo de Telegram&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mas-info-sobre-el-sitio"&gt;
Mas info sobre el sitio!
&lt;a href="#mas-info-sobre-el-sitio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Ellos dicen &amp;ldquo;Hacemos todo lo posible para hacer cosas geniales que las personas encuentran útiles. Todos los días, en todo el mundo, ayudamos a miles de personas a ahorrar su valioso tiempo mediante el uso de nuestras herramientas&amp;rdquo;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PDF-Word Convert&lt;/strong&gt; Al instante convertir un PDF en formato de Word editable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Split a PDF&lt;/strong&gt; Divida un archivo PDF grande y extraiga las páginas en varias partes más pequeñas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PDF a imagen&lt;/strong&gt; Convierta instantáneamente las páginas de documentos PDF en archivos de imagen - en línea.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Doc Word Counter&lt;/strong&gt; Cuente el número real de palabras en su documento.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Herramienta de imagen en línea&lt;/strong&gt; Comprima cientos de imágenes hasta un 90% de tamaño de forma gratuita, sin límites&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Subproceso dpkg devolvió el código de salida de error</title><link>https://patojad.com.ar/post/2020/04/subproceso-dpkg-devolvi%C3%B3-el-c%C3%B3digo-de-salida-de-error/</link><pubDate>Thu, 30 Apr 2020 09:26:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/04/subproceso-dpkg-devolvi%C3%B3-el-c%C3%B3digo-de-salida-de-error/</guid><description>&lt;p&gt;Es comun que durante las actualizaciones de version a version, o la instalacion de un paquete que no este en nuestros repositorios tengamos algun error en dpkg. Vamos a estar viendo una serie de soluciones a los errores mas comunes&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-1"&gt;
Error 1
&lt;a href="#error-1" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Los paquetes tienen archivos que se &lt;strong&gt;sobrescriben&lt;/strong&gt;. Los paquetes tienen &lt;strong&gt;dependencias sin resolver&lt;/strong&gt;. Hay conflictos entre los paquetes. Un paquete no puede ser eliminado o modificado por dpkg. Solucion:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo echo &amp;quot;force-all&amp;quot; &amp;gt;/etc/dpkg/dpkg.cfg
sudo apt-get -f install
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-2"&gt;
Error 2
&lt;a href="#error-2" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Instalación de un &lt;strong&gt;paquete dañado&lt;/strong&gt;, vuelvo a intentar instalar y aptitude dice que &lt;strong&gt;ya está instalado&lt;/strong&gt;! Solución:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get remove paquete_dañado
sudo apt-get update
sudo apt-get clean
sudo apt-get --reinstall install paquete
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-3"&gt;
Error 3
&lt;a href="#error-3" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Error de verificación de las &lt;strong&gt;llaves públicas GPG&lt;/strong&gt;(NO_PUBKEY)… Error muy comun de firmas de paquetes o repositorios. Solución:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Buscamos y copiamos el número de error que aparece en negrita.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;The following signatures couldn't be verified because the public key is not available: NO_PUBKEY **010908312D230C5F**
There is no public key available for the following key IDs:**010908312D230C5F**
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y luego ejecutamos el siguiente comando remplazando el id por el respectivo al de su errores&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gpg --keyserver keyserver.ubuntu.com --recv **010908312D230C5F**
gpg --export --armor **010908312D230C5F** | sudo apt-key add -
sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Puede que el &lt;em&gt;keyserver no tengla la clave&lt;/em&gt;, hay que buscar el respectivo a su distro de ser asi&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-4"&gt;
Error 4
&lt;a href="#error-4" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El &lt;strong&gt;subproceso post-installation script devolvió el código de salida de error&lt;/strong&gt; (cualquier error). Se encontraron errores al procesar: (nombre_paquete). Solución:&lt;/p&gt;
&lt;p&gt;Determinamos el nombre del paquete que causó el error, por ejemplo, en el registro de a continuación, se muestra en negrita el nombre del paquete que causó el problema (xosview)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;newaliases: warning: valid_hostname: numeric hostname: 69522
newaliases: fatal: bad parameter value: 69522
dpkg: error processing xosview (–configure):
subprocess post-installation script returned error exit status 75
Errors were encountered while processing: **xosview**
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Después de haber determinado el nombre del paquete, ejecutamos los siguientes comandos cambiando la palabra &lt;strong&gt;xosview&lt;/strong&gt; por el nombre del paquete que causó el problema en nuestro caso:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo rm -f /var/lib/dpkg/info/xosview.post*
sudo rm -f /var/lib/dpkg/info/xosview.pre*
sudo apt-get -f install
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-5"&gt;
Error 5
&lt;a href="#error-5" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Error mientras se &lt;strong&gt;elimina un paquete&lt;/strong&gt;. Solución:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo rm -f /var/lib/dpkg/info/paquete_defectuoso.post*
sudo rm -f /var/lib/dpkg/info/paquete_defectuoso.pre*
sudo apt-get remove paquete_defectuoso
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-6"&gt;
Error 6
&lt;a href="#error-6" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Error en &lt;strong&gt;/var/lib/dpkg/status&lt;/strong&gt;. Solución:&lt;/p&gt;
&lt;p&gt;Normalmente se soluciona así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si esto no soluciona el problema, ver &lt;strong&gt;Error 7&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-7"&gt;
Error 7
&lt;a href="#error-7" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Persiste el problema anterior o problema con apt-get que contiene muchos repositorios o &lt;strong&gt;Error out of room&lt;/strong&gt;. Solución:&lt;/p&gt;
&lt;p&gt;El problema puede parecerse a esto:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;E: Dynamic MMap ran out of room
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Editamos el archivo apt.conf (recuerden cambiar gedit por el editor que tengan ustedes)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo gedit /etc/apt/apt.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Modificamos el &lt;strong&gt;tamaño de la caché&lt;/strong&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Apt::Cache-Limit “8388604″;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="error-8"&gt;
Error 8
&lt;a href="#error-8" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Durante la descarga algunos archivos &lt;strong&gt;no se encuentran disponibles&lt;/strong&gt;. Solución:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si el problema persiste después de volver a intentar instalar los paquetes, revisa el archivo /etc/apt/sources.list.&lt;/p&gt;</description></item><item><title>Proton 5.0-7 RC Testing</title><link>https://patojad.com.ar/post/2020/04/proton-5.0-7-rc-testing/</link><pubDate>Wed, 29 Apr 2020 08:27:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/04/proton-5.0-7-rc-testing/</guid><description>&lt;p&gt;Ya tenemos la RC de Proton que va a estar arrivando proximamente en Steam y en el podemos ver cambios que son realmente interesantes!!&lt;/p&gt;
&lt;p&gt;Aquí está el registro de cambios &lt;strong&gt;tentativo&lt;/strong&gt;. Nuevamente, esto puede &lt;strong&gt;cambiar antes del lanzamiento final&lt;/strong&gt; a medida que agregamos o eliminamos funciones durante las pruebas RC.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Street Fighter 5 ahora es jugable.&lt;/li&gt;
&lt;li&gt;Actualice DXVK a v1.6.1.&lt;/li&gt;
&lt;li&gt;Actualizar wine-mono a 5.0.0. Entre otras cosas, esto arregla Fight&amp;rsquo;N Rage y Woolfe - The Red Hood Diaries.&lt;/li&gt;
&lt;li&gt;Mejorar el rendimiento del sonido, lo que ayuda especialmente a Zusi 3 Aerosoft y TrackMania Nations Forever.&lt;/li&gt;
&lt;li&gt;Fix se bloquea en Halo: Spartan Strike, TOXIKK, Mount &amp;amp; Blade 2: Bannerlord y Plebby Quest: The Crusades.&lt;/li&gt;
&lt;li&gt;Corregir la conexión a Gearbox SHiFT en Borderlands 3.&lt;/li&gt;
&lt;li&gt;Grand Theft Auto 4 ahora es jugable.&lt;/li&gt;
&lt;li&gt;Actualizaciones a vkd3d para mejorar la compatibilidad y el rendimiento de Direct3D 12 en The Division, The Talos Principle y Monster Hunter World.&lt;/li&gt;
&lt;li&gt;Mejorar la experiencia de depuración del desarrollador.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si bien esto es tentativo podemso ver que se destacan 2 juegos al soporte oficial (Lo cual habre a la puerta a a que se descubran mas juegos no oficialmente). Es interesante ver como esta progresando y como va mejorando el soporte lo cual nos mantiene a la espectativa de que Valve sigue apostando por linix!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/ValveSoftware/Proton/issues/3814" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Mas informacion
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>¿Que es DynDNS? ¿Como lo instalo?</title><link>https://patojad.com.ar/post/2020/04/que-es-dyndns-como-lo-instalo/</link><pubDate>Tue, 28 Apr 2020 09:17:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/04/que-es-dyndns-como-lo-instalo/</guid><description>&lt;p&gt;¿Quieres ser el &lt;strong&gt;servidor principal&lt;/strong&gt; y ejecutar tu &lt;strong&gt;propio servidor doméstico&lt;/strong&gt; o una cámara IP y lograrlo de forma &lt;strong&gt;externa&lt;/strong&gt;?&lt;/p&gt;
&lt;p&gt;El problema es el &lt;strong&gt;cambio de la dirección IP&lt;/strong&gt; (dinámicamente) de su línea de internet. Esto significa que es imposible lograr su red doméstica desde el exterior. Con nuestro servicio &lt;strong&gt;DNS dinámico&lt;/strong&gt; (DDNS), le ofrecemos la posibilidad de operar sus aplicaciones estáticamente desde el exterior de forma móvil.&lt;/p&gt;
&lt;p&gt;Así se presenta DynDNS un competidor de &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2020/04/como-instalar-no-ip-en-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
NO-IP
&lt;/a&gt; del cual hablamos hace unos dias&lt;/strong&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-utiliza-el-servicio-gratuito-dyndns"&gt;
¿Cómo utiliza el servicio gratuito DynDNS?
&lt;a href="#c%c3%b3mo-utiliza-el-servicio-gratuito-dyndns" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Puede usar el servicio DDNS de diferentes maneras:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Con un &lt;strong&gt;enrutador&lt;/strong&gt; que admita las actualizaciones dinámicas (proveedor DynDNS [definido por el usuario])&lt;/li&gt;
&lt;li&gt;Sin software adicional con actualización manual desde el menú de la cuenta&lt;/li&gt;
&lt;li&gt;Con un Firefox y recargue cada (5 minutos)&lt;/li&gt;
&lt;li&gt;Con su &lt;strong&gt;Updater-Tool&lt;/strong&gt; [para Windows, Linux, MAC y otros sistemas operativos (Java)] &lt;em&gt;DE PAGO&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Realice un escaneo de puertos para examinar qué puertos están bloqueados o liberados&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="actualización-en-tiempo-real"&gt;
Actualización en tiempo real
&lt;a href="#actualizaci%c3%b3n-en-tiempo-real" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Vea en su cuenta DynDNS (DDCLIENT) si su dirección IP se actualizó y cuándo, en tiempo real.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://dyndnss.net/eng/up.gif" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cuánto-cuesta-el-servicio-de-dns-dinámico"&gt;
¿Cuánto cuesta el servicio de DNS dinámico?
&lt;a href="#cu%c3%a1nto-cuesta-el-servicio-de-dns-din%c3%a1mico" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El servicio DynDNS (DDNS) es de hasta 3 dominios Dyn completamente gratis (cuenta gratuita). Los usuarios Premium pueden crear por 9,90 $ únicos hasta 100 urls y reenvío de dominios.&lt;/p&gt;
&lt;h1 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="mi-consejo"&gt;
Mi consejo
&lt;a href="#mi-consejo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;Si alguien busca mi consejo, lo encuentra&amp;hellip; Personalmente este sistema es util y uno de los mejores&amp;hellip; solo si tu router permite la asociacion directa. Siendo asi solo basta a ir a las opciones avanzadas, elegir en DDNS el servidor DynDNS y cologar usuario y contraseña y solo se ira actualizando a medida que el modem cambie la ip.&lt;/p&gt;</description></item><item><title>Deltachat</title><link>https://patojad.com.ar/post/2020/04/deltachat/</link><pubDate>Mon, 27 Apr 2020 10:03:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/04/deltachat/</guid><description>&lt;p&gt;Delta Chat &lt;strong&gt;no tiene sus propios servidores&lt;/strong&gt;, pero utiliza el sistema de mensajería abierta más masivo y diverso: la red de servidores de correo electrónico existente.&lt;/p&gt;
&lt;p&gt;Chatee con cualquier persona si conoce su dirección de correo electrónico, ¡no es necesario que instalen DeltaChat! Todo lo que necesita es una cuenta de correo electrónico estándar.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-delta-chat"&gt;
¿Qué es Delta Chat?
&lt;a href="#qu%c3%a9-es-delta-chat" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Delta Chat es una nueva aplicación de chat que envía mensajes por correo electrónico, encriptados si es posible, con Autocrypt. No tiene que registrarse en ningún lado, solo use su cuenta de correo electrónico existente con Delta Chat.&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="cómo-puedo-encontrar-personas-para-chatear"&gt;
¿Cómo puedo encontrar personas para chatear?
&lt;a href="#c%c3%b3mo-puedo-encontrar-personas-para-chatear" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;Con Delta Chat, puede escribir en cada dirección de correo electrónico existente, incluso si el destinatario no está utilizando la aplicación Delta Chat. No es necesario que el destinatario instale la misma aplicación que la suya, como ocurre con otros mensajeros.&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="cuáles-son-las-ventajas-de-delta-chat-en-comparación-con-otros-mensajeros"&gt;
¿Cuáles son las ventajas de Delta Chat en comparación con otros mensajeros?
&lt;a href="#cu%c3%a1les-son-las-ventajas-de-delta-chat-en-comparaci%c3%b3n-con-otros-mensajeros" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Independiente de cualquier empresa o servicios. Eres dueño de tus datos.&lt;/li&gt;
&lt;li&gt;Sus datos no se guardan en un servidor central a menos que todos los usuarios estén usando los mismos servidores de correo electrónico&lt;/li&gt;
&lt;li&gt;No distribuye su libreta de direcciones a nadie.&lt;/li&gt;
&lt;li&gt;Rápido mediante el uso de Push-IMAP.&lt;/li&gt;
&lt;li&gt;Mayor base de usuarios : también se puede llegar a los destinatarios que no usan Delta Chat.&lt;/li&gt;
&lt;li&gt;Compatible , no solo para sí mismo.&lt;/li&gt;
&lt;li&gt;Interfaz de usuario elegante y simple.&lt;/li&gt;
&lt;li&gt;Sistema distribuido.&lt;/li&gt;
&lt;li&gt;No Spam : solo se muestran mensajes de usuarios conocidos de forma predeterminada.&lt;/li&gt;
&lt;li&gt;Fiable : seguro para uso profesional.&lt;/li&gt;
&lt;li&gt;Confiable : incluso se puede usar para mensajes comerciales.&lt;/li&gt;
&lt;li&gt;Copyleft y software libre basado en estándares.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="delta-chat-admite-imágenes-videos-y-otros-archivos-adjuntos"&gt;
¿Delta Chat admite imágenes, videos y otros archivos adjuntos?
&lt;a href="#delta-chat-admite-im%c3%a1genes-videos-y-otros-archivos-adjuntos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;Si&lt;/strong&gt;. Además del texto sin formato, todos los archivos adjuntos de correo electrónico se muestran como mensajes separados. Los mensajes salientes obtienen archivos adjuntos según sea necesario automáticamente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalacion"&gt;
Instalacion
&lt;a href="#instalacion" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que tengas el repositorio de la comunidad instalado basta con ejecutar el siguiente comando en la terminal.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install deltachat-desktop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Y tendremos la aplicacion instalada en nuestro desktop!&lt;/p&gt;</description></item><item><title>Como instalar NO-IP en Linux</title><link>https://patojad.com.ar/post/2020/04/como-instalar-no-ip-en-linux/</link><pubDate>Fri, 24 Apr 2020 09:48:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/04/como-instalar-no-ip-en-linux/</guid><description>&lt;p&gt;No-IP ofrece servicios de DNS, correo electrónico, monitoreo de red y certificados SSL. El producto principal de No-IP son los &lt;strong&gt;servicios dinámicos de DNS&lt;/strong&gt; (&amp;ldquo;DDNS&amp;rdquo;). Los servicios DNS dinámicos básicos que usan un dominio propiedad de No-IP son de uso &lt;strong&gt;gratuito siempre que la cuenta permanezca activa&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Las direcciones &lt;strong&gt;&lt;a href="https://patojad.com.ar/post/2020/01/direcciones-ips-nuestra-huella-en-la-red/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
IP
&lt;/a&gt; dinámicas&lt;/strong&gt; son comunes en las cuentas de banda ancha de &lt;strong&gt;cable residencial&lt;/strong&gt; o DSL. El servicio gratuito permite a los usuarios configurar entre &lt;strong&gt;uno y tres nombres de host&lt;/strong&gt; en un nombre de dominio proporcionado por No-IP. El nombre del host se resolverá en la dirección IP actual de la computadora de ese usuario.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="api-dns-dinámica"&gt;
API DNS dinámica
&lt;a href="#api-dns-din%c3%a1mica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Un nombre de host &lt;strong&gt;DNS dinámico&lt;/strong&gt; está vinculado a la dirección &lt;a href="https://patojad.com.ar/post/2020/02/qu%c3%a9-hay-detr%c3%a1s-de-una-ip/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
IP dinámica
&lt;/a&gt; del usuario. Cada vez que &lt;strong&gt;cambie la IP&lt;/strong&gt;, un cliente DNS dinámico enviará una actualización a No-IP con la dirección IP actual y luego No-IP propagará el cambio de DNS a Internet en cuestión de segundos.&lt;/p&gt;
&lt;p&gt;Para facilitar las actualizaciones de direcciones IP, No-IP tiene un protocolo abierto que permite a los desarrolladores de software y fabricantes de hardware comunicarse a través de HTTP para notificarles sobre un cambio de dirección IP.&lt;/p&gt;
&lt;p&gt;Muchos fabricantes de enrutadores brindan soporte integrado para el protocolo DNS dinámico de No-IP, por ejemplo, Asus, D-Link, Dovado, Edimax, SonicWall, SMC, y TP-Link .&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="como-instalarlo"&gt;
Como instalarlo
&lt;a href="#como-instalarlo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una vez que haya abierto la ventana de su Terminal, inicie sesión como usuario &amp;ldquo;root&amp;rdquo;. Es necesario para poder realizar la Instalacion&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo -s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;antes de instalarlo debemos asegurarnos de instalar algunas &lt;strong&gt;dependecias&lt;/strong&gt; (la instalacion se realiza mediante make install de un precompilado) por lo cual de momento no puedo generar el deb.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install gcc make
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Luego podemos realizar la descarga e instalacion correspondiente de la siguiente forma&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /usr/local/src/
wget http://www.noip.com/client/post/noip-duc-linux.tar.gz
tar xf noip-duc-linux.tar.gz
cd noip-2.1.9-1/
make install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora iniciara la instalacion para lo cual nos pedirá que inicie sesión con su nombre de usuario y contraseña de cuenta No-IP.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="configurar-el-cliente"&gt;
Configurar el cliente
&lt;a href="#configurar-el-cliente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como root nuevamente (o con sudo) emita el siguiente comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/usr/local/bin/noip2 -C
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(guión C mayúscula, esto creará el archivo de configuración predeterminado)&lt;/p&gt;
&lt;p&gt;Luego nos va a pedir nuestro nombre de usuario y contraseña NO-IP, así como los nombres de host que deseamos actualizar. Hay que tener cuidado, una de las preguntas es &amp;ldquo;¿Desea actualizar TODOS los hosts&amp;rdquo;. Si respondemos incorrectamente, esto podría afectar a los nombres de host en nuestra cuenta que apuntan a otras ubicaciones.&lt;/p&gt;
&lt;p&gt;Ahora que el cliente está instalado y configurado, solo necesitamos iniciarlo. Simplemente con este comando final para iniciar el cliente en segundo plano:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/usr/local/bin/noip2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ya con esto tenemos nuestro cliente de NO-IP actualizando la IP constantemente. Sin embargo, si tenes algun problema te esperamos en nuestro grupo para debatir.&lt;/p&gt;</description></item><item><title>Servidor proxy. Oculta tu identidad</title><link>https://patojad.com.ar/post/2020/04/servidor-proxy.-oculta-tu-identidad/</link><pubDate>Tue, 21 Apr 2020 08:48:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/04/servidor-proxy.-oculta-tu-identidad/</guid><description>&lt;p&gt;Vamos a centrarnos en los los &lt;strong&gt;servidores de tipo proxy&lt;/strong&gt;. Por lo general son servidores cuya función es interponerse entre la página web que queremos visitar, o servidor donde nos queremos conectar y nosotros de tal forma que no el servidor objetivo jamas pueda saber que realmente somos nosotros quienes estamos accediendo a la información.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ventajas-de-utilizar-un-servidor-proxy"&gt;
Ventajas de utilizar un servidor proxy
&lt;a href="#ventajas-de-utilizar-un-servidor-proxy" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Los servidores proxys son servidores que cumplen una función que a nosotros nos puede venir bien en diversas situaciones. Como siempre el que nosotros podamos sacar un partido mayor o menor va a depender siempre de nuestra capacidad de imaginación.&lt;/p&gt;
&lt;p&gt;Para los &lt;strong&gt;administradores de redes&lt;/strong&gt; (sobre todo en empresas) este tipo de servidores pueden ser utilizados para que los ordenadores de los empleados no sean los que salgan directamente a internet. Con esto ganan 2 cosas, por un lado pueden filtrar ciertas páginas webs y por otro lado protegen a los usuarios. Para entender cómo se realizan estas dos funciones vamos a ver el esquema básico de conexion con un servidor proxy intermediando&lt;/p&gt;
&lt;p&gt;![](&lt;a href="http://cursohacker.es/sites/default/files/styles/large/public/images/20141409122534.gif?itok=M709Qd_2%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
http://cursohacker.es/sites/default/files/styles/large/public/images/20141409122534.gif?itok=M709Qd_2"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Como se puede observar en &lt;strong&gt;el esquema el servidor proxy está en la fontera entre internet y la red local&lt;/strong&gt;. Vale aclarar que los servidores proxies no son sustitutos de los firewall, y aunque ambos están en la frontera, el proxy suele colocarse justo detrás del firewall para que también &lt;strong&gt;esté protegido&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Cuando un PC de la red interna quiere visitar una página lo que hace en realidad es pedírsela al servidor proxy. Una vez hecha la petición el servidor proxy hará &lt;strong&gt;dos comprobaciones&lt;/strong&gt;. La primera será &lt;strong&gt;mirar si la web solicitada está en su lista de webs permitidas&lt;/strong&gt; (si se tiene configurado un proxy restrictivo) o &lt;strong&gt;mirará que no esté en su lista de webs denegadas&lt;/strong&gt; (si ste tiene configurado en modo permisivo). En el caso de que la web no esté restringida el servidor proxy pasará a servirla al PC que la solicitó.&lt;/p&gt;
&lt;p&gt;Para poder servirla será el proxy quien se comunique con la web (ubicada en la red externa, internet), la analice y se la sirva al cliente. &lt;strong&gt;Si la página contenía algun tipo de &lt;a href="https://patojad.com.ar/post/2020/04/el-papel-de-javascript-en-la-seguridad/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
código malicioso en javascript
&lt;/a&gt; y el servidor proxy lo detecta lo eliminará&lt;/strong&gt; y protegerá al PC sirviéndole la página limpia de código malicioso.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Los servidores proxies ayudan a &lt;strong&gt;descongestionar la red&lt;/strong&gt;. Esto es otra ventaja para los administradores de redes ya que con el mismo ancho de banda pueden responder a una demanda superior de peticiones.&lt;/p&gt;
&lt;p&gt;Cuando un servidor proxy visita una web a la vez que la sirve al cliente que se la ha solicitado también puede &lt;strong&gt;guardarla en su memoria caché&lt;/strong&gt; por un tiempo determinado si se ha habilitado esta opción en la configuración. En caso afirmativo, el servidor proxy irá almacenando cada web que se le solicite en su memoria hasta llegar al tope máximo. Entonces cada vez que se le hace una nueva petición, justo después de comprobar que la web solicitada no está restringida comprobará si la tiene almacenada en su memoria caché, de ser así, no tendrá que acceder a internet para descargarla de nuevo, se la servidrá directamente de su memoria caché.&lt;/p&gt;
&lt;p&gt;De este modo si 10 clientes piden visitar una web el servidor proxy solo tendrá que hacer una petición para satisfacer la demanda de 10 reduciendo así 9 peticiones. Esto es especialemente útil en contenido multimedia que suele ser bastante pesado.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Como consecuencia directa del punto anterior &lt;strong&gt;mejoran notablemente la velocidad de carga de las páginas webs&lt;/strong&gt;. Al no tener que solicitar la página web al servidor en internet es como si el servidor estuviera en la red local, con lo que el usuario final percibe una mejora en los tiempos de carga en las páginas que más se visitan.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Un servidor proxy &lt;strong&gt;elimina las restricciones por ubicación&lt;/strong&gt;. En muchos países (sobre todo orientales) el gobierno impone fuertes restricciones de acceso a la información. Bloqueando todos aquellos sitios webs que ellos consideran que no deberían ser visitados por sus ciudadanos.&lt;/p&gt;
&lt;p&gt;Con independencia de si esto está bien o está mal, un ciudadano que viva en un lugar que tenga restricciones de este tipo puede utilizar un servidor proxy &lt;strong&gt;ubicado en otro país&lt;/strong&gt; y así saltar esta restricción. Para lograrlo lo único que debe tener en cuenta es que desde su PC &lt;strong&gt;pueda conectar con la IP del servidor proxy&lt;/strong&gt; extranjero.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Un servidor proxy te evita &lt;strong&gt;bloqueos por &lt;a href="https://patojad.com.ar/post/2020/01/direcciones-ips-nuestra-huella-en-la-red/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
IP
&lt;/a&gt;&lt;/strong&gt;. Cuando nos vemos obligados a compartir una red (en hoteles, cibercafés, redes públicas&amp;hellip;) estamos compartiendo nuestra IP pública con todos los usuarios de la red local en la que estamos conectados.&lt;/p&gt;
&lt;p&gt;Recordemos, en una red local cada dispositivo tiene una IP privada que lo identifica dentro de la red, pero todos &lt;strong&gt;comparten la misma IP pública&lt;/strong&gt;. Si un usuario realiza una acción que conlleve un baneo en un portal de la IP pública que compartes con dicho usuario si dispones de un servidor proxy ubicado fuera de la red podrás seguir accediendo ya que será tu servidor proxy &lt;strong&gt;quien acceda al portal web por ti&lt;/strong&gt; con su IP pública.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Un servidor proxy &lt;strong&gt;OCULTA TU IDENTIDAD&lt;/strong&gt;. En internet tu &lt;a href="https://patojad.com.ar/post/2020/01/direcciones-ips-nuestra-huella-en-la-red/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
identidad es tu IP
&lt;/a&gt;, en el momento que pones un servidor proxy por medio es su IP la que sale al mundo para darte las páginas que solicitas.&lt;/p&gt;
&lt;p&gt;Normalmente &amp;ldquo;no hay necesidad&amp;rdquo; de ocultar tu IP a las webs que visitas, pero en algunas ocasiones puede que no quieras dejar constancia de que has estado ahí. En este caso un servidor proxy es justo lo que necesitas. Quizá puedas preguntarte que aunque el servidor final desconozca tu IP el proxy &lt;strong&gt;podría guardar una relacción entre tu IP y lo que has vistado&lt;/strong&gt;. Esto es cierto, el servidor proxy tiene la capacidad de almacenar que página web ha pedido cada IP.&lt;/p&gt;
&lt;p&gt;Para resolver este problema existen &lt;strong&gt;dos vías&lt;/strong&gt;. La primera es utilizar proxies que sean &amp;ldquo;anónimos&amp;rdquo;. Los más cautelosos incluso utilizan &lt;strong&gt;varios proxies encadenados&lt;/strong&gt;, y cuando digo varios me refiero a 10 o 12 y además ubicados en distintos países. Con que solo 1 de la cadena no tenga el log el rastreo será imposible. La otra vía, la que utilizan algunos &amp;ldquo;crackers&amp;rdquo; (&amp;ldquo;hackers&amp;rdquo; con malas ideas) consiste en acceder al PC de un usuario, ya sea buscando un fallo de seguridad o aplicando técnicas de ingeniería social e &lt;strong&gt;instalar un servidor proxy en su ordenador&lt;/strong&gt; sin que el usuario tenga constancia. De este modo el &amp;ldquo;cracker&amp;rdquo; utilizar a su víctima como servidor proxy y todo lo que haga lo hará desde la IP pública de su víctima.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="desventajas-de-utilizar-un-servidor-proxy"&gt;
Desventajas de utilizar un servidor proxy
&lt;a href="#desventajas-de-utilizar-un-servidor-proxy" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como toda herramienta, ya sea informática o no, &lt;strong&gt;siempre hay una parte positiva y una negativa&lt;/strong&gt;. Los serviores proxies no son una excepción y al igual que nos dan una serie de ventajas como las que hemos visto también conllevan algunos riesgos la utilización de los mismos. En las siguientes líneas vamos a ver los principales problemas y casuísticas que se han dado por utilizar servidor proxies:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interceptación del tráfico&lt;/strong&gt;. Si nosotros tenemos una red con 100 dispositivos y alguien se propone interceptar el tráfico de los 100 dispositivos tiene varias opciones. La primera y mas tediosa ir buscando fallos de seguridad dispositivo a dispositivo hasta tener controlados los 100. Esto evidentemente es una tarea bastante larga y con un alto riesgo de que salte una alarma en algún dispositivo y se descubra.&lt;/p&gt;
&lt;p&gt;Ahora, si todo el tráfico pasa por el servidor proxy, el atacante solo debe centrarse en acceder al servidor proxy, si lo consigue habrá intercpetado &lt;em&gt;de un plumazo&lt;/em&gt; el tráfico de todos los dispositivos.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Modificación de la información&lt;/strong&gt;. Si alguien con malas intenciones consigue acceso al servidor proxy, podrá ver las páginas que hay cacheadas en memoria, o modificar las reglas por las que se rige el servidor proxy, y &lt;strong&gt;manipular las páginas que se entregan a los usuarios&lt;/strong&gt; finales.&lt;/p&gt;
&lt;p&gt;Tengas el sistema de contraseñas que tengas con este método pueden acceder a casi cualquiera. Pongamos el caso, el atacante crea una máquina virtual y en ella instala un &lt;strong&gt;servidor LAMP&lt;/strong&gt; (servidor para montar páginas webs). Sobre ese servidor LAMP monta una réplica de una página en la que tu tienes usuario y contraseña. Ahora en el servidor proxy hace que cuando le pidas dicha página en vez de la original te de la réplica. En cuanto trates de logearte en la web falsa lo que estarás haciendo es darle tu usuario y clave al atacante.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Problemas de incoherencia&lt;/strong&gt;. Si tienes activada la opción de cacheo de páginas puede darse el caso de que un usuario esté viendo contenido que haya sido modificado, o incluso borrado, pero que el proxy aún &lt;strong&gt;no lo ha vuelto a recachear&lt;/strong&gt;. Por este motivo es más recomendable activar solo el cacheo de contenido multimedia, imágenes, vídeos, archivos de sonido&amp;hellip; que no son tan propensos a cambiar en el tiempo.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Denegación de servicio DOS&lt;/strong&gt;. Si alguien de forma intencionada o no satura el servidor proxy éste dejaría de atender las peticiones de los demás usuarios, imposibilitando así su acceso a internet.&lt;/p&gt;
&lt;p&gt;¿Vos usas un proxy para navegar?¿Que recomendacion le darias a alguien que quiere iniciar con esta practica? Contanos todo en nuestro grupo de Telegram!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://t.me/PatoJADCommunity" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-telegram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Unite a nuestra comunidad
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Folding @ Home</title><link>https://patojad.com.ar/post/2020/04/folding-@-home/</link><pubDate>Thu, 09 Apr 2020 09:38:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/04/folding-@-home/</guid><description>&lt;p&gt;Es posible ayudar a tener un futuro mejor desde casa, leyendo nuestro diario online, jugando un juego o simplemente revisando los feeds de nuestras redes sociales preferidas. Hoy existe un proyecto que nos permite colaborar con la investigacion en multiples enfermedades (cancer, covid-19, etc..)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="soy-uno-en-un-millon"&gt;
Soy UNO en un millon
&lt;a href="#soy-uno-en-un-millon" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Al descargar el software Folding @ home nos está proporcionando la potencia de la computadora que necesitamos para encontrar nuevas curas. Y al correr la voz, le está dando a más personas la oportunidad de contribuir. En nuestro libro, eso ciertamente te hace uno en un millón&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sobre-el-proyecto"&gt;
Sobre el Proyecto
&lt;a href="#sobre-el-proyecto" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Folding@home (FAH or F@h) es un proyecto informático distribuido para simular la dinámica de las proteínas, incluido el proceso de plegamiento de proteínas y los movimientos de proteínas implicadas en una variedad de enfermedades. Reúne a científicos ciudadanos que se ofrecen como voluntarios para ejecutar simulaciones de dinámica de proteínas en sus computadoras personales. La información obtenida de estos datos está ayudando a los científicos a comprender mejor la biología y brindando nuevas oportunidades para desarrollar terapias.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comencemos-a-ayudar"&gt;
Comencemos a ayudar!
&lt;a href="#comencemos-a-ayudar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;El software Folding @ home se ejecuta mientras haces otras cosas.&lt;/strong&gt; Mientras continúa con sus actividades cotidianas, su computadora estará trabajando para ayudarnos a encontrar curas para enfermedades como el cáncer, ELA, Parkinson, Huntington, Influenza y muchas otras.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.echosciences-grenoble.fr/uploads/article/image/attachment/1005446576/xl_foldingathome_0780043801666020.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¡Tenga paciencia si experimenta un tiempo de inactividad mientras enfrentamos la pandemia de COVID-19 juntos!&lt;/strong&gt; Estamos trabajando como locos para comenzar las simulaciones de las proteínas COVID-19. La respuesta entusiasta a nuestro esfuerzo ha sido tremenda y a veces ha vaciado nuestras colas. Este es un gran &amp;ldquo;problema&amp;rdquo;, ya que no hay fin para la ciencia valiosa que podemos hacer, es solo una cuestión de darnos algo de tiempo para seguir corriendo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="estadísticas"&gt;
ESTADÍSTICAS
&lt;a href="#estad%c3%adsticas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://foldingathome.org/wp-content/uploads/2016/09/Pande-Lab_Stanford-University_Foldingathome-1-1.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Una de las mejores maneras de ayudar a Folding @ home es reclutando a sus amigos y familiares. Comience compartiendo nuestro proyecto con ellos. Entonces únete a un equipo o incluso comienza tu propio equipo. Cuantos más puntos gane su equipo, más nos acercaremos a encontrar curas.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="usas-otro-sistema"&gt;
¿Usas Otro sistema?
&lt;a href="#usas-otro-sistema" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;No importa, ayudar no depende del sistema que uses y hoy no es tema importante (mas alla de que prediquemos el uso de Linux) &lt;a href="https://foldingathome.org/start-folding/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
desde aqui podes ver como instalarlo en tu sistema
&lt;/a&gt; Y podes unirte con el mismo codigo de grupo porque todos estamos juntos para esto!&lt;/p&gt;
&lt;p&gt;Codigo de Grupo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;260504
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Te estamos esperando para colaborar con el mundo!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="consumo-despues-de-configurar"&gt;
Consumo despues de configurar
&lt;a href="#consumo-despues-de-configurar" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Aca podemos ver una imagen de cuanto consume en mi PC.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/85Nd2q7x/Deepin-Screenshot-Seleccionar-rea-20200409092902.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Recordemos que siempre podemos pararlo cuando queramos con el FAHControl desde nuestro menu para parar su uso de CPU.&lt;/p&gt;</description></item><item><title>El papel de Javascript en la seguridad</title><link>https://patojad.com.ar/post/2020/04/el-papel-de-javascript-en-la-seguridad/</link><pubDate>Tue, 07 Apr 2020 09:08:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/04/el-papel-de-javascript-en-la-seguridad/</guid><description>&lt;p&gt;Muchos de vosotros quizá escucharon hablar de la técnica &amp;ldquo;inyección de código javascript&amp;rdquo;. Lo que hoy vamos a ver son las bases necesarias para comprender los ataques de inyección de código Javascript, cómo funcionan, que objetivos pueden llegar a alcanzarse con esta técnica y cómo evitar ser víctimas de este tipo de ataques si somos nosotros los que jugamos como defensa de un portal web.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-javascript"&gt;
¿Qué es Javascript?
&lt;a href="#qu%c3%a9-es-javascript" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Javascript es un lenguaje de programación interpretado&lt;/strong&gt;, no es compilado, o sea que es &lt;strong&gt;leído e interpretado directamente por el navegador&lt;/strong&gt; como código fuente cuando éste lee la página. Esto quiere decir que no bajamos un archivo ejecutable ya compilado para que al ejecutarlo de un resultado sino que tenemos el código a ejecutar metido en el código fuente de nuestro sitio. Tal como en HTML, el explorador lee el código y hace lo que debe hacer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Es un lenguaje de scripts, por lo que un programa en JavaScript estaría conformado por pequeños scripts&lt;/strong&gt;, cada uno de estos scripts serían miniprogramas y se interpretarán línea por línea mientras que la aplicación sigue su ejecución normal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Es un lenguaje orientado a eventos&lt;/strong&gt;, Javascript está &lt;strong&gt;capacitado para detectar muchísimos eventos y reaccionar a ellos con una acción programada&lt;/strong&gt; por nosotros o el programador que desarrolla el script. Un evento es un suceso que ocurra durante la interacción del usuario y el navegador. Al ser guiado por eventos, no tenemos una función principal que se ejecute antes que de las demás, sino que tendremos varias funciones que se irán ejecutando según proceda (es decir que algunas funciones pueden llamar a otras).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Es un lenguaje orientado a objetos&lt;/strong&gt; (Si bien su nivel de pureza de objetos es pesima, implementa este paradigma de alguna forma), aunque sería mejor decir que su estructura está basada en objetos. Al margen de cuestiones técnicas el caso es que tiene una biblioteca de objetos predefinidos que podremos utilizar para facilitar la tarea de programar nuestros scripts.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="para-qué-se-utiliza-javascript"&gt;
¿Para qué se utiliza Javascript?
&lt;a href="#para-qu%c3%a9-se-utiliza-javascript" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;La función principal de Javascript es dar órdenes al navegador del usuario para que haga justo lo que queremos que haga&lt;/strong&gt;. Esto desde el punto de vista del &amp;ldquo;hacking&amp;rdquo; y la seguridad informática es sin duda alguna una característica más que atractiva ya que nos permite interactuar con el navegador del usuario de forma directa. Con javascript nosotros podemos validar un formulario html para evitar que el usuario nos envíe datos erróneos, por ejemplo, podemos detectar campos vacíos que son obligatorios y si el usuario pulsa sobre enviar decirle que primero ha de rellenar estos campos, ya que si no lo hace no podrá completar el registro. Con Javascript podemos crear todos estos efectos de transiciones de imágenes que acostumbramos a ver en múltitud de páginas web. Desde hace ya unos años existe una librería de funciones escirtas en Javascript llamada Jquery (Libreria util pero no recomendada). Esta librería es código libre, gratuita y la podrás descargar sin problemas. En definitiva, Javascript fue desarrollado con la clara intención de mejorar la experiencia de un usuario en un sitio web.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-papel-juega-javascript-en-el-hacking"&gt;
¿Qué papel juega Javascript en el &amp;ldquo;hacking&amp;rdquo;?
&lt;a href="#qu%c3%a9-papel-juega-javascript-en-el-hacking" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Javascript es una pieza clave y fundamental en multitud de técnicas de &amp;ldquo;hacking&amp;rdquo;, tiene cabida en técnicas de &lt;strong&gt;Phising&lt;/strong&gt; (suplantación de identidad) técnicas avanzadas en ataques de tipo Cross site Scripting &lt;strong&gt;XSS&lt;/strong&gt; (Robo de sesiones) y multitud de técnicas que describiremos cuando tengamos las bases para comprender cómo funcionan y cómo se utilizan.&lt;/p&gt;
&lt;p&gt;Como te habrás dado cuenta, &lt;strong&gt;cualquier programa que interactua de forma directa con el usuario es una amenaza para el mismo&lt;/strong&gt; (Entendamos que la vulnerabilidad mas grande es el usuario). Cuando tu eres capaz de dar órdenes al PC de alguien sin que este lo &amp;ldquo;autorice&amp;rdquo; entonces estás ganando control sobre su máquina. Javascript hace exactamente esto, dar órdenes al navegador del usuario; normalmente para mejorar su experiencia al navegar en una web, pero como todas las tecnologías, también se ha utilizado para provocar daños en el equipo de la víctima, acceder a información confidencial o tomar el control total del equipo. Con el paso de los años los navegadores han ido evolucionando, ganando en seguridad y evitando aquellos scripts hechos en Javascript que intentan vulnerar la seguridad del equipo, no obstante, y de forma paralela también se han desarrollado plugins para los navegadores que evitan que se ejecute ningún código Javascript en el equipo. Un plugin muy popular que hace esto es NoScript. El problema de este tipo de plugins es que al evitar que se ejecute Javascript también evitarán que se ejecute el código bueno, no hacen distinción alguna entre código malicioso y código bueno. Así que lo que ganas en seguridad lo pierdes en usabilidad, y en este caso en concreto pierdes mucho más de lo que ganas. De ahí la importancia de navegar siempre en internet con un &lt;strong&gt;navegador actualizado que sea capaz de bloquear por si solo aquellas funciones de Javascript maliciosas&lt;/strong&gt; y permita las inocuas.&lt;/p&gt;
&lt;p&gt;Hasta pudiera parecer que la parte &amp;ldquo;negativa&amp;rdquo; de Javascript solo está al alcance de aquellos webmasters que elaboren sitios con el objetivo de hacerse con el control de los internátuas que acaben ahí. Esto no es así. Evidentemente hay sitios creados específicamente para que cuando alguien los visite con un navegador desactualizado (normalmente internet explorer en nuestros amigos windowsnautas) se infecten los equipos. Pero dentro del &amp;ldquo;hacking&amp;rdquo; y javascript este tipo de técnicas es de las menos comunes ya que Google suele detectar este tipo de script rápidamente y avisa a los internáutas con carteles de este estilo:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://cursohacker.es/sites/default/files/styles/large/public/images/20142202182941.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Y aunque el usuario es libre de ignorar esta advertencia esta medida hace que la gran mayoría de los internáutas no vayan al sitio web. Además Google penaliza las páginas que tienen código Javascript malicioso haciendo que no aparezcan en el buscador, y de aparecer que aparezcan en posiciones bastante bajas.&lt;/p&gt;
&lt;p&gt;La gran potencia de Javascript en el mundo del &amp;ldquo;hacking&amp;rdquo; reside en que utilizando técnicas y metodologías es posible que un usuario normal sin ser el dueño de un sitio web sea capaz de meter código javascript en el sitio. Esta última frase puede parecer un tanto díficil de comprender, sobre todo para aquellos de nosotros que estamos empezando y llevamos relativamente poco tiempo en el mundo de la seguridad informática y el &amp;ldquo;hácking&amp;rdquo; ético.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-puede-alguien-meter-código-javascript-en-mi-sitio-web"&gt;
¿Cómo puede alguien meter código Javascript en mi sitio web?
&lt;a href="#c%c3%b3mo-puede-alguien-meter-c%c3%b3digo-javascript-en-mi-sitio-web" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Hay multitud de técnicas para lograr este fin, lo primero que debemos de hacer es conocer el lenguaje para poder comprender cómo trabaja y valorar su alcance. La lección de hoy pretende dar una visión general del papel que juega este lenguaje en la web desde el punto de vista de la seguridad informática.&lt;/p&gt;
&lt;p&gt;En las Webs 2.0 que son aquellas en las que el internátua no solo es un receptor de información sino que puede interactuar con la web (foros, redes sociales, portales&amp;hellip;.) estamos dejando al usuario introducir información en nuestra web. Nosotros no podemos confiar en que va a meter justo lo que le pedimos, ya que el usuario puede meter cualquier cosa y es nuestra responsabilidad validar en el servidor los datos que el internátua nos está facilitando. Vamos a poner un ejemplo práctico de esta escenografía.&lt;/p&gt;
&lt;p&gt;Supongamos que llegamoss a un foro en el que el registro es libre, nos registrámos y ya estamos preparados para abrir hilos o responder en aquellos que ya estén abiertos. Abrimos un nuevo hilo en el que sabemos que gran parte del foro va a visitarlo porque creamos un título para el hilo bastante llamativo. Ahora en vez de escribir un texto normal nosotros metemos un código javascript que hace que todo aquel usuario que vea vuestro hilo nos envíe un mensaje con su &amp;ldquo;cookie&amp;rdquo; del foro (las cookies son pequeños archivos que tiene el navegador para controlar entre otras cosas la sesión del usuario, y a los cuales Javascript es capaz de leer, modificar, crear y eliminar). Esta cookie podemos integrarla en nuestro navegador, y una vez hecho esto aparecemos logeados como el usuario al cual le hemos robado la cookie, si además este usuario es administrador del foro ya tenemos acceso completo.&lt;/p&gt;
&lt;p&gt;Este tipo de ataques son de lo más básicos y antiguos que se puede realizar con Javascript, la gran mayoría de foros no nos permitirán meter código javascript, y de permitirlo no se publicará o se publicará &amp;ldquo;capado&amp;rdquo; para que no se ejecute. En el peor de los casos (para el atacante) llegará incluso una alerta al administrador del foro con el intento de hacking. Así que cuando en las próximas lecciones empecemos a ver pequeños scripts en Javascript no recomendamos que salgan ahí a intentar ser unos &amp;ldquo;hackers&amp;rdquo; en foros. Cuando alguien intenta inyectar código Javascript en un sitio de estas características debe buscar la forma de hacerlo de la forma mas silenciosa posible, un buen webmaster lo pondrá realmente difícil y tendrá medios para detectar este tipo de ataques, uno más mediocre lo pondrá más fácil.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="en-qué-radica-la-dificultad-o-facilidad-a-la-hora-de-inyectar-código-javascript"&gt;
¿En qué radica la dificultad o facilidad a la hora de inyectar código Javascript?
&lt;a href="#en-qu%c3%a9-radica-la-dificultad-o-facilidad-a-la-hora-de-inyectar-c%c3%b3digo-javascript" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El ejemplo visto en las líneas anteriores ilustra una inyección de código Javascript básica, un foro en el que no hay restricción alguna, metemos código javascript y se publica sin más. Normalente esto no te va a funcionar en ningún foro, hace unos años si funcionaba, pero hoy ya no, al menos no de forma tan trivial. Por ello cuando un atacante quiere estudiar la forma de inyectar código javascript ha de tener máximo de información posible de lo que quiere hacer. Imaginad que detectáis que alguien utiliza un foro basado en la tecnología PHPBB entonces podriamos descargarlo, y configurarlo lo más parecido posible al foro real, y dentro de vuestro entorno virtual controlado probáis distintas inyecciones para ver el resultado hasta llegar a vuestro objetivo.&lt;/p&gt;
&lt;p&gt;Vamos a ver un ejemplo sencillo de cómo se puede engañar a un filtro de código javascript. Lo primero que voy a mostraros es la estructura de un script Javascript:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;script&amp;gt;CODIGO...CODIGO....CODIGO....CODIGO....&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si nos fijamos lo importante es que el código esté encerrado entre los tags &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; y &lt;code&gt;&amp;lt;/script&amp;gt;&lt;/code&gt; Un filtro que estuvo muy de moda algunos años atrás era uno que lo que hacía era detectar la palabra &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; y &lt;code&gt;&amp;lt;/script&amp;gt;&lt;/code&gt; de forma que si alguien escribía en el foro:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Hola encantado de formar parte de esta comunidad &amp;lt;script&amp;gt; codigoqueenvialacookie &amp;lt;/script&amp;gt; Saludos
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se publicaba lo siguiente:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hola encantado de formar parte de esta comunidad codigoqueenvialacookie Saludos&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Y el código javascript encargado de robar la cookie se quedaba &amp;ldquo;inocuo&amp;rdquo;, no se ejecutaba porque el filtro había borrado los tags &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; y &lt;code&gt;&amp;lt;/script&amp;gt;&lt;/code&gt; ¿Cual fue el método que se ideó para engañar a este filtro?. Una solución bastante sencilla que consistía en publicar lo siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Hola encantado de formar parte de esta comunidad &amp;lt;scr&amp;lt;script&amp;gt;ipt&amp;gt; codigoqueenvialacookie &amp;lt;/scr&amp;lt;/script&amp;gt;ipt&amp;gt; Saludos
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si nos fijamos lo que he hecho es meter dentro del tag &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; el mismo tag en medio. ¿Por qué? Porque yo sabía que el filtro me iba a borrar el tag &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; y me iba a publicar lo demás así que; como resultado final el fitro borraba el tag &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; que había incrustado y sin darse cuenta me dejaba pasar el tag que tenía roto:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Hola encantado de formar parte de esta comunidad &amp;lt;scr&amp;lt;script&amp;gt;ipt&amp;gt; codigoqueenvialacookie &amp;lt;/scr&amp;lt;/script&amp;gt; ipt&amp;gt; Saludos
Hola encantado de formar parte de esta comunidad &amp;lt;script&amp;gt; codigoqueenvialacookie &amp;lt;/script&amp;gt; Saludos
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para llegar a esta solución fue necesario hacer bastante pruebas, las cuales las cuales se realizan en entornos virtuales sin hacer ruido, Cuando se ve que funciona en el entorno virtual se pude verificar que realmente funcionaba en el real, así que es prudente notificar a los administradores de la vulnerabilidad y que la misma sea corregida.&lt;/p&gt;
&lt;p&gt;Con esta lección espero que hayamos podido comprobar la importancia de Javascript en el mundo de la seguridad informática y cual es su papel en el mundo del &amp;ldquo;hacking&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Fuente: CusrsoHacker&lt;/p&gt;</description></item><item><title>¿Como crear un deb con dpkg?</title><link>https://patojad.com.ar/post/2020/04/como-crear-un-deb-con-dpkg/</link><pubDate>Thu, 02 Apr 2020 10:14:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/04/como-crear-un-deb-con-dpkg/</guid><description>&lt;p&gt;Existen muchas formas de crear un instalable .deb para nuestros sistemas. En este caso vamos a ver uno de los metodos, probablemente el mas simple de todos y uno de los mas utiles por su practicidad.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="como-funciona"&gt;
¿Como funciona?
&lt;a href="#como-funciona" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;iframe src='https://www.youtube.com/embed/mHqRbo1A5MM?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Como se puede apreciar en el video lo que debemos hacer es organizar las carpetas de nuestro programa como si estuvieramso en el directorio raiz (en el caso practico en la carpeta deb tomamos como si fuera raiz para posicionar todos los archivos en la pocicion que deben quedar post intalacion)&lt;/p&gt;
&lt;p&gt;Luego debemos crear el directorio DEBIAN en &amp;ldquo;nuestro root&amp;rdquo; y dentro de el crear el archivo control, el cual podemos hacerlo de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir DEBIAN
cd DEBIAN
vim control
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(En el ultimo punto podemos usar vim, vi, pluma, gedit, deepin-editor o el que querramos para que nos quede comodo editar el archivo). Inmediatamente despues basta con agregar lo siguiente personalizando los datos claramente:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Package: lynxos-gtk-theme
Priority: optional
Section: graphics
Maintainer: PatoJAD &amp;lt;jdecima@disroot.org&amp;gt;
Architecture: amd64
Version: 0.0.4
Depends: lynxos-icons-theme, lynxos-wallpapers
Description: Tema de GTK para LynxOS
LynxOS un thema GTK integrado con su trabajo en el escritorio
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Recorda que en el video se explica mucho mejor como funcionan los campos. Realmente es importante completarlos bien para evitar errores futuros. En la ultima linea (la descripcion larga) es importante dejar el espacio como inicio de linea.&lt;/p&gt;
&lt;p&gt;Despeus de esto basta con ejecutar el comando dpkg que empaqueta el archivo dejando listo nuestro instalador de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dpkg -b ./ ../lynxos-gtk-theme-0.0.4_amd64.deb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Donde dpkg -b recibe 2 parametos el 1 es el directorio que tomamoscomo raiz para crear nuestro deb (en el caso practico deb) y el 2 donde queremos que quede el deb con el respectivo nombre.&lt;/p&gt;</description></item><item><title>HTTP/3 ¿Una internet mas rapida?</title><link>https://patojad.com.ar/post/2020/03/http-3-una-internet-mas-rapida/</link><pubDate>Wed, 25 Mar 2020 08:47:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/03/http-3-una-internet-mas-rapida/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="http3-qué-es-de-dónde-viene-y-qué-es-lo-que-cambia-para-buscar-un-internet-más-rápido"&gt;
HTTP/3: qué es, de dónde viene, y qué es lo que cambia para buscar un Internet más rápido
&lt;a href="#http3-qu%c3%a9-es-de-d%c3%b3nde-viene-y-qu%c3%a9-es-lo-que-cambia-para-buscar-un-internet-m%c3%a1s-r%c3%a1pido" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Vamos a intentar explicar qué es, o de que se trata exactamente el HTTP/3, la nueva versión de uno de los protocolos más importantes para el funcionamiento de internet. Se trata de un protocolo que lleva ya unos años desarrollándose, y que promete llegar a partir de este año para ofrecer unas cargas más rápidas en todo internet para lo cual aplica algunos cambios muy importantes en la manera en la que se intercambian los datos en la red.&lt;/p&gt;
&lt;p&gt;Como para entender la importancia de este cambio hay que saber un poco cómo funciona internet en general, nosotros vamos a intentar dar un pantallazo de todo como para poder entender el tema. Primero, deberiamos basarnos en &lt;strong&gt;qué es y cómo ha evolucionado el protocolo HTTP&lt;/strong&gt; con sus diferentes versiones. Y luego, intentaremos explicar de la forma más sencilla posible qué es el HTTP/3 y los cambios que propone, y terminaremos dándo una idea de los sitios en los que ya se ha implementado.&lt;/p&gt;
&lt;p&gt;Para entender todo esto, vamos a adentrarnos en &lt;strong&gt;varios conceptos que pueden llegar a ser densos y difícil de entender para los usuarios que no se dedican explícitamente a la informatica&lt;/strong&gt;. Por eso, vamos a intentar no centrarnos tanto en los tecnicismos para intentar explicar solo las cosas que mas visibles para el usuario.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-el-http"&gt;
Qué es el HTTP
&lt;a href="#qu%c3%a9-es-el-http" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/392246/los-protocolos-que-se-usan-en-internet/1366_2000.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Las comunicaciones de internet funcionan a través de protocolos. Por una parte tienes el Protocolo de Internet, Internet Protocol o IP en inglés del cual hablamos anteriormente, si queres saber mas podes ingresar a &amp;ldquo;&lt;a href="https://patojad.com.ar/post/2020/02/qu%c3%a9-hay-detr%c3%a1s-de-una-ip/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
¿Que hay detas de una IP?
&lt;/a&gt;&amp;rdquo; o &amp;ldquo;&lt;a href="https://patojad.com.ar/post/2020/01/direcciones-ips-nuestra-huella-en-la-red/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Direcciones IP nuestra huella en la red
&lt;/a&gt;&amp;rdquo;. Nadie puede navegar por la red sin una dirección IP, y cuando escribes patojad.com.ar, lo que hace tu navegador es traducir ese texto a una dirección IP para conectar con el servidor de la web (en nuestro caso GitLab Pages).&lt;/p&gt;
&lt;p&gt;Y otro igualmente importante es el &lt;strong&gt;Protocolo de Transferencia de Hipertexto, Hypertext Transfer Protocol o HTTP en inglés. Es el protocolo que utilizan los navegadores para comunicarse con los servidores web,&lt;/strong&gt; y el que deben seguir el resto de software perteneciente a la arquitectura de la web, como los servidores, proxies y los mencionados navegadores.&lt;/p&gt;
&lt;p&gt;También es el que define la sintaxis y la semántica que utilizan los elementos de software de la arquitectura web para comunicarse. Además, se usa también para la &lt;strong&gt;transferencia de imágenes y el resto de elementos que componen una web,&lt;/strong&gt; desde el servidor al navegador, y en las apps para comunicarse con las APIs.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/c14f79/get-video/1366_2000.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Este protocolo sigue el modelo de cliente-servidor. Esto quiere decir que cuando tú estableces una conexión, &lt;strong&gt;realizas peticiones a un servidor&lt;/strong&gt; para que este te muestre el contenido de la página. Este contenido se mostrará en tu navegador usando el código &lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;, que es el estandarizado para colocar los elementos que hay en cada web, pero para cargar estos elementos, te llegarán a través de la conexión establecida.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/3e82f1/peticion/1366_2000.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En esta imagen puedes ver los diferentes campos que tiene una petición de HTTP. El primero &lt;strong&gt;es el método que define el tipo de operación que se quiere realizar,&lt;/strong&gt; y que suele ser un verbo como GET (obtener) o POST, o un nombre como OPTIONS o HEAD.&lt;/p&gt;
&lt;p&gt;A la derecha viene la dirección del recurso que se ha pedido, o la URL de este recurso. A esta dirección se le quitan los elementos obvios del contexto, como el http:// inicial, el puerto o el nombre del dominio. Le acompañan la versión del protocolo HTTP, y debajo ya tienes las cabeceras opcionales que aportan información adicional a los servidores. Si se usan métodos como POST, también puede haber un cuerpo de mensaje para enviar información al servidor.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-ha-evolucionado-el-http"&gt;
Cómo ha evolucionado el HTTP
&lt;a href="#c%c3%b3mo-ha-evolucionado-el-http" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El HTTP fue desarrollado durante años por el World Wide Web Consortium y la Internet Engineering Task Force (IETF). &lt;strong&gt;La primera versión fue la 0.9 lanzada en 1991,&lt;/strong&gt; que fue mejorada con el el HTTP/1.0 lanzado en 1996, y culminada en 1999 con el lanzamiento de la versión 1.1.&lt;/p&gt;
&lt;p&gt;Llegados a este punto, puedes entender que el Internet y las webs de 1999 no tienen nada que ver con lo que puedes encontrarte hoy en día en la red. Es por eso, que a lo largo de los años &lt;strong&gt;el protocolo también ha tenido que actualizarse.&lt;/strong&gt; Al hacerlo no ha habido grandes cambios, pero sí se ha perfeccionado la manera en la que se transfieren los datos en la red.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/9e0060/http2/1366_2000.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En 2012 se publicaron los primeros borradores de la nueva versión mejorada de HTTP, que acabó lanzándose oficialmente en mayo del 2015 con el nombre HTTP/2. Este protocolo permitió enviar más de un recurso en una sola conexión de TCP, lo que hizo que se redujese el número de peticiones para cargar una web. En pocas palabras, &lt;strong&gt;se aceleró la carga de las webs&lt;/strong&gt; al permitir que la transferencia de elementos fuera más rápida.&lt;/p&gt;
&lt;p&gt;Para la próxima versión no tendremos que esperar tanto, ya que tras años de trabajo, en 2018 se le da nombre al que será el próximo paso en la cadena evolutiva. &lt;strong&gt;Es el HTTP/3 que debería llegar en 2020&lt;/strong&gt; según su documentación oficial para conseguir un internet todavía más rápido que el que tenemos hasta ahora.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-el-http3-y-qué-es-lo-que-cambia"&gt;
Qué es el HTTP/3 y qué es lo que cambia
&lt;a href="#qu%c3%a9-es-el-http3-y-qu%c3%a9-es-lo-que-cambia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;HTTP/3, es el nombre oficial de la próxima versión de protocolo de comunicaciones que permite las transferencias en la web. Esta nueva versión tiene un cambio muy importante, pues &lt;strong&gt;será la que deje de utilizar por primera vez el protocolo TCP&lt;/strong&gt; que hasta ahora se ha venido utilizando en el HTTP, y lo sustituirá un nuevo protocolo llamado QUIC, e inicialmente desarrollado por Jim Roskind en Google, aunque al ser un proyecto de código abierto el desarrollo ha sido conjunto por la comunidad.&lt;/p&gt;
&lt;p&gt;El TCP es un protocolo desarrollado en los años 70 del pasado siglo, y desde entonces forma parte del protocolo IP. Es el encargado para crear conexiones entre los ordenadores, a través de las cuales se envía después el flujo de datos. Este protocolo &lt;strong&gt;es utilizado por otros protocolos como el HTTP, SMTP, &lt;a href="https://patojad.com.ar/post/2023/10/claves-ssh-una-gu%c3%ada-completa-para-la-seguridad-en-conexiones-remotas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
SSH
&lt;/a&gt; y FTP,&lt;/strong&gt; y es el encargado de garantizar que los datos se entregan sin errores en el destino previsto, y en el mismo orden en el que fueron transmitidos.&lt;/p&gt;
&lt;p&gt;Para realizar conexiones, este protocolo realiza una conexión de múltiples pasos entre cliente y servidor, asegurando el orden de los paquetes, con confirmaciones paquete a paquete recibido, y retransmitiendo si es necesario los paquetes perdidos. También se realizan comprobaciones de la computación por si hubiera errores. Esto quiere decir que cuando se envía un paquete de datos, el receptor y el emisor &lt;strong&gt;intercambian información de forma constante para asegurarse de que todo se está haciendo correctamente.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-supone-cambiar-tcp-por-quic"&gt;
Qué supone cambiar TCP por QUIC
&lt;a href="#qu%c3%a9-supone-cambiar-tcp-por-quic" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/6a510d/quic/1366_2000.jpeg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En esta tabla de arriba tienes una comparativa en la que ves cómo son las conexiones con el TCP normal, el TCP con el cifrado TLS para proteger la privacidad de los datos, y QUIC. La conexión se deshace de las conexiones continuas con las que emisor y receptor se aseguran de que los datos se envían y reciben correctamente, y también se elimina el intercambio de datos con el que establecer el cifrado TLS. &lt;strong&gt;QUIC simplemente envía los datos.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Este cambio mejorará la latencia de la conexión&lt;/strong&gt; con menos intercambio de datos entre emisor y receptor. También tiene soporte para varias conexiones multiplexadas, lo que significa que se combinan dos o más señales para transmitirlas por un único medio de transmisión, algo que ahorra tiempo reduciendo el número de medios de transmisión, y se ahorrará tiempo enviando los datos cifrados por defecto.&lt;/p&gt;
&lt;p&gt;Lo cual podeos resumirlo como que tendramos que esperar menos para que carguen nuestros sitios favoritos como PatoJAD&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="dónde-se-ha-implementado-ya-el-http3"&gt;
Dónde se ha implementado ya el HTTP/3
&lt;a href="#d%c3%b3nde-se-ha-implementado-ya-el-http3" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;¿Dónde está ya implementado el HTTP/3? Pues tras llevar haciendo pruebas desde mediados de 2019, tanto Firefox como Chrome han implementado ya el nuevo protocolo en las versiones estables del navegador. Chrome lo tiene desde la build 79 lanzada en diciembre, y Firefox desde su build 72 de enero de este 2020.&lt;/p&gt;
&lt;p&gt;También Cloudflare, del que ya hablemos hablado anteriormente en &lt;a href="https://patojad.com.ar/post/2019/10/cloudflare-que-es-ventajas-y-desventajas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
nuestra publicacion
&lt;/a&gt;, ha implementado la compatibilidad de este protocolo. Y esta empresa es muy importante, porque actúa como intermediaria entre el cliente y el servidor, y son muchas las empresas que han apostado por sus servicios a nivel mundial, tanto ques &lt;strong&gt;si Cloudflare tose, a internet le sube la fiebre.&lt;/strong&gt; Una caída de este servicio hace que miles de webs dejen de funcionar, como este sitio por ejemplo, y por eso es importante que ya esté preparada.&lt;/p&gt;
&lt;p&gt;En cualquier caso, lo que debes tener claro es que &lt;strong&gt;el salto al HTTP/3 no va a ser algo que vayas a notar demasiado a nivel de usuario.&lt;/strong&gt; Las empresas de internet se están preparando para él, por lo que cuando sea lanzado oficialmente durante este año no habrá ningún tipo de apagón, simplemente poco a poco veremos cómo algunos servicios adaptados empezarán a cargar un poco más rápido.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://educacionit.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Fuente
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Komorebi</title><link>https://patojad.com.ar/post/2020/03/komorebi/</link><pubDate>Fri, 20 Mar 2020 09:07:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/03/komorebi/</guid><description>&lt;p&gt;Komorebi es un bonito e impresionante gestor de wallpapers para cualquier distro Linux, es de código abierto y fué desarrollado en Vala por Abraham Masri.&lt;/p&gt;
&lt;p&gt;La herramienta cuenta con fondos personalizables que pueden ser configurados de diversas maneras y en cualquier momento, psoee múltiples fondos pantallas (animados, estáticos, degradados entre otros), los mismos son enriquecidos con diversas opciones que la herramienta nos ofrece.&lt;/p&gt;
&lt;p&gt;Este gestor de wallpapers nos permite añadir a nuestro fondo las estadísticas de nuestro sistema (uso de memoria ram, disco,…), añadir un estilo dark, fecha y hora, optimizar el rendimiento de fondos, entre otras excelentes funcionalidades.&lt;/p&gt;
&lt;p&gt;Su panel es muy sencillo de usar y los efectos de los fondos simplemente son geniales.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-instalar-komorebi"&gt;
Cómo instalar komorebi
&lt;a href="#c%c3%b3mo-instalar-komorebi" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La instalacion es muy sencilla, para instalarlo en cualquier distribucion (realizando la compilacion a mano) es muy sencilla.&lt;/p&gt;
&lt;p&gt;Primero instalamos las dependecias del proyecto (eso varia dependiendo de la base y el sistema de paquetesque tenga nuestra distro) pero los paquetes a instalar son libgtop2-dev, libgtk-3-dev, cmake, y valac&lt;/p&gt;
&lt;p&gt;Despues de esto debemos correr los siguientes comandos los cuales ire explicando su funcionamiento. El primer comando nos permite clonar el proyecto de Git (su version en Master) y nos pociciona en la carpeta para poder seguir:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/iabem97/komorebi.git
cd komorebi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creamos la carpeta build dentro del proyecto y nos pocicionamos dentro, esto nos sirve para poder compilar sin ensuciar el codigo fuente.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir build &amp;amp;&amp;amp; cd build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este comando ejecuta la compilacion y la instalacion del proyecto, esto recordemos que no varia entre distribuciones:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cmake .. &amp;amp;&amp;amp; sudo make install &amp;amp;&amp;amp; ./komorebi
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Que es la Virtualizacion</title><link>https://patojad.com.ar/post/2020/02/que-es-la-virtualizacion/</link><pubDate>Tue, 18 Feb 2020 08:21:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/02/que-es-la-virtualizacion/</guid><description>&lt;p&gt;La virtualización de servidores, sistemas operativos y redes juega un papel fundamental tanto para los administradores de sistemas como para los expertos en seguridad informática. Para los primeros, los administradores de sistemas, les brinda una herramienta perfecta para separar unos servicios de otros y ganar en seguridad, ya que si un &amp;ldquo;hacker&amp;rdquo; compromete un servicio no tendrá acceso a todo el sistema.&lt;/p&gt;
&lt;p&gt;Desde el punto del vista del &amp;ldquo;hacking ético&amp;rdquo; esta herramienta nos dará la posibilidad de crear entornos virtuales para poder hacer nuestras pruebas. Otra de las ventajas de la virtualización es que si quieres probar un sistema operativo antes de decidir si instalarlo en tu disco duro modificando el sistema de arranque podrás instalarlo sin necesidad de hacer ningún cambio en tu PC, tal y como si fuera un programa más.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-la-virtualización"&gt;
¿Qué es la virtualización?
&lt;a href="#qu%c3%a9-es-la-virtualizaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://blog.desdelinux.net/wp-content/uploads/2019/01/virtualbox-virtualizacion-importancia-blog-desdelinux-830x531.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La virtualización consiste en términos generales en emular mediante algún programa o sistema un hardware sobre el que montar un servicio, servidor o red. De esta forma se crea lo que conocemos como una máquina virtual. Así, con un solo ordenador tu puedes crear varias máquinas virtuales e instalar en cada una de ellas el software (ya sea un windows, una distribución de Linux, o MacOS) que necesites para trabajar. Esto es realmente interesante no solo para el usuario que se dedica de forma profesional a la informática sino para todos los usuarios.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-necesitamos-la-virtualización-como-pentesters"&gt;
¿Por qué necesitamos la virtualización como pentesters?
&lt;a href="#por-qu%c3%a9-necesitamos-la-virtualizaci%c3%b3n-como-pentesters" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En primer lugar vamos a necesitar vitualizar servidores para poder trabajarlos sin hacer cambios en nuestro equipo. Si nosotros pretendemos instalar cada servicio o porgrama en nuestro PC conseguiríamos que finalmente fuera lento e insostenible para trabajar. En cambio si nosotros instalamos el software que queremos en una máquina virtual nuestro pc no se resentirá, podremos trabajarlo como si lo estuvieramos instalando en un ordenador de pruebas sin comprometer la seguridad de nuestro equipo. Algo que a nosotros como pentesters debería ser una prioridad.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://lh3.googleusercontent.com/proxy/LxCYzwleqBmVFo4TXyqQ9Qa89B30L07--55TmGLLKlkBtGrGHAkxoWKDioNhh_jYpXT7LL7L7F3dTErXZvKa0XzP4-wnZCpBh7A9I6LCCW8dWn2MjO9JA7niVwV2CTMzaKWSIPV_4c0o8BK7Wo8VeA%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://lh3.googleusercontent.com/proxy/LxCYzwleqBmVFo4TXyqQ9Qa89B30L07--55TmGLLKlkBtGrGHAkxoWKDioNhh_jYpXT7LL7L7F3dTErXZvKa0XzP4-wnZCpBh7A9I6LCCW8dWn2MjO9JA7niVwV2CTMzaKWSIPV_4c0o8BK7Wo8VeA"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Otra razón de peso para trabajar con máquinas virtuales en el entorno de intrusiones es que podremos instalarnos distribuciones de pentesting &amp;ldquo;profesional&amp;rdquo; como lo es Kali Linux (a fines practivos de esta saga es muy util) sin necesidad de instalarlo directamente en nuestro PC obligándonos a modificar el sistema de arranque. Aunque como pentester lo normal es que lo tengas instalado sin virtualizar, para empezar, y ver cómo trabajan estas distribuciones para pentester lo ideal es virtualizarlas, familiarizarse con su uso y finalmente acabar instalándola como sistema operativo arrancable.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ATENCION: Recuerden que a ducha distribucion no es recomendada, si nosotros buscamos aprender mas sobre todas las herramientas de intrusiones y demas es importante que aprendamos a compilar el codigo y no aceptemos binarios agenos, un buen &amp;ldquo;hacker&amp;rdquo; (notaran que esta palabra la pongo entre comillas porque me da gracia el mal uso que le estamos dando) siempre tiene sus propias herramientas bien seguras&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;También te pasará en multitud de ocasiones que quedrás auditar un programa en una versión concreta, en un entorno concreto. Gracias a la virtualización podrás crear ese entorno en tu PC y realizar todas las pruebas de pentesting que consideres necesarias realizar para finalmente aplicarlas en el entorno real si fuera necesario.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ventajas-de-la-virtualización-para-administradores"&gt;
Ventajas de la virtualización para administradores
&lt;a href="#ventajas-de-la-virtualizaci%c3%b3n-para-administradores" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como administrador de sistemas o redes trabajar virtualizando servidores, aplicaciones o servicios es una estrategía que cada día se está poniendo en práctica con más énfasis. Los beneficios de la virtualización para los administradores se pueden dividir en estos grupos:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.letscloud.io/blog/wp-content/uploads/2019/07/tools-of-sys-admin.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;SEGURIDAD&lt;/strong&gt;. Supongamos que necesitas instalar un servidor LAMP (Linux, Apache, MySQL, PHP, esto es un servidor para montar páginas web) y un servidor de archivos puede optar por dos opciones. Instalar en un único servidor ambos servicios, LAMP y servicio para compartir archivos. Todo te funcionaría bien, ¿pero que ocurriría si un hacker encontrara una vulnerabilidad en tu web y pudiera tomar el control del servidor? Que no solo tendría acceso a los archivos de tu web, sino que también a todos los archivos que tienes compartidos, con lo cual desde un fallo en la web se ha comprometido todos los archivos de tue empresa.
En cambio si se hubiera escogido una solución virutalizada se habría podido crear en el serivodor 2 máquinas virtuales. En la primera se instalaría el servidor LAMP, y en la segunda se instalaría el servidor de archivos. En este escenario el hacker que consiga encontrar una vulnerabilidad en la web solo tendría acceso a la máquina virtual que aloja el servidor LAMP. Y aunque habría conseguido comprometer tu web los archivos de tu empresa aún segurían aislados y seguros. Es por este motivo por el que para muchos admnistradores la solución ideal es crear una máquina virtual por cada servicio que tenga un riesgo medio/alto de ser vulnerado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BACKUPS&lt;/strong&gt;. La mayoría de los servicios que utilizamos hoy en día disponen de mecanismos para hacer copias de seguridad y poder restaurarlas en caso de fallos. Pero también es cierto que las copias de seguridad a veces no son completas, contienen datos pero no guardan configuraciones o perfiles específicos. Si utilizamos máqunias virtuales, nosotros podemos programar en el servidor de forma automática que cada día haga una copia de la máquina virtual, de modo que si queremos restaurar una copia de seguridad bastará con arrancar la máquina que tenemos copiada y funcionará sin tener que tomar ninguna medida más.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PROTECCIÓN CONTRA ERRORES HARDWARE&lt;/strong&gt;. Uno de los problemas que más daño pueden crear a un administrador de sistemas es que falle un componente crítico del servidor, la placa base por ejemplo. Si esto ocurre y hay que sustituir este elemento habrá que reinstalar todo el sistema operativo, configurarlo, instalar los programas, configurarlos y cargar las copias de seguridad para poder seguir trabajando. Todo esto tiene un coste en tiempo y esfuerzo bastante alto. Sin embargo si estamos trabajando con máquinas virtuales si falla el servidor podremos sustituirlo, copiarle las máquinas virtuales y arrancarlas. Esta solución no te llevará ni una décima parte de tiempo que si tuvieras que reconfigurarlo todo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MIGRACIÓN DE SERVIDORES SIN RECONFIGURACIONES&lt;/strong&gt;. Aplicando lo dicho en el punto anterior te puedes dar cuenta de que si tu servidor se queda pequeño y necesitas uno mas grande tan solo necesitas conectarlo pasarle las máquinas virtuales y empezar a trabajar, sin necesidad de reconfigurar todo lo que tenías hecho en el servidor antiguo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REALIZAR PRUEBAS SIN RIESGO&lt;/strong&gt;. Una de las características más interesantes de la virtualización es que podemos hacer &amp;ldquo;puntos de retorno&amp;rdquo; o &amp;ldquo;Snapshots&amp;rdquo;. Esto significa que si nosotros estamos dudando sobre si instalar un programa o no, podemos crear un punto de retorno &amp;ldquo;snapshot&amp;rdquo;, instalar lo que necesitemos y si detectamos alguna incompatibilidad y creemos que lo mejor habría sido no instalarlo podemos volver al punto de retorno y la máquina virtual volverá al estado en el que hicimos el snapshot, sin quedar ningún rastro de todo lo que hayamos hecho tras el punto de retorno.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="en-el-dia-a-dia"&gt;
En el dia a dia
&lt;a href="#en-el-dia-a-dia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Otro punto extra que nos ofrecen las máquinas virtuales es que como nos permiten virtualizar cualquier sistema operativo podemos tener un sistema operativo en el que no aparezcan datos sobre nosotros, no aparezca nuestro nombre real, y no hayamos introducido ningún dato personal nuestro. Con este sistema operativo &amp;ldquo;neutro&amp;rdquo; nosotros podemos navegar por internet sin dejar rastro de nuestro nombre.&lt;/p&gt;
&lt;p&gt;En lo personal tambien lo utilizo para probar software que desarrollo o modifico sin afectar mi sistema base.&lt;/p&gt;
&lt;p&gt;Por útimo y no menos importante a nosotros como usuarios de la red y programas a veces nos encontramos que no estamos seguros si algún programa trae malware incrustado, sospechamos quizá por la procedencia que el programa no está limpio, lo necesitamos y no sabemos que hacer. Si lo instalamos en nuestro ordenador tal cual corremos el riesgo de que quede infectado por el malware que traiga, si no lo instalamos no podemos hacer uso del programa. En este punto las máquinas virtuales también nos pueden resultar de gran ayuda ya que podemos instalar el programa dentro de la máquina virtual, analizar si traía malware y decidir si instalaro en nuestro sistema operativo de trabajo o dejarlo virtualizado.&lt;/p&gt;</description></item><item><title>Ingenieria social informatica</title><link>https://patojad.com.ar/post/2020/02/ingenieria-social-informatica/</link><pubDate>Mon, 17 Feb 2020 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/02/ingenieria-social-informatica/</guid><description>&lt;p&gt;En el mundo &amp;ldquo;hacking&amp;rdquo; no hay programa o métodología estándar para conseguir hacer una intrusión a cualquier tipo de sistema, existen un conjunto de técnicas, métodos y/o herramientas que bien utilizadas pueden dar con mayor o menor posibilidades el éxito en este tipo de busquedas. El uso de esta técnica está al alcance de cualquiera ya que no se necesitan conocimientos previos para poder llevarla a cabo. Ahora bien, si la está utilizando un usuario experto o con mucha practica podrá obtener información relevante para poder alcanzar sus objetivos con una mayor efectivadad.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-la-ingenieria-social"&gt;
¿Qué es la ingenieria social?
&lt;a href="#qu%c3%a9-es-la-ingenieria-social" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;La definición de ingeniería social es el arte de sacar información a alguien sin que la persona que está siendo &amp;ldquo;atacada&amp;rdquo; se de cuenta&lt;/strong&gt;. Este sería el resumen corto, y en un sentido mas ámplio se utiliza también para inducir al usuario a realizar acciones que o bien le pondrán en una posición de baja seguridad o bien nos ayudará a crear una situación en la que nosotros como atacantes estamos en posicón ventajosa para lograr el objetivo que estamos persiguiendo. Esto no es algo que se aplique exclusivamente en el ámbito informático, es una técnica basada en el engaño y la confianza por parte de la víctima.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-puede-afectarte-la-ingenería-social-si-tienes-un-hijo"&gt;
¿Cómo puede afectarte la ingenería social si tienes un hijo?
&lt;a href="#c%c3%b3mo-puede-afectarte-la-ingener%c3%ada-social-si-tienes-un-hijo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si eres padre de un menor de edad que está empezando a coquetar en internet deberías poder ser capaz de ver con quien se está relaccionando, ya que por desgracia para todos sabemos que puede convertirse en el objetivo de algún adulto con malas intenciones. Al igual que a todos nos han dicho alguna vez &amp;ldquo;no hables con desconocidos&amp;rdquo; en la red ocurre lo mismo. Solo que en la red es mas dificil detectar para el crío saber si realmente está hablando con otro chaval o con alguien que se &lt;strong&gt;está haciendo pasar por un niño&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://cursohacker.es/sites/default/files/styles/large/public/images/20140901015913.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esta gente suele ganarse la confianza de tus hijos haciéndoloes creer que son también menores y poco a poco se los van llevando a su terreno hasta que tu hijo hará exactamente lo que el adulto pretendía desde el principio.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ingeniería-social-aplicada-a-empresas"&gt;
Ingeniería social aplicada a empresas
&lt;a href="#ingenier%c3%ada-social-aplicada-a-empresas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si eres un empresario ten presente desde ya la siguiente frase en mente &amp;ldquo;&lt;strong&gt;una cadena es tan fuerte como eslabón mas débil&lt;/strong&gt;&amp;rdquo;. Esto es, de nada te servirá que tu red sea la más segura de la zona si tus empleados no está bien educados. Si no tienes un protocolo de actuación bien definido un atacante ducho en ingeniería social podría sacar información suficiente de tu empresa sin ser descubierto en tan solo unas horas.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://cursohacker.es/sites/default/files/images/20140901020210.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El siguiente es un ejemplo de &lt;strong&gt;ingeniería social&lt;/strong&gt; real que se ha dado y se dará en multitud de ocasiones.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Un atacante digamos que quiere acceder a las entrañas de la empresa &amp;ldquo;Inseguridad informática SL&amp;rdquo; descubre que tiene una web &lt;a href="http://www.inseguridadinformaticasl.com" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
www.inseguridadinformaticasl.com
&lt;/a&gt; y en ella ve que aparece el típico logo de la empresa que le ha creado la web. Ve además que que la web tiene un formlario de contacto y que no está muy protegido contra el spam. Con este escenario su objetivo será colarse en la empresa para instalar un software de control remoto (un troyano) en un ordenador de dentro de la empresa. ¿Cómo podría actuar? En primer lugar podría utilizar el formulario de contacto para ver si hay alguien al otro lado que responde a los correos que llegan. Lo que está buscando es dar con la persona que hay detrás de la web en la empresa. Una vez verifica que hay alguien ya sabe que mediante ese formulario interactúa con un empleado y esto ya aunque no lo creas es la primera vía de entrada a la empresa. Si es hábil podrá averiguar el nombre de la persona que responde a ese formulario de contacto e incluso si tiene una extensión telefónica dentro de la empresa. Ya lo ha hecho, tras unos días haciendo esta indagación ya sabe que Manolo Garrido con la extensión 001 es quien gestiona el formulario de contacto de la web. Siguiente paso, poner nervioso a Manolo. Mediante algún programa de SPAM podría hacer que le llegaran cientos de peticiones falsas mediante este formulario de contacto. Manolo no sabe bien qué está ocurriendo y se está poniendo nervioso, evidentemente no sospecha nada de que esto es parte de una estrategía de ataque mayor. En mitad de este caos el atacante podría hacer una llamada a la empresa diciendo que es alguien de la empresa que le ha hecho la página web y que le han dicho que hable con Manolo porque han detectado una incidencia (se la está jugando, porque podría ser que Manolo ya estuviera en contacto con la empresa de la web por el caos en el que está inmerso pero lo único que puede pasar es que su ataque falle y tenga que buscar otra estrategía). Lo normal sería que Manolo aún esté un poco sin saber bien que hacer, le pasan una llamada, y le dicen &amp;ldquo;te paso a Juan (nuestro atacante) es de la empresa que ha hecho la web&amp;rdquo;. Ya tenemos a nuestro atacante hablando directamente con Manolo. Ahora Juan le podrá decir a Manolo que ha detectado que la web está funcionando mal y que se está generando un montón de correos porque en el ordenador de Manolo está ocurriendo el problema de turno que se le ocurra a Juan, su objetivo concertar una cita con Manolo dentro de la empresa. Juan llega a la empresa, pregunta por Manolo y le llevan a su despacho, Manolo le dice que está que no puede trabajar debido a todo lo que le está entrando y Juan le pide que le deje ver su ordenador para ver qué está ocurriendo ya que ha detectado en la web que su PC se están haciendo peticiones extrañas, mete su pendrive con su &amp;ldquo;antivirus&amp;rdquo; y acaba de hacer que el ordenador de Manolo sea controlable de forma remota desde cualquier lugar del mundo, a la par que hace esto detiene su programa que estaba haciendo SPAM, Manolo ve que realmente el problema se ha solucionado y le da las gracias a Juan. Juan vuelve a casa y ya puede conectarse al PC de Manolo, acaba de hacer una intrusión sin que Manolo sospeche lo mas mínimo. Esto es solo un ejemplo de intrusión real mediante ingenería social aplicada a empresas.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ingeniería-social-aplicada-a-obtener-contraseñas-de-correo"&gt;
Ingeniería social aplicada a obtener contraseñas de correo
&lt;a href="#ingenier%c3%ada-social-aplicada-a-obtener-contrase%c3%b1as-de-correo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si bien que cada vez que abrimos una cuenta de correo electrónico con el proveedor que sea nos obliga a crear una contraseña también nos suele dar un método alternativo en caso de que olvidemos la contraseña. Este método alternativo suele ser escoger una pregunta a la cual solo nosotros conozcamos la respuesta y nos sea fácil recordar. Esto tiene un problema y que muchas personas eligen preguntas del tipo: &amp;ldquo;Mi profesor favorito&amp;rdquo;, &amp;ldquo;Mi equipo de futbol favorito&amp;rdquo;, &amp;ldquo;Mi actor favoríto&amp;rdquo; &amp;ldquo;Nombre de mi abuela materna&amp;rdquo;&amp;hellip; Evidentemente si pierdes tu clave, le das a recuperar contraseña olvidada y el sistema te hace cualquiera de esas preguntas las vas a poder responder sin muchos problemas. Pero precisamente este es el problema&amp;hellip;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://rincondelgeek.com/wp-content/uploads/2019/01/tecnicas-de-ingenieria-social.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si un atacante descubre que tienes una pregunta de ese estilo podrá entablar una conversación contigo y sacarte el tema de forma disimulada para que tu mismo le des la respuesta. En cuanto tu le des la respuesta estará en posición de hacerse pasar por tí respondiendo correctamente a la pregunta que el sistema de recuperación de claves le está formulado. Este método no suele ser muy efectivo, pero si que es cierto que si el atacante conoce a la víctima y la pregunta es sencilla podrá hacer un par de pruebas que le llevarán menos de 5 minutos antes de descartar el método.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ingeniería-social-aplicada-a-intrusión-en-equipos"&gt;
Ingeniería social aplicada a intrusión en equipos
&lt;a href="#ingenier%c3%ada-social-aplicada-a-intrusi%c3%b3n-en-equipos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El objetivo en este tipo de escenarios es inducir a la víctima a descargar malware en su equipo. En función de los conocimientos informaticos de la posible víctima al atacante le será más fácil o difícil engañar a su objetivo. Un ejemplo muy común es colgar una web falsa con algún tipo de software malicioso, y después ya sea por correo electrónico, chat o cualquier medio generarle un interés a la víctima para que visite la web, si además se conoce el navegador que suele utilizar se podría prepara un exploit que con solo visitar la web se le instalara el malware. De ahí que si el atacante es capaz de hacer una página con esas características y suma la ingenería social podrá lograr su objetivo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ingenieria-social-resumen-de-ejemplos"&gt;
Ingenieria social resumen de ejemplos
&lt;a href="#ingenieria-social-resumen-de-ejemplos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Como habrás podido comprobar la ingeniería social es casi siempre una técnica de apoyo a otras técnicas, y es haciendo la suma de todas como ciertos atacantes logran sus objetivos. En ciertas ocasiones buscar una vulnerabilidad en un software, red o servidor puede ser una tarea tediosa, llevarte horas y horas y nadie te garantiza tener éxito en la intrusión. Sin embargo la vulnerabilidad puede estar en la persona, es decir si la persona es vulnerable a estos ataques será el esabón más débil de la cadena y será ese eslabón el que habrá comprometido la seguridad de todo el sistema. &lt;strong&gt;Las redes sociales, sobre todo si tienes un perfil público&lt;/strong&gt; pueden ser una mina de información para alguien que busca la pieza que le falta para poder poner en marcha su estrategía de ataque. Ten en cuenta esta posibilidad en tu día a día y plantéate siempre la información que estás dando y a quién.&lt;/p&gt;</description></item><item><title>FTP problemas de conexion, PORT y PASV</title><link>https://patojad.com.ar/post/2020/02/ftp-problemas-de-conexion-port-y-pasv/</link><pubDate>Fri, 14 Feb 2020 11:42:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/02/ftp-problemas-de-conexion-port-y-pasv/</guid><description>&lt;p&gt;Uno de los problemas de los servidores FTP es el modo de trabajo en que se pensaron. Cuando estos servidores empezaron a proliferar en la red, hace ya algunos años, la gente se conectaba a internet de forma directa, sin routers, eran aquellos tiempos en los que los módems de 56k hacían que un pc se conectara directamente a internet sin &lt;a href="https://patojad.com.ar/post/2020/01/direcciones-ips-nuestra-huella-en-la-red/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
IP privada, directamente con la IP pública
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En estos escenarios no había ningún problema en trabajar con servidores FTP, ya que se trabaja de forma directa entre tu IP pública y la IP pública del servidor FTP. Hoy, con el auge de las redes LAN y las IPs privadas el modelo de conexión con los servidores FTP han tenido ciertos problemas que han sido solucionados, pero que aún así debemos tener claro cómo se ha implantado la solución para aquellos casos en los que no somos capaces de trabajar correctamente con un servidor FTP. Una consecuencia directa de esta solución es la posibilidad de utilizar un servidor FTP como herramienta de intromision a sistemas. Por lo cual es importante conocer a fondo esta herramienta ya sea que seamos administradores de sistemas o informaticos del area de seguridad.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="protocolo-de-conexión-en-servidores-ftp"&gt;
Protocolo de conexión en servidores FTP
&lt;a href="#protocolo-de-conexi%c3%b3n-en-servidores-ftp" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Haciendo memoria de las últimas publicaciones sobre servidores y clientes FTP ya deberías saber que este tipo de servidores trabajan de forma estándar sobre el puerto 21. Esto significa que cuando nos conectamos a un servidor FTP se establece una conexión entre un puerto aleatorio de nuestro PC y el puerto 21 del servidor FTP. De este modo creamos un canal de conexión que podría representarse así:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://cursohacker.es/sites/default/files/styles/large/public/images/20131912152702.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Una vez establecido este canal ya estamos en disposición de trabajar con el servidor FTP al que nos hemos conectado. Nosotros emitimos comandos por este canal y el servidor nos devuelve la respuesta. Pero claro, ¿Qué ocurre cuando pedimos descargar un archivo? Muy sencillo, que el canal se ocuparía descargando el archivo y no podríamos seguir emitiendo más peticiones hasta completar la descarga. Esto es un problema que nos impediría trabajar en paralelo, poder descargar varios archivos a la vez o navegar por el servidor mientras descargamos archivos. Para soluciona esto, los servidores FTP cuando pedimos descargar un archivo &amp;ldquo;crean&amp;rdquo; un canal secundario. De esta forma el canal primario siempre queda disponible para lanzar órdenes y las descargas se hacen en canales secundarios, permitiendo así poder seguir trabajando con el servidor FTP aun estando descargando archivos u haciendo cualquier otra tarea.&lt;/p&gt;
&lt;p&gt;Aquí es donde se crea el problema, a la hora de crear el canal secundario. Cuando se trabaja con IPs públicas directamente, el servidor FTP conocía tu IP pública, y era capaz de conectar contigo de forma directa, hoy esto no es posible, ya que si estás en una red local y tienes una IP privada, el servidor FTP no conocerá tu IP privada y cuando intenta crear el canal secundario falla. Pero vamos a verlo con un ejemplo gráfico:&lt;/p&gt;
&lt;p&gt;![](&lt;a href="http://cursohacker.es/sites/default/files/styles/large/public/images/20131912155613.jpg?itok=QWzqwLGV%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
http://cursohacker.es/sites/default/files/styles/large/public/images/20131912155613.jpg?itok=QWzqwLGV"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Nosotros estamos trabajando en nuestro PC que es el que tiene la IP 192.168.1.2. Recordemos que esto es una IP privada, que solo &amp;ldquo;tiene validez&amp;rdquo; dentro de nuestra red local. El router se encargará de convertir nuestra IP privada en una IP pública, en nuestro ejemplo se convertirá nuestra IP privada 192.168.1.2 en la IP pública 80.5.63.7 y llegamos al servidor FTP que tiene la IP 87.25.67.5. Si en este punto mirásemos el log del servidor FTP veríamos que se ha conectado un usuario desde la IP 80.5.63.7 y no desde 192.168.1.2, esto es porque en internet nosotros aparecemos con nuestra IP pública. Así que a ojos del servidor FTP nosotros somos 80.5.63.7.&lt;/p&gt;
&lt;p&gt;Bien ya tenemos creado nuestro canal primario. Enviamos al servidor el &lt;a href="https://patojad.com.ar/post/2020/02/comandos-ftp/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
comando para descargar un archivo
&lt;/a&gt; y este se dispone a crear el canal secundario para entregarnos este archivo por el canal secundario y que nosotros podamos seguir dándole ordenes por el canal primario. Entonces como para el servidor nosotros somos el cliente con IP 80.5.63.7 el servidor FTP intentará craear un canal secundario con la IP 80.5.63.7. Pero esta es la IP de nuestro router, y cuando detecta que un servidor intenta establecer una conexión no sabe qué hacer y no nos redirige la petición a nuestro PC 192.168.1.2, con lo cual el canal secundario nunca se establece y falla. Este es el motivo por el que parece que el servidor se queda colgado. Realmente no es que se haya quedado colgado es que por nuestra configuración de red el servidor FTP no ha sabido establecer con nosotros el canal secundario necesario para hacer la descarga del archivo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="modo-activo-y-modo-pasivo-comando-port-y-pasv"&gt;
Modo activo y modo pasivo, comando PORT y PASV
&lt;a href="#modo-activo-y-modo-pasivo-comando-port-y-pasv" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para solucionar el problema descrito anteriormente tenemos comandos para indicar al servidor la arquitectura de nuestra red y así poder trabajar de forma correcta con el servidor, sin que el nuestra arquitectura sea un impedimento. El modo activo y el modo pasivo indican quien abre el canal secundario y quien espera la conexión. En modo pasivo las conexiones son siempre abiertas por el cliente, mientras que en modo activo se abren por el que envía los datos, el servidor. En el ejemplo anterior el servidor (que por defecto tiene establecido el modo activo) es quien crea el canal secundario con nosotros encontrándose la dificultad del router, si nosotros habilitamos el modo pasivo seremos nosotros quienes crearemos el canal secundario y así evitamos que la conexión quede colgada en el router. Al igual que nosotros hemos sido capaces de establecer el canal primario también debemos ser capaces de craear el secundario si ningún firewall nos lo impide.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="solución-comando-port-ftp-server"&gt;
Solución comando PORT ftp server
&lt;a href="#soluci%c3%b3n-comando-port-ftp-server" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Con este comando nosotros indicamos al servidor FTP dónde estamos esperando la conexión. ¿Cómo y en qué situaciones este comando nos puede ayudar? Supongamos que el administrador del firewall o cortafuegos que protege al servidor FTP ha denegado todas las nuevas conexiones que se le hagan por puertos distintos al 21, con esta configuración nosotros no podriamos establecer el canal secundario ya que su cortafuegos nos lo impediría. En este caso podemos hacer uso del comando PORT para indicar al servidor FTP cómo ha de conectarse a nosotros.&lt;/p&gt;
&lt;p&gt;En primer lugar. en nuestro router debemos de mapear un puerto. Así mapeando un puerto hacemos que cuando el servidor FTP se conecte con nuestro router para establecer el canal secundario en el puerto que le especifiquemos ésta conexión sea redirigida a nuestro PC y así no se queda &amp;ldquo;parada&amp;rdquo; en nuestro router. Supongamos que mapeamos el puerto 6970. A efectos práticos, toda conexión que llege a la IP pública de nuestro router (80.5.63.7) al puerto 6970 será redirigida a nuestra IP privada (192.168.1.2) al puerto 6970. Así que debemos indicar al servidor FTP que queremos que establezca el canal secundario con nuestra IP pública en el puerto 6970 (80.5.63.7:6970). Esto lo hacemos así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PORT 80,5,63,7,27,58
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Veamos con detalle de donde han salido estos números, los 4 primeros 80 5 63 y 7 hacen referencia a nuestra IP, los 2 siguientes 27 y 58 al puerto. ¿Cómo se han calculado? Así; queríamos indicar al servidor el puerto 6970 entonces hemos hecho lo siguiente: 27x256=6912; 6912+58 = 6970 Si tu quieres calcular estas 2 componentes para cualquier puerto, primero divide el puerto entre 256 quédate con la parte entera, luego multiplica la parte entera por 256, el segundo número es al diferencia entre el resultado obtenido el y el puerto en cuestión.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="solución-comando-pasv-ftp-server"&gt;
Solución comando PASV ftp server
&lt;a href="#soluci%c3%b3n-comando-pasv-ftp-server" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Si nos encontramos en una red local en la que nos es imposible configurar nuestro router para mapearnos un puerto entonces nuestra única solución será indicarle al servidor FTP que seremos nosotros quienes crearemos el canal secundario. Para esto primero pasamos el comando PASV sin parámetros para indicar al servidor esta condición. Seguidamente le pasamos un comando PORT para indicarle al puerto del servidor FTP al que deseamos conectarnos. Esta sería la secuencia&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PASV
PORT 87,25,67,5,27,58
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Primero hemos establecido el modo pasivo y luego le hemos dicho que nos vamos a conectar a su IP al puerto 6970, ahora cuando hagamos el comando GET para descargar el archivo se creará el canal secundario con la configuración indicada.&lt;/p&gt;</description></item><item><title>El problema de linux, ¿Su comunidad?</title><link>https://patojad.com.ar/post/2020/02/el-problema-de-linux-su-comunidad/</link><pubDate>Wed, 12 Feb 2020 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/02/el-problema-de-linux-su-comunidad/</guid><description>&lt;p&gt;Estos dias pasando por los grupos de telegram llegue a esta publicacion de la red social &amp;ldquo;facebook&amp;rdquo; en la cual se reclama un poco la forma de responder de los linux users:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hola grupo, ¿como están?
Les mando un fuerte abrazo a todos. 😊&lt;/p&gt;
&lt;p&gt;Pregunta, ¿cuantos de ustedes forman parte del grupo en Facebook &amp;ldquo;Linux Latinoamerica&amp;rdquo;?&lt;/p&gt;
&lt;p&gt;Les pregunto porque hace unas horas se hizo un post algo controversial sobre la clase de preguntas y la clase de respuestas que se hacen en el grupo, y pues lo típico, preguntas novatas respondidas por &amp;ldquo;expertos&amp;rdquo; tóxicos.&lt;/p&gt;
&lt;p&gt;En fin, les quiero dejar el link al post, me gustaría que lean todo detenidamente (hasta lo Troll), y que ustedes formen su propio criterio. 😊&lt;/p&gt;
&lt;p&gt;La razón por la que les comparto esto es porque quien hace la publicación tiene un criterio, y a mi no me parece del todo erróneo. De igual manera, habrá quien no esté de acuerdo con él y es completamente válido y se respeta. 😊&lt;/p&gt;
&lt;p&gt;Creo que ver este post y lo que causa nos ayudaría a nosotros, como grupo, a aprender de ello y no caer en esos mismos problemas o discusiones. 😊
&lt;p style="text-align: right;"&gt;
Erick Herrera
&lt;/p&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;De esta forma nos invita a ver la publicacion en el grupo del facebook en la cual podemos ver lo siguiente:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No importa lo que hagas no importa el tema que publiques en el grupo, no importa siquiera si son tecnologias que desarrollan otras empresas y las des a conocer , siempre habrán personas como estás que comentan y que al parecer según sus comentarios negativos , todos estamos pendejos incluso estás compañías , y todo está mal y deberíamos hacer lo que ellos dicen&amp;hellip; Me pregunto , con este tipo de personas , la tecnología realmente avanzaría ?&lt;/p&gt;
&lt;p&gt;Por qué de seguir sus &amp;ldquo;consejos&amp;rdquo; pues hemos estado haciendo todo mal&amp;hellip;&lt;/p&gt;
&lt;p&gt;Y bueno después de tirar su veneno en sus comentarios, tienen la iluminación de decirte que tienes un ego muy grande&amp;hellip; Ok.&lt;/p&gt;
&lt;p&gt;Después de estos comentarios pues , solo puedo decir q Valve , Google , Nvidia y Yo estamos bien pendejos por creer que Linux puede avanzar en el área de los videojuegos.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Beny Hdez M
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Esta publicacion esta acompañada de las siguientes fotos.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://scontent.faep8-1.fna.fbcdn.net/v/t1.0-9/85171381_3287307241286505_7490304577745453056_o.jpg?_nc_cat=110&amp;amp;_nc_ohc=uRTFbdD5WhwAX9a_3VP&amp;amp;_nc_ht=scontent.faep8-1.fna&amp;amp;oh=151b034cb929a0f1650ef1290a77ca84&amp;amp;oe=5EBA9A3F%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://scontent.faep8-1.fna.fbcdn.net/v/t1.0-9/85171381_3287307241286505_7490304577745453056_o.jpg?_nc_cat=110&amp;_nc_ohc=uRTFbdD5WhwAX9a_3VP&amp;_nc_ht=scontent.faep8-1.fna&amp;oh=151b034cb929a0f1650ef1290a77ca84&amp;oe=5EBA9A3F"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://scontent.faep8-2.fna.fbcdn.net/v/t1.0-9/85127056_3287307317953164_7273262451301285888_o.jpg?_nc_cat=107&amp;amp;_nc_ohc=OAwjkrHbi_EAX9KdMlz&amp;amp;_nc_ht=scontent.faep8-2.fna&amp;amp;oh=f84b744416afd44815f727457b1dcdd8&amp;amp;oe=5EC7810F%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://scontent.faep8-2.fna.fbcdn.net/v/t1.0-9/85127056_3287307317953164_7273262451301285888_o.jpg?_nc_cat=107&amp;_nc_ohc=OAwjkrHbi_EAX9KdMlz&amp;_nc_ht=scontent.faep8-2.fna&amp;oh=f84b744416afd44815f727457b1dcdd8&amp;oe=5EC7810F"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Ni bien vi esto me hizo recordar a la cantidad de usuarios que en el dia a dia reprochan por no recibir ayuda de la comunidad. Realmente es uno de los mas grandes problemas de linux. Dentro de esta publicacion encontramos los siguientes comentarios (entre muchos otros)&lt;/p&gt;
&lt;p&gt;En lo personal creo que el mas grande defecto son esas personas que no quieren ayudar y en vez de llamarse al silencio genera comentarios negativos o en algunos casos maliciosos (el conocido sudo rm -r /). Yo creo que cada persona tiene derecho a eperimentar y pedir ayudar, al igual que cada uno tiene derecho a no ayudar (manteniendo el silencio) sin embargo en el momento en el que generamos un comentario negativo estamos perjudicando a toda la comunidad.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comentarios"&gt;
Comentarios
&lt;a href="#comentarios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Te dicen algo contrario a la realidad y tu mundo explota, Linux no es para juegos, simplemente que se te grabe en la cabeza, que si puede ejecutar juegos, esta bien te doy eso, puedes instalar origin? EA access&lt;/p&gt;
&lt;p&gt;Esto es como la analogía de querer meterle la cuchara al nene de que sí, Linux es para juegos!!!&lt;/p&gt;
&lt;p&gt;Te hemos tratado con respeto pero ante una opinión diferente tu no conoces el poder argumentar, simplemente ve una estadística de las ganancias de los estudios encerrando Windows&lt;/p&gt;
&lt;p&gt;Ojo que no defiendo Windows como sistema operativo pero si lo defiendo como plataforma que genera ingresos multimillonarios a los estudios&lt;/p&gt;
&lt;p&gt;Tienes bastante pasión para el tema como dice Javier y espero lo enfoques en la mejor manera para tu carrera, tengo mucho aprecio a este grupo pero para ésto están estos grupos para compartir opiniones&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Emilio Dominguez
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot; Linux no es para juegos&amp;quot; no estoy de acuerdo, incluso el dueño de valve dijo que en si gnu/linux es mejor plataforma para juegos por su estructura y manejo de recursos.&lt;/p&gt;
&lt;p&gt;adicional ahora hay muchisimos juegos nativos, sin contar los de consola que se pueden emular, lo cual haria relativo y subjetivo su punto.&lt;/p&gt;
&lt;p&gt;ya que yo podria decir de forma subjetiva linux si esta para juegos mira nada mas el monton de juegos que se ejecutan en emulador sin problema.
en mi caso muchos juegos como darksiders warmastered edition, darksiders 2, final fantasy xiii, evil rivals, old school rilvals etc me han funcionado sin problemas.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Elrond Tasartir Sama
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Toma las opiniones de quien vengan, yo solo las tomaría en cuarenta si los comentarios fueran de Linus Torvals, Richard Stallman, Ken Thompson, John Draper, etc. Si no simplemente los ignoras&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Armando Ibarra
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Es cansón que en ocasiones, uno como nuevo pide soporte y no falta el sabiondo que quiera ridiculizar la ignorancia que cada cual tenga acerca de Linux. Yo les agradezco a los que de buena fe me han ayudado y los que se han burlado, pues que se jodan, ya los bloqueé. No sé estrese buen hombre, saque solo lo bueno que las personas le puedan brindar en este grupo y siga. 😉&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Ålëx Pënågøs
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Vos que pensas sobre este tema?&lt;/p&gt;</description></item><item><title>Todos por una Internet Segura!</title><link>https://patojad.com.ar/post/2020/02/todos-por-una-internet-segura/</link><pubDate>Tue, 11 Feb 2020 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/02/todos-por-una-internet-segura/</guid><description>&lt;p&gt;En este día se promueve el uso responsable y seguro de las nuevas tecnologías, siendo los adolescentes quienes mayor uso hacen de ellas, aunque no siempre de una manera segura. Además, cada vez son más las personas mayores que también disponen de teléfonos inteligentes con conexión a Internet, sin haber recibido la formación adecuada para hacer un uso seguro de esa conectividad.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/zCepL8Xeqmo?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Para ayudarnos en esta asignatura pendiente, tenemos a nuestra disposición el portal &lt;a href="https://concienciat.gva.es" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
concienciat
&lt;/a&gt;. El objetivo de la plataforma es mejorar las habilidades y conocimientos de la sociedad en materia de ciberseguridad, siempre desde un punto de vista práctico y con transferencia directa de los conocimientos adquiridos a la vida personal y laboral de cada individuo.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/WeHtEOMl8Xc?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;Nuestros compañeros de CSIRT-CV han preparado un &amp;ldquo;&lt;a href="https://concienciat.gva.es/infografias/dia-de-internet-segura-pdf-interactivo/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
pdf interactivo
&lt;/a&gt;&amp;rdquo; para este día tan especial, donde os será muy fácil acceder a los diferentes contenidos que podéis encontrar en su web &amp;ldquo;concienciaT&amp;rdquo;, y así mejorar tus hábitos en el uso de las tecnologías y podran sentirse cada vez más seguros.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://concienciat.gva.es/wp-content/uploads/2020/02/infog_dia_internet_segura_interactivo_cas.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Desde PatoJAD les recomendamos a todos revisar este PDF porque siempre tenemos algo para aprender y recuerden que siempre es importante la seguridad de cada uno, no nos demos el lujo de exponernos!&lt;/p&gt;</description></item><item><title>Comandos FTP</title><link>https://patojad.com.ar/post/2020/02/comandos-ftp/</link><pubDate>Thu, 06 Feb 2020 09:22:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/02/comandos-ftp/</guid><description>&lt;p&gt;ya hablamos anteriormente de &lt;a href="https://patojad.com.ar/post/2020/02/servidor-ftp-qu%c3%a9-es-instalando-nuestro-propio-servidor/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
como instalar nuestro servidor FTP
&lt;/a&gt;. Hoy veremos cómo trabajar con un servidor tan solo con comandos FTP. Puede que te preguntes de qué vale conocer los comandos de un servidor FTP si hoy día cualquier herramienta de gestión gráfica nos puede hacer todo el trabajo de forma fácil y sencilla. Sin embargo siempre es util conocerlo para poder trabajar lo mas bajo nivel que podamos.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="por-qué-utilizar-comandos-ftp"&gt;
¿Por qué utilizar comandos FTP?
&lt;a href="#por-qu%c3%a9-utilizar-comandos-ftp" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Las herramientas gráficas nos pueden funcionar muy bien para el día a día, de hecho no usarlas para las funciones diarías sería una pérdida de tiempo ya que nos automatizan gran parte del trabajo. Sin embargo, cuando estas herramientas fallan llega la hora de trabajar a un nivel mas bajo, poder entender cómo trabaja un servidor FTP y así poder diagnosticar y solucionar el problema.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="encontrar-servidores-ftp-públicos-anónimos"&gt;
Encontrar servidores FTP públicos (anónimos).
&lt;a href="#encontrar-servidores-ftp-p%c3%bablicos-an%c3%b3nimos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En la red existen servidores de acceso público, con contenido que google no indexa, si sabes manejarte. Aquí podrás encontrar tanto programas antiguos, que no hayarás en indexado por ninguna web. También podrás econtrar material específico de diversa índole. Algunos de los buscadores de servidores FTP públicos son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.searchftps.net/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.searchftps.net/
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ftp-sites.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
http://www.ftp-sites.org/
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En estos servidores podrás logearte como &amp;ldquo;anonymous&amp;rdquo; y dejando la clave en blanco. Por cortesía cuando uno accede a un servidor FTP anónimo suele escribir en el campo contraseña su dirección de correo electrónico, pero no es ni mucho menos obligatorio. Indagando en estos buscadores estamos seguros de que econtrarás bastante información interesante que no encontrarías haciendo una símple búsqueda en google, ni tan siquiera haciendo búsquedas avanzadas&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="comandos-avanzados-en-servidores-ftp"&gt;
Comandos avanzados en servidores FTP
&lt;a href="#comandos-avanzados-en-servidores-ftp" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Antes de empezar a trabajar los comandos que sirven para conectarse, descargar y subir archivos a un servidor FTP entre otras muchas acciones. Vamos a tener claros algunos conceptos. En primer lugar debes saber que los servidores FTP trabajan por defecto en el puerto 21. Esto es, cuando aprendamos hacer escáners en la red, si detectamos que una máquina tiene el puerto 21 abierto con mucha probabilidad se tratará de un servidor FTP. Y digo con mucha probabilidad puesto que el puerto 21 es el puerto por defecto, el puerto estándar, pero esto se puede cambiar y es una medida de seguridad que emplean muchos administradores de sistemas para esconder sus servidores FTP. No obstante también puede ser que estemos conectando a servidores falsos, (honeypots) que son servidores destinados a engañar a las personas que intentan ingresar sin permisos creyendose &amp;ldquo;hackers&amp;rdquo; o salidos de alguna serie y hacerles perder el tiempo intentando conectar a un servidor que en realidad está vacio y solo emula un servidor FTP.&lt;/p&gt;
&lt;p&gt;Antes que nada recomiendo utilizar siempre man para poder ver la especificacion para lo cual les dejo el &lt;a href="https://patojad.com.ar/post/2019/01/man-tu-manual-para-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
link de la publicacion
&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;man ftp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Conexión al servidor:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp 192.168.0.77
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-1.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Consultar los comandos ftp disponibles&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; ?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Consultar que hace un comando en concreto&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; ? Nombre del comandos
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-2.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ver listar los ficheros y directorios&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; dir
ftp&amp;gt; ls
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-3.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Entrar a un subdirectorio&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; cd directorio
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Volver al directorio padre&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; cd ..
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descargar ficheros del servidores&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; get fichero
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-4.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Los ficheros se guardan en la ubicación local en la que nos encontremos.
Descargar varios ficheros a la vez del servidores (aquí entran en juego los comodines del shell de Linux)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt;mget ficheros
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-5.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-7.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ver donde estamos en nuestra maquina local&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; lcd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-8.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Movernos por los directorios locales&lt;/p&gt;
&lt;p&gt;ftp&amp;gt; lcd directorio&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-9.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Cerrar sesión FTP&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; bye
ftp&amp;gt; quit
ftp&amp;gt; exit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para los siguientes comandos necesitamos permisos de propietario por lo que nos identificamos como tal (también podemos usar el comando user).&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-10.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Borrar fichero&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; delete fichero
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-11.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Crear directorios&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; mkdir nombreDirectorio
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-12.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Borrar directorio&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; rmdir nombreDirectorio
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-13.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Subir fichero&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; put fichero
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-15.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Subir multiples ficheros&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; mput ficheros
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-16.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Borrar múltiples archivos&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ftp&amp;gt; mdelete ficheros
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorroblesweb.es/wp-content/uploads/2013/11/Comandos-ftp-17.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>Servidor FTP qué es, instalando nuestro propio servidor</title><link>https://patojad.com.ar/post/2020/02/servidor-ftp-qu%C3%A9-es-instalando-nuestro-propio-servidor/</link><pubDate>Tue, 04 Feb 2020 09:10:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/02/servidor-ftp-qu%C3%A9-es-instalando-nuestro-propio-servidor/</guid><description>&lt;p&gt;Los servidores FTP son uno de los tipos de servidores mas comunes intercambiar archivos entre dos ordenadores. Si eres webmaster, o tienes en mente crear una web en el futuro casi con total probabilidad tendrás que usar uno de ellos para subir los archivos a tu sitio web.&lt;/p&gt;
&lt;p&gt;FTP como tal es un protocolo de intercambio de información, pero comunmente llamamos servidores FTP a aquellos que tilizan dicho protocolo para hacer el intercambio de archivos. Estos servidores en su inicio no utilizaban ningún tipo de cifrado con la consecuencia de que cuando nos logeamos en un servidor de este tipo nuestros datos (usuario y contraseña) viajan por la red en texto plano y son legibles por cualquiera que sepa cómo interceptar la conexión.&lt;/p&gt;
&lt;p&gt;Actualmente conviven tanto el protocolo FTP como el protocolo SFTP que es igual pero utillizando cifado asimétrico, lo cual nos hace ganar y mucho en seguridad, aunque no nos garantiza la protección total frente a ataques.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalar-nuestro-propio-servidor-ftp"&gt;
Instalar nuestro propio servidor FTP
&lt;a href="#instalar-nuestro-propio-servidor-ftp" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En nuestro proyecto primará siempre la práctica frente a la teoría, así que nada mejor para ver cómo funciona un servidor FTP que instalando nostros mismos uno en local y juando un poco con el. Tenemos tanto servidores de pago como servidores ftp gratis y nosotros siempre os vamos a mostrar herramientas gratuitas frente a herramientas privadas. Así que vamos a ellos.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="paso-1--instalar-vsftpd"&gt;
Paso 1 – Instalar Vsftpd
&lt;a href="#paso-1--instalar-vsftpd" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Siempre antes de comenzar cualquier tipo de instalacion es importante tener actualizado el sistema para eso basta con un simple:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(En este caso vamos a dar los comandos para debian/ubuntu pero los paquetes seran los mismos para todas las distribuciones) Cuando termines con esto, instala el daemon vsftpd usando el siguiente comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install vsftpd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una vez completada la instalación, haz una copia de seguridad del archivo original para que podamos comenzar nuestro trabajo con un archivo de configuración en blanco:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora estamos listos para dar el siguiente paso y configurar el firewall.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="paso-2--permitir-el-tráfico-ftp-desde-el-firewall"&gt;
Paso 2 – Permitir el tráfico FTP desde el firewall
&lt;a href="#paso-2--permitir-el-tr%c3%a1fico-ftp-desde-el-firewall" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Para permitir que el servidor FTP de nuestro linux se comunique con el mundo exterior, tiene que abrirse paso a través del firewall(nosotros veremos los firewall de la maquina, los del router los puede ver cada uno por su lado, en caso de dudas estamos en el grupo de Telegram). Primero veamos si el firewall está habilitado en la máquina o no. Ejecuta el siguiente comando para verificar el estado:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ufw status
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si ves el siguiente mensaje:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ufw: command not found
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Significa que el firewall no está instalado y puedes continuar con el siguiente paso.&lt;/p&gt;
&lt;p&gt;Sin embargo, si el resultado muestra algunas reglas definidas o un mensaje de que el estado del firewall es activo, deberás verificar si el tráfico FTP funcionará. Avancemos y abramos los puertos 20 y 21 para el tráfico FTP; los puertos 40000-50000 serán los reservados para el rango de puertos pasivos que eventualmente se establecerán en el archivo de configuración y el puerto 990 se usará cuando se habilite el TLS. Ejecuta los siguientes comandos para hacerlo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora veamos el estado de nuevo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ufw status
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El resultado debería ser algo así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Status: active
To Action From
-- ------ ----
990/tcp ALLOW Anywhere
20/tcp ALLOW Anywhere
21/tcp ALLOW Anywhere
40000:50000/tcp ALLOW Anywhere
20/tcp (v6) ALLOW Anywhere (v6)
21/tcp (v6) ALLOW Anywhere (v6)
990/tcp (v6) ALLOW Anywhere (v6)
40000:50000/tcp (v6) ALLOW Anywhere (v6)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora que tenemos todos los puertos necesarios abiertos y disponibles para nosotros, podemos pasar al siguiente paso.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="paso-3--crear-el-directorio-de-usuarios"&gt;
Paso 3 – Crear el directorio de usuarios
&lt;a href="#paso-3--crear-el-directorio-de-usuarios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;En el tercer paso para crear un servidor FTP, tendremos que seleccionar el usuario que va a utilizar el acceso FTP. Solo para mostrar cómo se hace, agregaremos un nuevo usuario. Para crearlo, usa el siguiente comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo adduser pato
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cuando el sistema te pregunte, ingresa una contraseña para el usuario y completa todos los demás detalles. Lo ideal es que el FTP se restrinja a un directorio específico por motivos de seguridad. Vsftpd usa jaulas chroot para lograr esto. Con chroot habilitado, un usuario local está restringido a su directorio de inicio (por defecto). Sin embargo, es posible que debido a la seguridad de vsftpd, un usuario no pueda escribir en el directorio. No eliminaremos los privilegios de escritura de la carpeta de inicio; en su lugar, crearemos un directorio ftp que actuará como chroot junto con un directorio de archivos modificables que será responsable de mantener los archivos pertinentes. Usa el siguiente comando para crear la carpeta FTP:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo mkdir /home/pato/ftp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Establece la propiedad usando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo chown nobody:nogroup /home/pato/ftp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finalmente, elimina los permisos de escritura:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo chmod a-w /home/pato/ftp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, usa el siguiente comando para verificar los permisos:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ls -la /home/pato/ftp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El resultado debería ser algo así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;total 8
dr-xr-xr-x 2 nobody nogroup 4096 Jun 29 11:32 .
drwxr-xr-x 3 pato pato 4096 Jun 29 11:32 ..
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como paso siguiente, crearemos el directorio contenedor de archivos y asignaremos la propiedad:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo mkdir /home/pato/ftp/files
sudo chown pato:pato /home/pato/ftp/files
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finalmente, agrega un archivo de prueba al directorio el cual se usará cuando probemos todo más adelante:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &amp;quot;vsftpd sample file&amp;quot; | sudo tee /home/pato/ftp/files/sample.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="paso-4--configurar-vsftpd"&gt;
Paso 4 – Configurar vsftpd
&lt;a href="#paso-4--configurar-vsftpd" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;El siguiente paso en nuestra apuesta por configurar un servidor FTP, es configurar vsftpd y nuestro acceso FTP. En este tutorial, permitiremos que un solo usuario se conecte con FTP utilizando una cuenta shell local. Las dos configuraciones clave requeridas para esto ya están establecidas en el archivo de configuración (vsftpd.conf). En primer lugar, verifica que el archivo de configuración tenga una configuración que coincida con las mencionadas a continuación utilizando el comando nano (se puede usar vi o vim tambien):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/vsftpd.conf
. . .
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
. . .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En el mismo archivo, procederemos a eliminar # y a habilitar el write_enable:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;. . .
write_enable=YES
. . .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Chroot tampoco se comentará para garantizar que el usuario conectado a través de FTP solo acceda a los archivos dentro del directorio permitido:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;. . .
chroot_local_user=YES
. . .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;También se deben agregar manualmente algunos valores nuevos. Simplemente puedes pegarlos en la parte inferior del archivo. En primer lugar, se agregará un user_sub_token en la ruta del directorio local_root. Esto permitirá que la configuración funcione con el usuario actual y con cualquier otro usuario que se agregue posteriormente:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;user_sub_token=$USER
local_root=/home/$USER/ftp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para garantizar que haya una cantidad considerable de conexiones disponibles, limitaremos la cantidad de puertos utilizados en el archivo de configuración:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pasv_min_port = 40000
pasv_max_port = 50000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En este tutorial, planeamos permitir el acceso caso por caso, así que ajustemos la configuración de forma tal que el acceso solo se otorgue a los usuarios que se hayan agregado explícitamente a una lista:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El flag userlist_deny es el responsable de alternar la lógica; cuando se establece en «NO», solo se permitirá el acceso a los usuarios especificados en la lista. Una vez hecho esto, haz clic en CTRL+X y confirma los cambios del archivo.&lt;/p&gt;
&lt;p&gt;Por último, procederemos con la creación y adición de nuestro usuario al archivo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &amp;quot;pato&amp;quot; | sudo tee -a /etc/vsftpd.userlist
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verifica que el usuario esté realmente activo ejecutando el siguiente comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat /etc/vsftpd.userlist
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El resultado debe ser «pato». Reinicia el daemon utilizando el siguiente comando para cargar los cambios de configuración:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl restart vsftpd
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="paso-5--hacer-que-el-ftp-sea-seguro"&gt;
Paso 5 – Hacer que el FTP sea seguro
&lt;a href="#paso-5--hacer-que-el-ftp-sea-seguro" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Por defecto, FTP no hace ninguna encriptación de datos, por eso utilizaremos TTL/SSL para garantizar la seguridad. En primer lugar, debemos crear el certificado SSL y usarlo para proteger el servidor FTP de Ubuntu. Para comenzar, usa el siguiente comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El flag -days hace que el certificado sea válido por un año y hemos incluido una clave privada RSA de 2048 bits en el mismo comando. Una vez sean solicitados, ingresa los datos personales correspondientes en el campo provisto.&lt;/p&gt;
&lt;p&gt;Cuando termines de crear el certificado, abre nuevamente el archivo de configuración:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/vsftpd.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El final del archivo debe contener dos líneas que comiencen con «_rsa«. Comenta ambas líneas así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En lugar de eso, apuntemos el archivo de configuración al certificado que acabamos de crear. Agrega las siguientes líneas:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora habilitaremos SSL y nos aseguraremos de que solo los clientes que tengan SSL habilitados nos puedan contactar. Cambia el valor de ssl_enable a YES:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssl_enable=YES
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora agrega las siguientes líneas para mayor protección: (Esto no permitirá conexiones anónimas a través de SSL)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Configura el servidor para usar TLS usando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aquí agregaremos 2 opciones más. En primer lugar, no será necesario reutilizar SSL porque puede ocasionar que muchos clientes de FTP se averíen. En segundo lugar, utilizaremos suites de encriptación de alto cifrado, lo que significa que las longitudes de claves son iguales o superiores a 128 bits.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;require_ssl_reuse=NO
ssl_ciphers=HIGH
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Comencemos una vez más para aplicar las nuevas configuraciones:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl restart vsftpd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;¡Buen trabajo! Has configurado el servidor FTP en tu Linux para que funcione con el protocolo SSL/TLS. Cualquier duda o inconveniente nos vemos en el grupo de Telegram.&lt;/p&gt;</description></item><item><title>¿Qué hay detrás de una IP?</title><link>https://patojad.com.ar/post/2020/02/qu%C3%A9-hay-detr%C3%A1s-de-una-ip/</link><pubDate>Mon, 03 Feb 2020 09:37:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/02/qu%C3%A9-hay-detr%C3%A1s-de-una-ip/</guid><description>&lt;p&gt;Una dirección IP no es algo que se asigne de forma aleatoria sin respetar ningún principio. Conociendo la dirección IP de alguien tendremos a nuestra disposición una cantidad de datos que debemos conocer a la hora de saber ante qué situación nos encontramos. Por la misma razón es necesario comprender como se estructuran para poder crear nosotros entornos de prueba que represeten la realidad lo mas fiel posible.&lt;/p&gt;
&lt;p&gt;Ya avanzamos en la publicación anterior una &lt;a href="https://patojad.com.ar/post/2020/01/direcciones-ips-nuestra-huella-en-la-red/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
introducción a lo que es una ip
&lt;/a&gt;. Hoy veremos mas a fondo las partes en las que se dividen. Cojamos por ejempo la siguiente dirección IP: 192.168.5.1, es una IP privada, (luego veremos porqué) internamente la IP, todas las direcciones IPs tiene una parte de red y otra parte de host, se represeta así:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://cursohacker.es/sites/default/files/styles/large/public/images/20130912140151.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En donde 192 es el primer octeto, 168 el segundo, 5 es el tercero y 1 es el cuarto. Saber esto es necesario para comprender que las direcciones IPs son finitas, y van desde:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;00000000.00000000.00000000.00000000 -&amp;gt; 0.0.0.0 hasta:
11111111.11111111.11111111.11111111 -&amp;gt; 255.255.255.255
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No hay mas IPs, la tipología de red en IPv4 que es la que utilizamos en la actualidad no permite mas direcciones IPs. Esto nos da una suma de 4.228.250.625 direcciones IPs en el mundo. Así que si sabemos que cada dispositivo (pc, tablet, movil con conexión&amp;hellip;) tienen una dirección IP nos damos cuenta de que se nos quedan cortas para cubrir a toda la población mundial. Así que para ello se han estructurado las direcciones IPs de forma que algunas serán públicas y otras privadas, con la característica que las privadas son comunes para cada red local (la red interna de tu casa es una red local).&lt;/p&gt;
&lt;p&gt;Las direcciones IP se dividen en clases para definir las redes de tamaño pequeño, mediano y grande. Las direcciones Clase A se asignan a las redes de mayor tamaño. Las
direcciones Clase B se utilizan para las redes de tamaño medio y las de Clase C para redes pequeñas. Para conseguir esta división se utiliza el concepto Máscara de red.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="la-máscara-de-red-y-su-aplicación-en-redes"&gt;
La máscara de red y su aplicación en redes
&lt;a href="#la-m%c3%a1scara-de-red-y-su-aplicaci%c3%b3n-en-redes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Una máscara de red es un filtro que se utiliza para ver si el equipo al que queremos conectarnos está en nuestra misma red o en otra. A nivel técnico saber si un equipo está en nuestra red o no tiene múltiples características, los ataques a un equipo que está en tu misma red son mucho mas efectivos que aquellos que están fuera de tu red, la primera razón es que si estamos en la misma red ya nos hemos saltado primer elemento que hace de frontera entre la red del equipo al que queremos atacar y la nuestra. Las máscaras de red principales son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Para redes de clase C: 255.255.255.0&lt;/li&gt;
&lt;li&gt;Para redes de clase B: 255.255.0.0&lt;/li&gt;
&lt;li&gt;Para redes de clase A: 255.0.0.0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo que hace una máscara de red es diferencial que parte de la dirección IP indica la red y que parte de la dirección IP hace referencia a la máquina en particular. Vamos a analizar esto con un ejemplo práctico para que se vea mas claro. Supongamos que tenemos la siguiente dirección IP 192.168.100.250 con la máscara de red 255.255.255.0 Ya vemos que es una clase C por la máscara de red y mas cosas que veremos mas adelante. Ponemos juntas tanto la IP como su máscara:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;192.168.100.250 En binario-&amp;gt; 11000000.10101000.01100100.11111010
255.255.255.000 En binario-&amp;gt; 11111111.11111111.11111111.00000000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se interpreta lo siguiente: la parte de la red la forma aquella parte de la dirección IP que en su máscara de red está formada por unos (1). En nuestro caso: 192.168.100 y la parte que identifica el ordenador en particular dentro de la red identifica la parte formada por ceros en la máscara de red. En nuestro caso 250. Aplicando lo anterior deducirmos que en nuestra red estarán las IPs que van desdes 192.168.100.0&amp;hellip;&amp;hellip;hasta &amp;hellip;..192.168.100.255. Es decir en nuestra red solo podrán existir 254 ordenadores, si queremos tener más tendríamos que plantear utilizar una red de clase B o utilizar varias de clase C. He dicho 254 ordenadores puesto que en cada red la primera ip (en nuestro ejemplo 192.168.100.0) se utiliza como dirección de red y no puede ser asignada a nigún equipo, del mismo modo la última dirección, (en nuestro ejemplo 192.168.100.255) se utiliza como dirección de &lt;strong&gt;broadcast o dirección de difusión&lt;/strong&gt;. Que quiere decir que todo lo que enviemos a esa IP el router o switch que gestiona la red lo reenviará a todos los ordenadores que pertenezcan a la red. Así que si tenemos 256 Ips y 2 están reservadas nos quedan 254 disponibles.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-identificar-de-forma-rápida-la-clase-a-la-que-pertenece-una-ip"&gt;
¿Cómo identificar de forma rápida la clase a la que pertenece una IP?
&lt;a href="#c%c3%b3mo-identificar-de-forma-r%c3%a1pida-la-clase-a-la-que-pertenece-una-ip" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Nosotros podemos saber a que clase de red pertenece una IP mirando su primer octeto y teniendo en mente la siguiente tabla:&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1" style="text-align: left"&gt;Clase de dirección&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Intervalo de primer octeto&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;Cantidad de hosts permitidos&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: left"&gt;A&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;0-127*&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;16.777.216&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: left"&gt;B&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;128-191&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;65.535&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1" style="text-align: left"&gt;C&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;192-223&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;254&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;Toda dirección comprendida entre 0.0.0.0 y 127.255.255.255. es una dirección IP de una red de clase A (a excepción de 127.0.0.1 que es una IP de pruebas tambien conocido como localhost, que todo ordenador se asigna a si mismo).
Toda direccion comprendida entre 128.0.0.0 y 191.255.255.255 es una dirección IP de clase B
Toda dirección comprendida entre 192.0.0.0 y 192.255.255.255 es una dirección IP de clase C&lt;/p&gt;
&lt;p&gt;Por lo que si vosotros pedís la IP a alguien y os da una del tipo 192.168.3.25 ya sabeis que os está dando una IP de su red clase C privada y que si no estáis en su misma red no os valdrá para nada, en cambio si os da una IP del tipo: 80.25.68.8 veís que es una IP de clase A, llamada también IP pública con lo si os está dando acceso a su red desde fuera. En el futuro aprenderemos a ver cómo saltamos de una red a otra cuando nos queremos conectar con un equipo de alguien.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="información-privada-que-podemos-obtener-de-una-dirección-ip"&gt;
Información privada que podemos obtener de una dirección IP
&lt;a href="#informaci%c3%b3n-privada-que-podemos-obtener-de-una-direcci%c3%b3n-ip" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En este punto me encuentro en dudas de si efectivamente mostrar o no que podemos obtener y para que, creo que la gente que realiza esta clase de busquedas en internet no suele tener buenas intenciones y desde aqui es poco lo que puedo controlar. Sin embargo lo ideal es que conozcan lo minimo que se puede obtener sin dejar ningun link en referencia.&lt;/p&gt;
&lt;p&gt;Con una ip y algun sitio web podremos obtener facilmente la geolocalizacion (no especifica) de la IP, por ejemplo nos permite determinar si la persona es efectivamente quien dice ser, y el provedor de internet. Lo cual puede ser muy util con fines educativos&amp;hellip;&lt;/p&gt;
&lt;p&gt;De mas esta decir que no procedere a dejar mas informacion pero todo lo podemos hablar y aprender juntos en el grupo de telegram&amp;hellip;&lt;/p&gt;</description></item><item><title>Direcciones IPs, Nuestra huella en la red</title><link>https://patojad.com.ar/post/2020/01/direcciones-ips-nuestra-huella-en-la-red/</link><pubDate>Wed, 29 Jan 2020 08:38:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/01/direcciones-ips-nuestra-huella-en-la-red/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-una-dirección-ip"&gt;
¿Qué es una dirección IP?
&lt;a href="#qu%c3%a9-es-una-direcci%c3%b3n-ip" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La dirección IP es como la direccion de la casa de una persona (o como el numero de telefono). Para poder comunicarse entre dos equipos es necesario que entre ellos se conozcan la IP. Por lo cual podemos deducir que si estan leyendo esto su maquina conoce de alguna forma (que ondaremos en otra oportunidad) la ip de donde se encuentra alojado este &lt;strong&gt;&amp;ldquo;hermoso&amp;rdquo;&lt;/strong&gt; blog. Bien, veamos entonces, que aspecto tiene una dirección IP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ejemplo IP de red local (LAN, Clase C) o IP privada: 192.168.0.1&lt;/li&gt;
&lt;li&gt;Ejemplo IP de red internet (Clase A) o IP pública: 80.58.0.33&lt;/li&gt;
&lt;li&gt;IP local (localhost), esta IP es común para todos los equipos: 127.0.0.1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para poder ver la ip de nuestra PC podemos hacerlo de la siguiente forma. Abrimos la terminal y ejecutamos el siguiente comando:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ifconfig
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;dando como repuesta algo similar a lo siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;enp0s31f6: flags=4099&amp;lt;UP,BROADCAST,MULTICAST&amp;gt; mtu 1500
ether d4:81:d7:5d:11:ad txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16 memory 0xef200000-ef220000
eth0: flags=4163&amp;lt;UP,BROADCAST,RUNNING,MULTICAST&amp;gt; mtu 1500
inet 172.20.10.4 netmask 255.255.255.240 broadcast 172.20.10.15
inet6 fe80::e106:f57f:60b7:7236 prefixlen 64 scopeid 0x20&amp;lt;link&amp;gt;
ether 0a:74:02:05:d6:66 txqueuelen 1000 (Ethernet)
RX packets 73535 bytes 82742885 (78.9 MiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 49526 bytes 6909629 (6.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73&amp;lt;UP,LOOPBACK,RUNNING&amp;gt; mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10&amp;lt;host&amp;gt;
loop txqueuelen 1000 (Local Loopback)
RX packets 2644 bytes 208896 (204.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2644 bytes 208896 (204.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlp1s0: flags=4099&amp;lt;UP,BROADCAST,MULTICAST&amp;gt; mtu 1500
ether 34:f3:9a:d2:90:15 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/wxWT9yFW/Deepin-Screenshot-20200129092416.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Muchas distribuciones no traen instalado ifconfig por defecto (Gracias a Riky por remarcarlo) en ese caso tenemos dos opciones, instalarlo o usar ip la cua les su remplazo. Para instalarlo basta con instalar el paquete net-tools:&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ubuntu-debian-y-derivados"&gt;
Ubuntu, Debian y Derivados
&lt;a href="#ubuntu-debian-y-derivados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;sudo apt install net-tools
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arch-y-derivados"&gt;
Arch y Derivados
&lt;a href="#arch-y-derivados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;sudo pacman -S net-tools
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="gentoo-y-derivados"&gt;
Gentoo y Derivados
&lt;a href="#gentoo-y-derivados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;sudo emerge -s net-tools
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;y es el mismo paquete para todas las distribuciones, en caso de no tenerlo podemos ir a la segunda opcion (la mas recomendable) que es usar ip de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip address
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;dando como repuesta algo similar a lo siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s31f6: &amp;lt;NO-CARRIER,BROADCAST,MULTICAST,UP&amp;gt; mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether d4:81:d7:5d:11:ad brd ff:ff:ff:ff:ff:ff
3: wlp1s0: &amp;lt;NO-CARRIER,BROADCAST,MULTICAST,UP&amp;gt; mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 34:f3:9a:d2:90:15 brd ff:ff:ff:ff:ff:ff
5: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 0a:74:02:05:d6:66 brd ff:ff:ff:ff:ff:ff
inet 172.20.10.4/28 brd 172.20.10.15 scope global noprefixroute dynamic eth0
valid_lft 80320sec preferred_lft 80320sec
inet6 fe80::e106:f57f:60b7:7236/64 scope link noprefixroute
valid_lft forever preferred_lft forever
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/bJrYnqw0/Deepin-Screenshot-20200129100142.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En mi caso me encuentro conectado por Ethernet tengo la direccion IPv4 172.20.10.4 y la IPv6 fe80::e106:f57f:60b7:7236. En este caso la IP es privada por lo cual puedo tener otros dispositivos con la IP 172.20.10.X que se encuentren dentro de mi red. Sin embargo, nuestra ip publica es otra es decir que para internet esta IP no es validad dado que solo me identifica dentro de mi red local.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-se-convierte-mi-ip-privada-en-una-ip-pública"&gt;
¿Cómo se convierte mi ip privada en una ip pública?
&lt;a href="#c%c3%b3mo-se-convierte-mi-ip-privada-en-una-ip-p%c3%bablica" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/B6pZLX3n/20130712015313.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Supongamos que nuestro ordenador es el que tiene la IP 192.168.1.4 y quiere ver la web que tiene el ordenador 66.25.5.66 Entonces se producen los siguientes pasos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Nuestro PC (192.168.1.4) Contacta con su router, que es el elemento central que tiene 2 direcciones ips (192.168.1.1 y 80.52.14.5)&lt;/li&gt;
&lt;li&gt;Se crea un canal de conexión 192.168.1.4 &amp;lt;&amp;mdash;-&amp;gt; 192.168.1.1 (PC &amp;lt;&amp;mdash;-&amp;gt; Router)&lt;/li&gt;
&lt;li&gt;El router ahora conecta con el servidor web (66.25.5.66)&lt;/li&gt;
&lt;li&gt;Se crea un canal de conexión 80.52.14.5 &amp;mdash;&amp;ndash;&amp;gt; 66.25.5.66 (Router &amp;lt;&amp;mdash;&amp;ndash;&amp;gt; Servidor)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Estos pasos para el usuario son transparentes, pero ocurren.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="pregunta"&gt;
¡PREGUNTA!
&lt;a href="#pregunta" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Ahora bien, para cerrar la publicación dejo abierto un tema. Fijaros que siempre que salimos a internet lo que hacemos es pedirle al router que salga por nosotros y que nos mantenga &amp;ldquo;seguros&amp;rdquo; detrás de el, esto significa una cosa, El servidor web, que en nuestro ejemplo tiene la dirección 66.25.5.66 no tiene forma de saber si el que ha pedido la web ha sido 192.168.1.5 o 192.168.1.x, es decir en internet nosotros somos 80.52.14.5 lo que hay &amp;ldquo;por debajo&amp;rdquo; de eso solo lo sabemos nosotros. Nuestra &amp;ldquo;direccion&amp;rdquo; o &amp;ldquo;numero telefonico&amp;rdquo; es 80.52.14.5. Esta IP es la que está asociada a la persona que ha contratado la linea, y de producirse algún delito esta persona sería la responsable. Así pues, &lt;strong&gt;¿Tienes tu wifi abierto? Estás asumiento TODA la responsabililidad de lo que haga cualquiera que se conecte a tu red.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Contanos que opinas!!&lt;/p&gt;</description></item><item><title>Liquorix ¿Que es? ¿Como lo instalo?</title><link>https://patojad.com.ar/post/2020/01/liquorix-que-es-como-lo-instalo/</link><pubDate>Tue, 28 Jan 2020 08:28:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/01/liquorix-que-es-como-lo-instalo/</guid><description>&lt;p&gt;Liquorixes un Kernel que se encuentra modificado (a nivel configuraciones) que nos permite obtener un mejor rendimiento de nuestra dristribucion, suele tener como costo un pequeño aumento en el consumo de energia (en equipos desktops o conectados a la corriente no nos daremos cuenta de esto) que puede afectar a los equipos que dispongan de poca autonomia.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="características-principales"&gt;
CARACTERÍSTICAS PRINCIPALES
&lt;a href="#caracter%c3%adsticas-principales" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Sintoniza el kernel para la capacidad de respuesta a costa del rendimiento y el uso de energía.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;log&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--- Virtual Memory Subsystem ---------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Mem dirty before bg writeback..: 10 % -&amp;gt; 20 %
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Mem dirty before sync writeback: 20 % -&amp;gt; 50 %
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--- Block Layer ----------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Block Layer Queue Depth........: 128 -&amp;gt; 512
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Default MQ scheduler......: mq-deadline -&amp;gt; bfq
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--- CPU Scheduler (CFS) --------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Scheduling latency.............: 6 -&amp;gt; 3 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Minimal granularity............: 0.75 -&amp;gt; 0.3 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Wakeup granularity.............: 1 -&amp;gt; 0.5 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CPU migration cost.............: 0.5 -&amp;gt; 0.25 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Bandwidth slice size...........: 5 -&amp;gt; 3 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--- CPU Scheduler (MuQSS) ------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Scheduling interval............: 6 -&amp;gt; 2 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ISO task max realtime use......: 70 % -&amp;gt; 25 %&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Programador de proceso justo para juegos, multimedia y cargas en tiempo real.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tiempos de espera de alta resolución para la programación precisa de tareas de baja fluctuación. IRQs y RCU roscados para reducir la fluctuación de fase causada por tics periódicos a 250Hz.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implementación de RCU para sistemas en tiempo real.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La preferencia de kernel más agresiva antes de requerir parches en tiempo real. Garantiza un sistema receptivo en escenarios de carga de trabajo mixta de alta intensidad.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Programador de disco adecuado optimizado para uso de escritorio, alto rendimiento/baja latencia.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Control de congestión rápido, maximiza el rendimiento, garantizando velocidades más altas que Cubic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las compilaciones binarias se producen para Debian estable, de prueba e inestable. Las compilaciones de Ubuntu están disponibles en el PPA Liquorix el mismo día a las pocas horas de que se publiquen las versiones de Debian.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configuración de estilo de distribución adecuada que admite la selección más amplia de hardware. Opciones de paravirtualización habilitadas para reducir la sobrecarga en la virtualización.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Número mínimo de opciones de depuración habilitadas para aumentar el rendimiento del kernel.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalacion"&gt;
Instalacion
&lt;a href="#instalacion" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En esta oportunidad me encuentro usando Deepin como distro base en mi ambito laboral, por lo cual decidi instalarle Liquorix como kernel, para esto mismo genero el tutorial con el proceso de instalacion.&lt;/p&gt;
&lt;p&gt;Lo primero que debemos hacer es agregar los repositorios de Liquorix a nuestra distro, para eso vamos a usar lo siguiente&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="debian"&gt;
Debian
&lt;a href="#debian" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;codename&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;find /etc/apt -type f -name &lt;span class="s1"&gt;&amp;#39;*.list&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; xargs grep -E &lt;span class="s1"&gt;&amp;#39;^deb&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; awk &lt;span class="s1"&gt;&amp;#39;{print $3}&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep -Eo &lt;span class="s1"&gt;&amp;#39;^[a-z]+&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sort &lt;span class="p"&gt;|&lt;/span&gt; uniq -c &lt;span class="p"&gt;|&lt;/span&gt; sort -n &lt;span class="p"&gt;|&lt;/span&gt; tail -n1 &lt;span class="p"&gt;|&lt;/span&gt; grep -Eo &lt;span class="s1"&gt;&amp;#39;[a-z]+$&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt-get update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt-get install apt-transport-https &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; -e &lt;span class="s2"&gt;&amp;#34;deb http://liquorix.net/debian &lt;/span&gt;&lt;span class="nv"&gt;$codename&lt;/span&gt;&lt;span class="s2"&gt; main\ndeb-src http://liquorix.net/debian &lt;/span&gt;&lt;span class="nv"&gt;$codename&lt;/span&gt;&lt;span class="s2"&gt; main\n\n# Mirrors:\n#\n# Unit193 - France\n# deb http://mirror.unit193.net/liquorix &lt;/span&gt;&lt;span class="nv"&gt;$codename&lt;/span&gt;&lt;span class="s2"&gt; main\n# deb-src http://mirror.unit193.net/liquorix &lt;/span&gt;&lt;span class="nv"&gt;$codename&lt;/span&gt;&lt;span class="s2"&gt; main&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/liquorix.list &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; curl https://liquorix.net/linux-liquorix.pub &lt;span class="p"&gt;|&lt;/span&gt; sudo apt-key add - &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt-get update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="deepin"&gt;
Deepin
&lt;a href="#deepin" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;codename&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;stable&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt-get update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt-get install apt-transport-https &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; -e &lt;span class="s2"&gt;&amp;#34;deb http://liquorix.net/debian &lt;/span&gt;&lt;span class="nv"&gt;$codename&lt;/span&gt;&lt;span class="s2"&gt; main\ndeb-src http://liquorix.net/debian &lt;/span&gt;&lt;span class="nv"&gt;$codename&lt;/span&gt;&lt;span class="s2"&gt; main\n\n# Mirrors:\n#\n# Unit193 - France\n# deb http://mirror.unit193.net/liquorix &lt;/span&gt;&lt;span class="nv"&gt;$codename&lt;/span&gt;&lt;span class="s2"&gt; main\n# deb-src http://mirror.unit193.net/liquorix &lt;/span&gt;&lt;span class="nv"&gt;$codename&lt;/span&gt;&lt;span class="s2"&gt; main&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/liquorix.list &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; curl https://liquorix.net/linux-liquorix.pub &lt;span class="p"&gt;|&lt;/span&gt; sudo apt-key add - &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt-get update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ubuntu"&gt;
Ubuntu
&lt;a href="#ubuntu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo add-apt-repository ppa:damentz/liquorix &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt-get update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Una ves que los agregamos y nos aseguramos de tener la distribucion correctamente actualizada procedemos a instalar esta version del kernel
(Les recomiendo guardar bien el nombre de los binarios por si hay errores poder volverlo atras con facilidad desde las opciones avanzadas)&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="debian-deepin-y-ubuntu"&gt;
Debian, Deepin y Ubuntu
&lt;a href="#debian-deepin-y-ubuntu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;bash&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install linux-image-liquorix-amd64 linux-headers-liquorix-amd64&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Una ves instalado correctamente solo reiniciamos y ya tenemos el nuevo kernel funcionando&lt;/p&gt;</description></item><item><title>Yo también use IPhone</title><link>https://patojad.com.ar/post/2020/01/yo-tambi%C3%A9n-use-iphone/</link><pubDate>Tue, 21 Jan 2020 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/01/yo-tambi%C3%A9n-use-iphone/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="historia"&gt;
Historia
&lt;a href="#historia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;![](&lt;a href="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fuy.emedemujer.com%2Fwp-content%2Fuploads%2Fsites%2F4%2F2018%2F08%2Fauto1-770x537.jpg&amp;amp;f=1&amp;amp;nofb=1%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fuy.emedemujer.com%2Fwp-content%2Fuploads%2Fsites%2F4%2F2018%2F08%2Fauto1-770x537.jpg&amp;f=1&amp;nofb=1"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Como muchos saben estos días estuve de viaje, eso explica la ausencia en el blog. Y algo muy cómico que me paso previo a salir de viaje fue que mi móvil se rompió, más precisamente su pin de carga.&lt;/p&gt;
&lt;p&gt;Todos saben qué hace mucho no me compro un celular, desde que trabajo en telecomunicaciones la empresa me lo provee y nunca más tuve un dispositivo que valore (El que me toco recientemente es un Samsung j7 creo) y suelen ser de marcas con las cuales no estoy de acuerdo, ejemplo Samsung.&lt;/p&gt;
&lt;p&gt;Sin embargo, en este caso tuve que pedir prestado, o mangear como se dice por acá, a un familiar. El cual me presto momentáneamente un IPhone 5s, oficialmente el primer dispositivo de Apple que tengo la oportunidad de probar.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="configuración-inicial"&gt;
Configuración Inicial
&lt;a href="#configuraci%c3%b3n-inicial" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;![](&lt;a href="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse2.mm.bing.net%2Fth%3Fid%3DOIP.XMrr8_s7-Zt4vlqXAWxaqgAAAA%26pid%3DApi&amp;amp;f=1%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse2.mm.bing.net%2Fth%3Fid%3DOIP.XMrr8_s7-Zt4vlqXAWxaqgAAAA%26pid%3DApi&amp;f=1"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;La configuración me toco hacerla en el auto de camino a mi primer destino, como tenía muchas horas para manejar y claramente no se puede utilizar el móvil mientras uno maneja, esta parte la realizo mi novia.
La configuración es muy al estilo siguiente siguiente como siempre, sin embargo, me pareció pésimo que te permita saltar la cuenta icloud y al siguiente paso te obligue a crearla (Creo que la palabra saltar está de más porque no saltea nada) sin embargo hasta ahí todo más que bien.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="inicio"&gt;
Inicio
&lt;a href="#inicio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La instalación de las aplicaciones fue altamente simple, como todo, una cosa que no me pareció buena es que el store te muestre todo y te deje instalar las apps que no corren en tu dispositivo (me paso con call of duty por ejemplo).&lt;/p&gt;
&lt;p&gt;También se me hizo molesto que no me permita elegir descargar con mis datos móviles. Actualizaciones y apps pesadas te obliga a usar wifi y eso me molesta (de mas esta decir que tengo datos ilimitados por lo cual no me molesta gastarlos) pero este dispositivo me quito el poder de elección.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="usabilidad"&gt;
Usabilidad
&lt;a href="#usabilidad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;![](&lt;a href="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse3.mm.bing.net%2Fth%3Fid%3DOIP.ABJPtmHSbJm1mj49YFx0VgHaES%26pid%3DApi&amp;amp;f=1%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse3.mm.bing.net%2Fth%3Fid%3DOIP.ABJPtmHSbJm1mj49YFx0VgHaES%26pid%3DApi&amp;f=1"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;Bueno, en este caso es un tanto difícil, estoy muy acostumbrado a Android lo cual hace que mi experiencia este formada. Sin embargo, es muy simple de usar por una cuestión básica. iOS no te permite hacer nada que él no quiera, por lo cual es todo simple y fácil de aprender dado que son 3 o 4 cosas.&lt;/p&gt;
&lt;p&gt;Amo configurar los dispositivos a mi gusto, pero este caso basto con 5 minutos para recorrer todas las configuraciones. Y el nivel de personalización es Nulo, por lo cual yo me vi obligado a adaptarme a su entorno.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sus-apps"&gt;
Sus Apps
&lt;a href="#sus-apps" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El navegador es un navegador y cumple su función (tampoco indague tanto) lo único que puedo resaltar es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Positivo:&lt;/strong&gt; Su cámara es buena y su app de cámara es muy minimalista, simple y rápida por lo cual es una buena combinación&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Negativo:&lt;/strong&gt; Los mapas son pésimos, es el navegador más patético que vi en mi vida y estimo que lo saben, pero no les importa.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusión"&gt;
Conclusión
&lt;a href="#conclusi%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En lo personal no me compraría nunca un IPhone siento que me aburriría muchísimo. Odio el hecho de no tener un botón para ir atrás y creo que es poco el nivel de innovación que puede tener una app dado que nadie puede hacer más de lo que Apple quiere y eso limita mucho.&lt;/p&gt;</description></item><item><title>Mediastodon</title><link>https://patojad.com.ar/post/2020/01/mediastodon/</link><pubDate>Fri, 03 Jan 2020 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2020/01/mediastodon/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="historia"&gt;
Historia
&lt;a href="#historia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Originalmente Kim escribió esta sencilla aplicación que usa la API de Mastodon para obtener gatitos.&lt;/p&gt;
&lt;p&gt;A partir de ese código creado por Kim, Victorhck ha hecho una pequeña modificación para mostrar capturas de pantalla de GNU/Linux mostrando su mejor composición de fondo de escritorio, iconos, temas, etc&amp;hellip;
Recopila las capturas de pantalla que se comparten en Mastodon con la etiqueta #unixporn (Tal como podemos ver en el inicio de Mediastodon)&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/C58pMRzb/unixporn.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mi-parte-del-trabajo"&gt;
Mi parte del trabajo
&lt;a href="#mi-parte-del-trabajo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Así tal cual dejo el código Victorhck me result muy interesante y lo probé con muchos hashtags. En ese momento me di cuenta que se podría dar un paso más. Gracias a que la gente comparte y suele usar hashtags para todo esto se hizo fácil realizar búsquedas por estos hashs.&lt;/p&gt;
&lt;p&gt;De esta forma podemos usar mastdom como un banco de imágenes compartidas por cada una de las personas. De esta forma podemos visualizar, por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mediastodon.patojad.com.ar/?search=wallpaper" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Wallpaper
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mediastodon.patojad.com.ar/?search=kde" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
KDE
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mediastodon.patojad.com.ar/?search=meme" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Meme
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Y asi podes buscar lo que quieras sin ningun tipo de restriccion en:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mediastodon.patojad.com.ar/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Mediastodon
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>El monopolio de Google vs el Software Libre</title><link>https://patojad.com.ar/post/2019/12/el-monopolio-de-google-vs-el-software-libre/</link><pubDate>Mon, 30 Dec 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/12/el-monopolio-de-google-vs-el-software-libre/</guid><description>&lt;p&gt;Dando vueltas por Reddit encontramos un usuario que escribió sobre este tema que es de mucho interés para todos nosotros, normalmente siempre hablamos de Microsoft pero Google es muy agresivo con su invasión a privacidad y su monopolio.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lo-que-nos-cuenta-yogthos"&gt;
Lo que nos cuenta Yogthos
&lt;a href="#lo-que-nos-cuenta-yogthos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Google tiene un monopolio innegable en la búsqueda de internet y un casi monopolio en el software de navegación web a través de Chrome y sus forks (navegadores derivados). E incluso los navegadores alternativos no derivados de Chromium, como Firefox de Mozilla, hacen referencia al servicio de Navegación segura de Google para decidir la confiabilidad de las descargas. O incluso ofrecen su buscador como opción para búsquedas integradas.&lt;/p&gt;
&lt;p&gt;Detener la propagación del malware es un objetivo digno de un gran agradecimiento, pero una consecuencia de esto es que perjudica directamente a los desarrolladores de software libre y de código abierto de poder lanzar su software sin pagar costosas tarifas de búsqueda de malware por parte de la autoridad de certificación.&lt;/p&gt;
&lt;p&gt;Si un desarrollador de software intenta lanzar una nueva versión de su software en línea, es probable que reciba esta advertencia en su Google Search Console:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://miro.medium.com/max/716/1*E6wn_ALLvQ0e8ecBvNHRMA.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Por definición y sin excepciones, todo el software es desconocido cuando se lanza por primera vez. No importa que haya tenido su dominio durante catorce años sin haber alojado nada malicioso:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://miro.medium.com/max/292/1*rnS-W4PreMl592nkDUkhuw.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;No importa si ninguno de los setenta y dos analizadores de virus marcan contenido malicioso en su ejecutable:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://miro.medium.com/max/645/1*P0hj5bYQXD_DR3xQj51Rtw.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;No importa si solicita una revisión de Google que vuelve clara:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://miro.medium.com/max/375/1*-4WN5wrHYt2VvKM32h6KLg.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Las advertencias simplemente regresan, a menudo en el mismo archivo que ya ha revisado. Esto no es solo una advertencia aterradora que se ignora fácilmente: los navegadores web advertirán a los usuarios que su software puede ser malicioso. Y se desprende de la advertencia de Google que considera que su sitio está comprometido, lo que puede conducir a penalizaciones en los resultados de búsqueda, incluida la exclusión de la lista.&lt;/p&gt;
&lt;p&gt;Esto a pesar del hecho de que no ha hecho nada malo aparte de lanzar software en la web.&lt;/p&gt;
&lt;p&gt;Este proceso es totalmente opaco: ¿cuántas descargas se necesitan antes de que el software ya no se considere desconocido? ¿Cuánto tiempo puede su sitio alojar una descarga desconocida antes de que se aplique una penalización en la búsqueda? ¿La obtención de un certificado de firma de código de Windows aliviará estas advertencias o no? ¿Tiene que ser un certificado EV?&lt;/p&gt;
&lt;p&gt;Supongamos que desea obtener un certificado de firma de código para ver si eso ayuda:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://miro.medium.com/max/933/1*fYd1TFryBmlhjn3lqRNVKA.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Qué trato para un pequeño desarrollador de software libre. Además, debe tener un negocio registrado que sea verificado por Better Business Bureau para recibir su certificado EV. Si desea un certificado regular, puede hacerlo adjuntando su nombre legal público a su software y enviando una copia de su licencia de conducir. Y eso no quiere decir nada de los riesgos que toma estos días en línea al publicar su nombre legal.&lt;/p&gt;
&lt;p&gt;E incluso si hace todo esto y comienza a firmar sus ejecutables, todavía no puedo encontrar ninguna garantía de si Google comenzará a tratar estos ejecutables como seguros o no. En mi propio caso, esto efectivamente me ha impedido lanzar binarios compilados de mi propio software en el futuro. Si la firma de código es un requisito para distribuir software gratuito, entonces necesitamos una alternativa de estilo Let&amp;rsquo;s Encrypt para la firma de código: ayer. De lo contrario, Google necesita un cambio de política sobre cómo maneja las nuevas versiones de software de desarrolladores de software gratuitos y de código abierto.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lo-que-opino"&gt;
Lo que opino
&lt;a href="#lo-que-opino" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Existe una realidad, todos los que hacemos software libre o colaboramos con el mismo debemos sofocarnos con estas clases de cosas. El dinero que utilizamos para poder llevar este software ante ustedes sale lamentablemente de nuestros bolsillos. Y claramente cuando un proyecto ya es grande de las donaciones de la comunidad. Sin embargo, necesitamos que esto cambie, así fue cuando salió Let&amp;rsquo;s Encrypt y tiene que seguir así.&lt;/p&gt;</description></item><item><title>Genpress: El Worpress en Node</title><link>https://patojad.com.ar/post/2019/12/genpress-el-worpress-en-node/</link><pubDate>Wed, 18 Dec 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/12/genpress-el-worpress-en-node/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Actualmente estoy trabajando en una plataforma de código abierto para blogs/sitios de contenido, que es más compatible con el siglo XXI, servicios en la nube, escalado, etc.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
davidmeirlevy
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;El proyecto se divide en microservicios, y tanto el panel de administración como la interfaz del blog están usando Vue.js (administrador escrito con Vue y blog-front con Nuxt, para SSR).&lt;/p&gt;
&lt;p&gt;No está 100% listo, pero está disponible y puede ser útil en este momento para uso básico, tiene un entorno de desarrollo y scripts de producción, usando pm2. La próxima semana con docker y compose, y pronto también helm chart.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://greenpress.herokuapp.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Demo
&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Estaría más que feliz de obtener cualquier tipo de ayuda, contribuciones de código, errores, sugerencias, o incluso que lo usarán para ustedes mismos. Realmente funciona y es gratis.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
davidmeirlevy
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="es-el-futuro"&gt;
¿Es el futuro?
&lt;a href="#es-el-futuro" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Claramente los que somos desarrolladores y alguna vez utilizamos PHP sabemos que es un lenguaje que fue (y aun es) útil, peor no es para nada bueno. Con esto no quiero decir que JS sea bueno, pero podemos decir objetivamente que es levemente “menos peor”.
PHP tiene popularidad solo porque corre en cualquier lado, y se encuentra funcionando en gran parte de la internet. Pero esto no quiere decir que sea bueno, simplemente es más utilizado.&lt;/p&gt;
&lt;p&gt;Este proyecto procura poder ofrecer una solución a WP un tanto más renovada tecnológicamente. Dando así mejores posibilidades de desarrollo y crecimiento a nuestro emprendimiento (por ejemplo, un blog) Y puede, con ayuda de la comunidad, ser uno de los grandes proyectos que inicie el cambio en Internet.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="caracteristicas"&gt;
Caracteristicas
&lt;a href="#caracteristicas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Gestión de configuración.&lt;/li&gt;
&lt;li&gt;La configuración debe tener opciones como:
&lt;ul&gt;
&lt;li&gt;Nombre del blog (predeterminado: &amp;ldquo;Mi sitio web Greenpress&amp;rdquo;)&lt;/li&gt;
&lt;li&gt;Idioma (predeterminado: &amp;ldquo;en&amp;rdquo;)&lt;/li&gt;
&lt;li&gt;Dirección del sitio (predeterminado: &amp;ldquo;ltr&amp;rdquo;)&lt;/li&gt;
&lt;li&gt;Descripción: para metadatos y SEO.&lt;/li&gt;
&lt;li&gt;Tema: debe implementar una API para obtener una lista de temas desde el frente del blog y reiniciar el frente del blog (con npm run build) para aplicar el tema en el cambio de campo.&lt;/li&gt;
&lt;li&gt;Font url: define el uso de fuentes de cdn como google-fonts.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Búsqueda básica de publicaciones: necesaria tanto para frontend como administracion.&lt;/li&gt;
&lt;li&gt;Características del administrador:
&lt;ul&gt;
&lt;li&gt;$notify para mensaje de éxito/error.&lt;/li&gt;
&lt;li&gt;El panel de administración es más fácil de usar.&lt;/li&gt;
&lt;li&gt;Administrar menús (crear / eliminar / actualizar)&lt;/li&gt;
&lt;li&gt;Selector de categoría de usuario para elementos de menús.&lt;/li&gt;
&lt;li&gt;Mejora UX, también compatible para uso móvil.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://github.com/greenpress" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Proyecto
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Oranchelo</title><link>https://patojad.com.ar/post/2019/12/oranchelo/</link><pubDate>Mon, 09 Dec 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/12/oranchelo/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="oranchelo"&gt;
Oranchelo
&lt;a href="#oranchelo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Oranchelo es un tema de iconos de diseño plano para XFCE4 basado en Super Flat Remix e inspirado en &amp;ldquo;Corny icons&amp;rdquo; de Patryk Goworowski. Si bien su destino es XFCE tras probarlo en otros desktops pudimos ver que se adaptan bien, a ser sincero es uno de los mejores que vi en Desktops nuevos como Deepin. Su uso es simple para cualquier distro gracias a su propio instalador que trae en su repositorio de git&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://2.bp.blogspot.com/-IHBM65dQ7yo/V7k0DL0NX_I/AAAAAAAAHvk/4lPzxcDtnJUQ8weAzBIo_P5xTIeWYiuyQCEw/s1920/oranchelo-2.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalacion"&gt;
Instalacion
&lt;a href="#instalacion" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="ubuntu-o-derivados"&gt;
Ubuntu o derivados
&lt;a href="#ubuntu-o-derivados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La instalacion se realiza mediante PPA, por lo cual no sirve para Debian y relacionados dado que las PPA solo funcionan en Ubuntu y sus derivados&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo add-apt-repository ppa:oranchelo/oranchelo-icon-theme
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install oranchelo-icon-theme&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="arch-y-derivados"&gt;
Arch y derivados
&lt;a href="#arch-y-derivados" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Dentro de Arch el metodo de instalacion es simple mediante AUR&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -Sy oranchelo-icon-theme-git&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="debian-y-fedora"&gt;
Debian y Fedora
&lt;a href="#debian-y-fedora" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Si bien los procesos de instalacion son diferentes ambos pueden descargar sus empaquetados desde el propio &lt;a href="https://github.com/OrancheloTeam/oranchelo-icon-theme/releases" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
git del proyecto
&lt;/a&gt;. Luego deben instalarlo y cada usuario sabra como hacerlo dado que ya conocen su sistema.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="desde-el-codigo-fuente"&gt;
Desde el codigo Fuente
&lt;a href="#desde-el-codigo-fuente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Esta es la opcion mas linda para todos, es ejecutar un .sh tan simple que nos deja los iconos instalados y listos para usar. Este proceso es simple, descargamso el &lt;a href="https://github.com/OrancheloTeam/oranchelo-icon-theme" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
codigo fuente del proyecto
&lt;/a&gt;. Una vez que este deescargado abrimos una terminal en la carpeta del proyecto y ejecutamos el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./oranchelo-installer.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="100-manual"&gt;
100% Manual
&lt;a href="#100-manual" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La opción más simple, aunque debo admitir que para mí es la menos recomendable es la instalación 100% manual. Para esto debemos descargar el código fuente mencionado con anterioridad y copiar las carpetas Oranchelo y Oranchelo-green en &lt;code&gt;/usr/share/icons&lt;/code&gt; o &lt;code&gt;~.local/share/icons&lt;/code&gt; para que solo el usuario actual pueda usarlos.&lt;/p&gt;</description></item><item><title>Linux, Un feliz Accidente</title><link>https://patojad.com.ar/post/2019/12/linux-un-feliz-accidente/</link><pubDate>Fri, 06 Dec 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/12/linux-un-feliz-accidente/</guid><description>&lt;p&gt;Estos días navegando por reddit me encontré con una publicación que me llamo la atención abismalmente. Creo que puede llegar a ser realmente para todos los linuxnautas y por eso me sentí en la obligación de compartirla.&lt;/p&gt;
&lt;p&gt;La publicación original es de Agustl y pueden encontrarla en su propio blog el cual recomiendo visitar. ¡También antes de leer esto les quiero comentar que la “traducción” que realice no es literal y pueden encontrar diferencias!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-linus-torvalds-creó-accidentalmente-linux"&gt;
Cómo Linus Torvalds creó accidentalmente Linux
&lt;a href="#c%c3%b3mo-linus-torvalds-cre%c3%b3-accidentalmente-linux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Rondando 1990 Linus Torvalds era un “infeliz” usuario de Minix. (Minix era un sistema operativo creado post Unix v7 para poder seguir enseñando sistemas operativos con una estructura similar a Unix. Recordemos que a partir de Unix v7 se prohibió su uso para la educación)&lt;/p&gt;
&lt;p&gt;Después de poseer algunas computadoras “interesantes” (una VIC-20 y una Sinclair QL) Linux decidio ahorra para comprar una PC compatible con IBM, la cual traía, por supuesto, una versión de DOS, la cual Linus remplazo inmediatamente por su querido Minix.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Por &amp;ldquo;inmediatamente&amp;rdquo;, me refiero a &amp;ldquo;pasé la mayor parte de una semana instalándolo&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.pinimg.com/originals/51/7d/21/517d2182f230d4f686c85507b45c2d26.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Minix era un sistema operativo bastante popular, y gratuito. Lo cual es un combo realmente irresistible para un estudiante universitario que no tiene mucho dinero (Aquí me siento muy identificado). Linus había pedido por adelantado Minix y tardo un mes en llegarle los 16 disquets que contenían el sistema, los parches y los manuales. (Imaginen por un momento 16 la dimensión de eso, en esa época, claramente a mí me llevaría tal vez más de una semana instalarlo y configurarlo correctamente. Es incluso más difícil que hoy en día compilar un Linux con LFS)&lt;/p&gt;
&lt;p&gt;Podemos decir que Linus era un hombre Feliz con Minix, pero sentía que algunas cosas le faltaban. Claramente como es Linus escribió lo suyo…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-inicio-del-accidente"&gt;
El inicio del accidente
&lt;a href="#el-inicio-del-accidente" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Su proyecto principal era un emulador de terminal, uno que pudiera usar en las maquinas de la universidad para que se conectaran entre si. Queria aprender sobre las entradas y salidas de su PC IBM, por lo cual decidio que su terminal trabajaba al nivel del Hardware, sin sistema operativo.
Este emulador fue el inicio de Linux…&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="un-paso-mas"&gt;
Un paso mas
&lt;a href="#un-paso-mas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Luego escribió un controlador de disco para poder guardar todo el trabajo que realizaba mientras no se encontraba en Minix. Hasta que finalmente su emulador de terminar pudo lanzar BASH (Me sorprende que BASH sea tan viejo). A esto Linux lo llamo su “gnu-emacs de programas de emulador de terminal”&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;gnu-emacs of terminal emulation programs&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(en ingles suena mas bonito)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="otoño-1991-la-caída"&gt;
Otoño 1991 la caída
&lt;a href="#oto%c3%b1o-1991-la-ca%c3%adda" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Linus considera dejar de lado su emulador de terminal. Estaba razonablemente feliz con este y hacia lo que necesitaba que haga, básicamente se aburrió de su proyecto, es común que a los desarrolladores nos aburran nuestros proyectos personales, más cuando creemos que son chicos, que poco es lo que podemos hacer por este proyecto.&lt;/p&gt;
&lt;p&gt;Vale aclarar (fuera de post) que esto hace que grandes proyectos no vean la luz, los desarrolladores solemos perder algo de fe en nuestros proyectos y las comunidades no suelen ser muy cálidas (cuando las hay)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-accidente-oportuncrisis"&gt;
El Accidente (Oportuncrisis)
&lt;a href="#el-accidente-oportuncrisis" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://k60.kn3.net/taringa/2/7/6/5/8/6/43/tinchocarajero/CE2.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Entonces un triste dia, Linus &lt;strong&gt;elimino accidentalmente su partición de Minix&lt;/strong&gt;. En ese momento si bien Linux estaba naciendo el seguía utilizando Minix como entorno de desarrollo. Linux, en ese momento solo “servía” para leer emails y noticias desde el emulador de terminal. Luego del error (Que describe en la cita que esta abajo) Fue un punto de quiebre para la decisión que debería tomar, o tomar toda una semana nuevamente reinstalando Minix o retomar Linux reconociendo que era suficientemente bueno como para poder remplazar Minix. Desde ese momento escribió los programas para compilar Linux. Y cada vez que extrañaba algo de Minix solo lo agregaba a Linux.&lt;/p&gt;
&lt;p&gt;De esta forma, y con un accidente Linux tuvo la oportunidad de nacer, ver la luz y ser uno de los grandes sistemas operativos de hoy en día.&lt;/p&gt;
&lt;p&gt;En las propias palabras de Linus:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Back then, I was booting into Linux but used Minix as the main development environment. Most of what I was doing under Linux was reading email and news from the university’s computer via the terminal emulator I had written. The university computer was constantly busy, so I had written a program that auto-dialed into it. But in December, I mistakenly auto-dialed my hard disk instead of my modem. I was trying to auto-dial /dev/tty1 [&amp;hellip;]. But by mistake I auto-dialed /dev/hda1, which is the hard disk device. The end result was that I inadvertently overwrote some of the most critical parts of the partition where I had Minix. Yes, that meant I couldn’t boot Minix anymore.&lt;/p&gt;
&lt;p&gt;That was the point where I had a decision to make: I could reinstall Minix, or I could bite the bullet and acknowledge that Linux was good enough that I didn’t need Minix. I would write the programs to compile Linux, under itself, and whenever I felt I needed Minix, I would just add the desired feature to Linux.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Linus Torvalds
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Quién sabe cuántos otros sistemas tienen historias similares? ¿O cuantas historias similares pasarán y nacerán nuevas cosas?&lt;/p&gt;</description></item><item><title>YTPlayer: un reproductor de YT Online</title><link>https://patojad.com.ar/post/2019/11/ytplayer-un-reproductor-de-yt-online/</link><pubDate>Wed, 27 Nov 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/11/ytplayer-un-reproductor-de-yt-online/</guid><description>&lt;p&gt;YTPlayer es una WebApp creada con el fin de poder simplificar la reproducción de música mediante Youtube. Actualmente se encuentra en beta dado que es un proyecto que encontré en internet y lo actualicé.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://YTPlayer.PatoJAD.com.ar" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Probarlo
&lt;/a&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="que-ofrece"&gt;
¿Que ofrece?
&lt;a href="#que-ofrece" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Crea Listas en la aplicación.&lt;/li&gt;
&lt;li&gt;Búsqueda.&lt;/li&gt;
&lt;li&gt;Exportar Listas&lt;/li&gt;
&lt;li&gt;Importar Listas&lt;/li&gt;
&lt;li&gt;Listas guardadas en el localStorage del equipo&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="porque-usarlo"&gt;
¿Porque usarlo?
&lt;a href="#porque-usarlo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La aplicación facilita la generación de listas musicales y la reproducción de la misma, permite buscar mientras se reproduce (de esta forma es más simple buscar) y no refresca toda la página entre video y video, lo cual disminuye el tiempo de silencio entre canciones.&lt;/p&gt;
&lt;p&gt;Esperamos tus opiniones para mejorarlo.&lt;/p&gt;</description></item><item><title>VOIP vs WebRTC</title><link>https://patojad.com.ar/post/2019/11/voip-vs-webrtc/</link><pubDate>Thu, 14 Nov 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/11/voip-vs-webrtc/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="webrtc"&gt;
WebRTC
&lt;a href="#webrtc" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;WebRTC es un proyecto de código abierto que reúne a muchos grandes de la web como por ejemplo Google y Mozzila. Esta tecnología permite comunicaciones de Audio/Video en un navegador sin necesidad de descargar nada al equipo. Esto se utiliza para ofrecer servicios como llamada, videollamada, chat, e incluso envío de archivos. Si bien parece tener un futuro prometedor debido a su gran potencial y bajo consumo de recursos, todavía no es lo suficientemente estable (o eso se comenta) Dado que su desarrollo sigue a pasos agigantados. Sin embargos las nuevas versiones no implican grandes cambios a nivel desarrollo, más bien la implementación de novedades o simplemente la actualización de los paquetes para los desarrolladores. La comunicacion WebRTC permite ser P2P lo cual mejora la performance y desliga al servidor.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="voip"&gt;
VOIP
&lt;a href="#voip" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Por su parte lo que llamamos VOIP no es más que la implementación del protocolo SIP utilizado con anterioridad en las llamadas telefónicas. SIP es un protocolo de señalización que básicamente se utiliza para comunicar el usuario con el servidor (al igual que WebRTC) pero con la particularidad de que requiere que usuario utilice si o si un cliente SIP. Sin embargo cabe resaltar que SIP se encuentra altamente testeado y en la actualidad se entiende que SIP acepta interacciones, no necesariamente una llamada o un mensaje, lo cual lo vuelve potencialmente expansible. También se considera uno de los más estables por su amplia trayectoria&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="voip-y-webrtc-juntos"&gt;
VOIP y WebRTC Juntos
&lt;a href="#voip-y-webrtc-juntos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://bloggeek.me/wp-content/uploads/2017/09/201709-web-voip-webrtc.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si bien nativamente no es posible juntarlos muchas librerías nos permiten utilizarlos juntos con el fin de formar un servicio más óptimo. Esto nos permite, por ejemplo, crear una web que se comunique con un servidor SIP y viceversa. Jitsi por ejemplo inició siendo un proyecto VOIP basado en SIP y luego reescribieron su código con una mezcla de SIP y WebRTC Para mejorar la performance y poder funcionar con anchos de banda muchos más modestos.&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;WebRTC&lt;/th&gt;
&lt;th class="px-3 py-1" style="text-align: center"&gt;VOIP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Calidad&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Alta ++&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Alta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Consumo&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Medio&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Bajo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Estabilidad Software&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Beta&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Buena&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Estabilidad Llamada&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Buena&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Buena&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Simplicidad&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Simple&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Complejo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Equipo adicional&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;NO&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Puede conectar teléfonos IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Codecs&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;Opus, VP8&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;H246, AMR-WB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Protocolo de Señal&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;&amp;mdash;&amp;mdash;&amp;mdash;&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;SIP, XMPP, H323&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Cifrado Nativo&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;SRTP, TLS&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;TLS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;&lt;strong&gt;Requiere Cliente&lt;/strong&gt;&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;NO&lt;/td&gt;
&lt;td class="px-3 py-1" style="text-align: center"&gt;SI&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;</description></item><item><title>¿Que es proxmox?</title><link>https://patojad.com.ar/post/2019/11/que-es-proxmox/</link><pubDate>Tue, 12 Nov 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/11/que-es-proxmox/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="proxmox-virtual-environment"&gt;
Proxmox Virtual Environment
&lt;a href="#proxmox-virtual-environment" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Proxmox Virtual Environment (También conocido como ProxmoxVE) es un entorno de virtualización de servidores de Código Abierto distribuido bajo la licencia GPL. Es, más bien, una distribución de GNU/Linux basados en nada más ni nada menos que la madre de todas las distros Debian, pero con la simple diferencia que su Kernel fue cambiado por una versión modificada del kernel de RHEL una distro enfocada en la nube y servidores.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://www.centrodeserviciosti.com.mx/wp-content/uploads/2018/02/proxmox4_webgui-1110x550.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Proxmox, a diferencia de otros, incluye una consola Web y herramienta de líneas de comando. También proporciona una API REST (que dicho sea de paso se puede testear con nuestra &lt;a href="https://rest.patojad.com.ar/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
restclient
&lt;/a&gt;) para herramientas de terceros. Es compatible con dos tipos de virtualización:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los contenedores LXC&lt;/li&gt;
&lt;li&gt;Y la virtualización con KVM&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="historia"&gt;
Historia
&lt;a href="#historia" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;El desarrollo de Proxmox VE empezó cuando Dietmar y Martin Maurer, dos desarrolladores de Linux, encontraron que OpenVZ no tenía ninguna herramienta de copias de seguridad y tampoco una GUI de administración. KVM fue apareciendo al mismo tiempo en Linux, y se añadió poco después. La primera versión pública tuvo lugar en abril de 2008, y la plataforma se ganó rápidamente atractivo uso. Fue una de las pocas plataformas en proporcionar soporte para contenedores fuera de lo común y una virtualización completa, administrado con una interfaz gráfica de usuario Web similares a las plataformas de ofertas comerciales.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Wikipedia
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="características"&gt;
Características
&lt;a href="#caracter%c3%adsticas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.ochobitshacenunbyte.com/wp-content/uploads/2017/08/Proxmox-VE-5-0-destacado.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Proxmox destaca no solo por ser software libre, cosa que es muy importante sino también que salió al Mercado con mucha innovación y un nivel que hace frente a cualquier software privativo. Entre las cosas que se destacan la comunidad resalta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Es de código abierto&lt;/li&gt;
&lt;li&gt;Permite la migración en vivo&lt;/li&gt;
&lt;li&gt;Dispone de una alta habilitación de puentes de red&lt;/li&gt;
&lt;li&gt;Plantillas de construcción de SO&lt;/li&gt;
&lt;li&gt;Copias de seguridad programadas&lt;/li&gt;
&lt;li&gt;Herramientas de línea de comandos.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Proxmox además de todo lo mencionado ya cuenta con mucha documentación. Y una comunidad muy activa. Dejamos también su &lt;a href="https://pve.proxmox.com/wiki/Main_Page" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Wiki
&lt;/a&gt; una de las completas entre los proyectos de este alcance.&lt;/p&gt;</description></item><item><title>Configurar GitLab Pages con CloudFlare</title><link>https://patojad.com.ar/post/2019/11/configurar-gitlab-pages-con-cloudflare/</link><pubDate>Wed, 06 Nov 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/11/configurar-gitlab-pages-con-cloudflare/</guid><description>&lt;p&gt;Vamos a ver cómo realizar la configuración entre Cloudflare y Gitlab. Antes que nada, recomiendo leer porque elegimos &lt;a href="https://patojad.com.ar/post/2019/10/gitlab-pages/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Gitlab
&lt;/a&gt; y Porque elegimos &lt;a href="https://patojad.com.ar/post/2019/10/cloudflare-que-es-ventajas-y-desventajas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
Cloudflare
&lt;/a&gt;. Una vez visto esto vamos a explicar cómo hacer para que nuestro dominio alojado el CloudFlare previamente realizado aquí.&lt;/p&gt;
&lt;p&gt;Una vez habilitado el dominio en Cloudflare procedemos a crear los certificados para poder generar los registros correctamente.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="certificado"&gt;
Certificado
&lt;a href="#certificado" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/59C3kM1T/cert.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Nos dirigimos a SSL/TLS ahí dentro vamos a Origin Server Y podemos crear el Certificado. Para esto debemos elegir los dominios a los cuales apelara ese Certificado y el tiempo de duración de los mismos.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/yNxhmMvf/cert1.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Y esto nos generara las respectivas claves que utilizaremos para asegurar la conexión. Esto es lo que nos certifica la seguridad del servidor al que se envían.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/zfQC0xQq/cert2.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En donde se encuentran los cuadros blancos verán su respectivo certificado y clave los cuales debemos guardar para utilizarlos en GitLab&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="agregar-dominio-a-gitlab"&gt;
Agregar Dominio a Gitlab
&lt;a href="#agregar-dominio-a-gitlab" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Dentro de nuestro proyecto en gitlab, (entendiendo que ya se encuentran configurados los CI para habilitar la sección Paginas) Nos dirigimos a configuración y a la sección de páginas.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/WzLMPhjK/glab.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ahí seleccionamos nuevo Dominio y completamos los campos como vemos a continuación. Es importante recalcar que el dominio va sin http ni https y que no gestionamos los certificados automáticamente (Ya que lo hacemos por cloudflare manualmente)&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Gmcx28Yn/glab1.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Como requiere todos los certificados no olvidemos poner el del servidor de cloudflare el cual les dejo a continuación&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-----BEGIN CERTIFICATE-----
MIIEADCCAuigAwIBAgIID+rOSdTGfGcwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNV
BAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMTQwMgYDVQQLEytDbG91
ZEZsYXJlIE9yaWdpbiBTU0wgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMB4XDTE5MDgyMzIx
MDgwMFoXDTI5MDgxNTE3MDAwMFowgYsxCzAJBgNVBAYTAlVTMRkwFwYDVQQKExBD
bG91ZEZsYXJlLCBJbmMuMTQwMgYDVQQLEytDbG91ZEZsYXJlIE9yaWdpbiBTU0wg
Q2VydGlmaWNhdGUgQXV0aG9yaXR5MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRMw
EQYDVQQIEwpDYWxpZm9ybmlhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAwEiVZ/UoQpHmFsHvk5isBxRehukP8DG9JhFev3WZtG76WoTthvLJFRKFCHXm
V6Z5/66Z4S09mgsUuFwvJzMnE6Ej6yIsYNCb9r9QORa8BdhrkNn6kdTly3mdnykb
OomnwbUfLlExVgNdlP0XoRoeMwbQ4598foiHblO2B/LKuNfJzAMfS7oZe34b+vLB
yrP/1bgCSLdc1AxQc1AC0EsQQhgcyTJNgnG4va1c7ogPlwKyhbDyZ4e59N5lbYPJ
SmXI/cAe3jXj1FBLJZkwnoDKe0v13xeF+nF32smSH0qB7aJX2tBMW4TWtFPmzs5I
lwrFSySWAdwYdgxw180yKU0dvwIDAQABo2YwZDAOBgNVHQ8BAf8EBAMCAQYwEgYD
VR0TAQH/BAgwBgEB/wIBAjAdBgNVHQ4EFgQUJOhTV118NECHqeuU27rhFnj8KaQw
HwYDVR0jBBgwFoAUJOhTV118NECHqeuU27rhFnj8KaQwDQYJKoZIhvcNAQELBQAD
ggEBAHwOf9Ur1l0Ar5vFE6PNrZWrDfQIMyEfdgSKofCdTckbqXNTiXdgbHs+TWoQ
wAB0pfJDAHJDXOTCWRyTeXOseeOi5Btj5CnEuw3P0oXqdqevM1/+uWp0CM35zgZ8
VD4aITxity0djzE6Qnx3Syzz+ZkoBgTnNum7d9A66/V636x4vTeqbZFBr9erJzgz
hhurjcoacvRNhnjtDRM0dPeiCJ50CP3wEYuvUzDHUaowOsnLCjQIkWbR7Ni6KEIk
MOz2U0OBSif3FTkhCgZWQKOOLo1P42jHC3ssUZAtVNXrCk3fw9/E15k8NPkBazZ6
0iykLhH1trywrKRMVw67F44IE8Y=
-----END CERTIFICATE-----
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/3NX2rYxw/glab3.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Una vez finalizado esto vamos a ver lo siguiente lo cual nos da el registro txt que debemos agregar a nuestro cloudflare para completar con éxito la redirección.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="dns"&gt;
DNS
&lt;a href="#dns" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/28dxrF1x/dns.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Por ultimo debemos configurar los DNS para concretar la redirección. Esto debemos hacerlo desde Clodflare en la sección DNS&lt;/p&gt;
&lt;p&gt;Y debemos completar primero la IP hacían donde va mirar nuestro dominio, en este caso estoy configurando &lt;a href="https://patojad.com.ar/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
https://patojad.com.ar/
&lt;/a&gt; lo cual seria mi dominio principal por lo cual el name del registro seria @ haciendo referencia a root. En caso de querer configurar un subdominio (por ejemplo &lt;a href="https://compartelibre.patojad.com.ar" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://compartelibre.patojad.com.ar
&lt;/a&gt;) debemos poner solo el subdominio ej compartelibre.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/rF29BYwm/dns1.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Una vez agregada la IP debemos agregar el registro TXT que nos dio gitlab.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/dV4mTsmk/dns2.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Una vez agregado solo debemos volver a gitlab y verificarlo, si realizamos todo correctamente vamos a ver la siguiente pantalla. (ATENCION es posible que desde que agregue los registros pasen minutos hasta que la verificación se concluya.)&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/ZRyrgrkp/glab4.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Cuando concluimos con esto en pocas horas la redirección será exitosa.&lt;/p&gt;</description></item><item><title>El Proyecto “ACCESSIBLE BINARY”</title><link>https://patojad.com.ar/post/2019/10/el-proyecto-accessible-binary/</link><pubDate>Wed, 16 Oct 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/10/el-proyecto-accessible-binary/</guid><description>&lt;p&gt;&lt;strong&gt;A grandes rasgos se presenta así de una manera global sin embargo cada parte implica otras subdivisiones, puesto que, el proyecto “ACCESSIBLE BINARY” es bastante ambicioso y complejo para ejecutarlo todo de una vez. De esta manera, como se está presentando ahora se hace de fácil comprensión para todo aquel que desee colaborar.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En este proyecto puede entrar cualquier persona que desee colaborar, no supone inversión monetaria, sólo la inversión más valiosa que puedes dar y son las horas/hombre. (Nuestra meta es llegar a un millón de colaboradores a lo largo y ancho de todo el mundo. ¿Lo lograremos? Seguramente lo haremos y tú eres una pieza importante para construir esta macrored)&lt;/li&gt;
&lt;li&gt;Este proyecto es &lt;strong&gt;UNIVERSAL&lt;/strong&gt; , está pensado y basado en los siguientes términos (Diseño universal, Accesibilidad Universal, Accesibilidad Web, Integración, Convivencia, Usabilidad)&lt;/li&gt;
&lt;li&gt;Esto es un proyecto moldeable, modular y pensado para llevarlo a cabo de manera colaborativa, donde cada uno pondrá de sus conocimientos para que esto sea una realidad. “Divide y vencerás” en el sentido de pequeñas tareas para lograr resolver un problema grande.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ayudarnos sin límites&lt;/strong&gt; es la premisa, si logramos realizar este proyecto estaremos contribuyendo al desarrollo humano enfocado en el entendimiento para el mejor avance tecnológico de la historia. “Una máquina puede pensar siempre y cuando el humano que la haga pensar también sepa cómo hacerlo”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://blog.ida.cl/wp-content/uploads/sites/5/2019/03/Usabilidad-y-accesibilidad-655x470.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="i-parte-investigación"&gt;
I PARTE: INVESTIGACIÓN
&lt;a href="#i-parte-investigaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El proceso investigativo de este proyecto es bastante truncado, sin embargo nos estaremos basando en la información que se nos proporciona vía internet y también con investigación de campo, a través de los diferentes colaboradores que se adhieran al proyecto en esta área.&lt;/p&gt;
&lt;p&gt;Es necesario educar, incentivar y motivar a cada individuo a desarrollar actividades que son una constante hoy en día, es decir, proveer materiales y herramientas para todos aquellos que deseen aprender y reforzar conocimientos, así como desarrollar actividades técnicas y tecnológicas.&lt;/p&gt;
&lt;p&gt;Esta es una de las partes más importantes en sí del proyecto, ya que sin bases teóricas no podremos avanzar a una práctica.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ii-parte-educación-y-enseñanza"&gt;
II PARTE: EDUCACIÓN Y ENSEÑANZA
&lt;a href="#ii-parte-educaci%c3%b3n-y-ense%c3%b1anza" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Buscamos que a través de la educación, la enseñanza y el compartir conocimientos, valiéndonos de recursos tanto humanos como tecnológicos, dar a conocer de manera enfática todas las terminologías anteriormente señaladas. Todo esto con el fin de hacer el cambio hacia la universalidad.&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="de-los-recursos-humanos"&gt;
De los recursos humanos:
&lt;a href="#de-los-recursos-humanos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;Personas con conocimientos básicos, intermedios o avanzados que puedan generar contenidos a partir de informaciones poco conocidas, debemos indagar un poco, investigar en internet y en nuestras localidades, necesitamos personas que sean proactivas y muy creativas con conocimientos en pedagogía y metodologías de enseñanzas múltiples, profesionales o no, a la hora de evaluar los perfiles de los colaboradores se tomará en cuenta su nivel de compromiso y disposición para ir generando las campañas correspondientes y abordando todo lo que esto implica.&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="de-los-recursos-varios"&gt;
De los recursos varios:
&lt;a href="#de-los-recursos-varios" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;Nos disponemos a realizar actividades variadas con el único fin de impactar a la mayor cantidad de personas, a través de creación de formatos tipo podcast que podamos difundir por las redes de manera masiva y viral, videos educativos, vídeo tutoriales,&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/9Rd1Bhvw5Q0?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="introducción-al-concepto-accesibilidad-universal-diseño-universal-convivencia-integración"&gt;
Introducción al concepto “accesibilidad universal” (Diseño Universal, Convivencia, Integración)
&lt;a href="#introducci%c3%b3n-al-concepto-accesibilidad-universal-dise%c3%b1o-universal-convivencia-integraci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;Para este punto proponemos hacer un podcast donde estaremos hablando sobre el tema de accesibilidad desde el concepto general hasta el enfoque accesible para diseño web y de apps. La experiencia de todo aquel que se haya visto inmerso de manera parcial o total con herramientas de accesibilidad, visitado ciertas páginas web diseñadas con accesibilidad, apps e incluso chats donde puede que exista o no el diseño accesible. Hablar de que este concepto es universal por una razón y que de este tipo de aplicativos e implementaciones se beneficia toda persona no necesariamente alguien catalogado de “discapacitado”.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="herramientas-accesibilidad-existentes"&gt;
Herramientas accesibilidad existentes:
&lt;a href="#herramientas-accesibilidad-existentes" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="privadas"&gt;
Privadas:
&lt;a href="#privadas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.microsoft.com/es-es/Accessibility/windows" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.microsoft.com/es-es/Accessibility/windows
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="libres"&gt;
Libres:
&lt;a href="#libres" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Orca&lt;/strong&gt;. Un lector y magnificador de pantalla para Linux que además, ofrece la posibilidad de trabajar con Braille. Es un proyecto que forma parte del entorno de escritorio Gnome.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NVDA&lt;/strong&gt;. El lector de pantalla para Windows de software libre que más ha mejorado en los últimos años. La gran cantidad de funcionalidades que presenta lo ha convertido en el segundo lector de pantalla del mercado por detrás del propietario JAWS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linaccess-knoppix&lt;/strong&gt;. Otro lector de pantalla, en este caso desarrollado en el marco del proyecto Linacess.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FireVox&lt;/strong&gt;. Un lector de pantalla que funciona como extensión para el navegador Mozilla Firefox. Fácil de instalar y utilizar pero con funciones limitadas a la navegación web. Es decir, no sirve como lector de pantalla para aplicaciones de escritorio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ChromeVox&lt;/strong&gt;. La alternativa a FireVox para usuarios del navegador Chrome y Chromium. Como en el caso de FireVox, sus funciones se limitan a la navegación web.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gnopernicus&lt;/strong&gt;. Otra herramienta para el escritorio Gnome. Se trata de un paquete de utilidades formado por una lupa ampliadora de pantalla, seguimiento del foco del teclado y salida Braille entre otros.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kmagnifier&lt;/strong&gt;. Una lupa o magnificador de pantalla para Linux.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;XZoom&lt;/strong&gt;. Una lupa magnificadora para Linux que presenta como principal característica diferenciadora la capacidad para actualizar continuamente el área magnificada.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KeyTouch&lt;/strong&gt;. Una aplicación que permite configurar funciones extra para realizar más acciones con el teclado. No se trata de un proyecto creado específicamente en el ámbito de la accesibilidad, pero puede resultar útil a muchas personas con discapacidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dasher&lt;/strong&gt;. Una aplicación que permite escribir a través de un sistema predictivo basado en el movimiento del puntero del ratón, lo que permite sustituir la escritura a través de una interfaz de teclado por movimientos de ratón. Especialmente útil para discapacitados motrices.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gok&lt;/strong&gt;. Un teclado alfanumérico virtual para Linux que permite prescindir del teclado tradicional a usuarios que no son capaces de teclear, pero sí de marcar las teclas con un cursor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenMindSpeech&lt;/strong&gt;. Una aplicación para Linux (KDE y Gnome) de reconocimiento de voz.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="iii-parte-desarrollo"&gt;
III PARTE: DESARROLLO
&lt;a href="#iii-parte-desarrollo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;La herramienta a desarrollar a largo plazo es una herramienta subdividida en módulos, la cual debe de cumplir con lo expuesto a manera de propuesta inicial, emanado de un proceso previo de indagación. Asi mismo, Estamos conscientes que para lograr cada parte se deberá contar con profesionales especialistas en cada tema, tenemos la esperanza de reunir dichos profesionales una vez sea planteado formalmente este proyecto:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Esta herramienta sería &lt;strong&gt;un todo en uno&lt;/strong&gt; de la manera que desglosamos a continuación:&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="módulo-1-voz-humana"&gt;
Módulo 1: Voz humana
&lt;a href="#m%c3%b3dulo-1-voz-humana" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;Porque según la experiencia de varios usuarios con respecto a los lectores de pantalla actuales, estos no cuentan con un sintetizador de voz agradable. Los que existen de manera gratuita no son agradables, otros no son fáciles de conseguir, y los que son excelentes hay que pagar por su uso. Cabe destacar que no necesariamente esta herramienta será de uso exclusivo para personas no videntes, puesto que existen en el mundo personas sensibles auditivas y no necesariamente es que tengan visión parcial o nula.&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="módulo-2-reconocimiento-de-voz-a-través-lenguaje-natura-l"&gt;
Módulo 2: Reconocimiento de voz a través Lenguaje Natura l
&lt;a href="#m%c3%b3dulo-2-reconocimiento-de-voz-a-trav%c3%a9s-lenguaje-natura-l" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;Seria perfecto por temas de accesibilidad universal. A través de la voz se puede entonces interactuar a pleno sin ocupar un teclado especial, cualquier persona puede usarlo, aquellos que no puedan usar su voz, pueden interactuar de manera mecánica o insertando texto en un panel de escritura con la herramienta. No es un chatbot cabe aclarar, queremos que esta herramienta sea lo más inteligente posible dando&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="módulo-3-inteligencia-artificial"&gt;
Módulo 3: Inteligencia Artificial
&lt;a href="#m%c3%b3dulo-3-inteligencia-artificial" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;De acuerdo a los principios que emanan de este concepto donde se nos deja en claro que para que exista IA necesariamente debe de existir un comportamiento racional, lógico y también con hechos probabilísticos. Para interacción inteligente con la propia herramienta y obtener alternativas óptimas y eficientes, esta debe de seguir estos lineamientos. Aqui un tema complejo que se puede manejar a base de listas y de planteamientos lógicos que den como resultado alternativas basadas en la lectura del comportamiento del usuario por parte del software embebido dentro de la herramienta, proporcionando alternativas lógicas y acordes a su requerimiento.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sugerencia de algunos tipos de algoritmos que podemos utilizar para hacer este proyecto una realidad:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Aunque definir exactamente qué es la inteligencia es bastante complicado, en la práctica sí que podemos decir qué queremos de un sistema que sea &amp;ldquo;inteligente&amp;rdquo;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Queremos que sea capaz de reconocer patrones (imágenes o sonidos) para que pueda recibir información del mundo exterior.&lt;/li&gt;
&lt;li&gt;Queremos que sea capaz de aprender filtrando la información útil y guardando sus nuevos descubrimientos.&lt;/li&gt;
&lt;li&gt;Y por último, queremos que también sea capaz de razonar y deducir - en otras palabras, que sea capaz de crear &lt;strong&gt;conocimiento&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Clasificador bayesiano ingenuo&lt;/strong&gt;: es un clasificador probabilístico fundamentado en el teorema de Bayes y algunas hipótesis simplificadoras adicionales.&lt;/p&gt;
&lt;p&gt;Se maneja básicamente siguiendo un esquema de repetición clasificando y separando “objetos” dentro del código.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reconocimiento de voz con redes neuronales profundas&lt;/strong&gt;: Estos sistemas pueden ser entrenados: se les alimenta con &amp;ldquo;pedazos&amp;rdquo; de audio y su transcripción para que aprendan cómo funciona el habla. Así extraen reglas que, aunque probablemente incomprensibles y extrañas para nosotros, sirven para identificar palabras mucho mejor que otros modelos inspirados en supuestos de cómo funciona nuestro lenguaje y nuestra voz.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Análisis sintáctico&lt;/strong&gt;: Analizador sintáctico de oraciones: se centra en el análisis automático de las relaciones sintácticas que se establecen entre los pares de palabras que la componen: su tipo de relación de dependencia, qué palabra es nuclear y cuál dependiente, su categoría gramatical y su posición en la frase.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lógica difusa&lt;/strong&gt;: La Lógica Difusa actualmente está relacionada y fundamentada en la teoría de los Conjuntos Difusos. Según esta teoría, el grado de pertenencia de un elemento a un conjunto va a venir determinado por una función de pertenencia, que puede tomar todos los valores reales comprendidos en el intervalo [0,1]&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://image.basekit.com/live256922_accesibilidad_1.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h4 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="lenguajes-para-desarrollo"&gt;
Lenguajes para desarrollo:
&lt;a href="#lenguajes-para-desarrollo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt; se le considera en el primer lugar de la lista de todos los lenguajes de desarrollo de AI debido a la simplicidad. Las sintaxis que pertenecen a python son muy simples y se pueden aprender fácilmente. Por lo tanto, muchos algoritmos de IA se pueden implementar fácilmente en él. Python tarda poco tiempo de desarrollo en comparación con otros lenguajes como Java, C++ o Ruby.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;R&lt;/strong&gt; es uno de los lenguajes y entornos más efectivos para analizar y manipular los datos con fines estadísticos. Usando R, podemos producir fácilmente un publication-quality plot bien diseñado, incluyendo símbolos matemáticos y fórmulas donde sea necesario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lisp&lt;/strong&gt; es uno de los lenguajes más antiguos y más adecuados para el desarrollo en IA. Fue inventado por John McCarthy, el padre de la Inteligencia Artificial en 1958. Tiene la capacidad de procesar la información simbólica de manera efectiva.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prolog&lt;/strong&gt; Este lenguaje se mantiene junto con Lisp cuando hablamos de desarrollo en el campo de la IA. Las características proporcionadas por éste incluyen una coincidencia de patrones eficiente, estructuración de datos basada en árboles y backtracking automático. Todas estas características proporcionan un marco de programación sorprendentemente potente y flexible. Prolog es ampliamente utilizado para trabajar en proyectos médicos y también para diseñar sistemas de IA expertos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Java&lt;/strong&gt; también se puede considerar como una buena opción para el desarrollo de inteligencia artificial. La inteligencia artificial tiene mucho que ver con algoritmos de búsqueda, redes neuronales artificiales y programación genética.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="conclusiones"&gt;
Conclusiones:
&lt;a href="#conclusiones" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El &lt;strong&gt;Proyecto “ACCESSIBLE BINARY”&lt;/strong&gt; es a nuestra consideración algo a realizar paso a paso, no hay ahora mismo una meta en tiempo, lo que vamos a estar calculando una vez podamos asignar personas interesadas a cada módulo, de la siguiente forma; en un inicio los interesados en formar parte aplican al siguiente formulario&lt;/p&gt;
&lt;iframe src="https://docs.google.com/forms/d/e/1FAIpQLSe8TqrszNCk6hcOYkuSbpd9pTikxgW28LiCv4GomzvHqSp_rw/viewform?embedded=true" width="100%" height="520" marginheight="0" marginwidth="0"&gt;Cargando…&lt;/iframe&gt;
&lt;p&gt;y una vez evaluado el perfil, hecho una previa entrevista se asigna esa persona a un módulo específico, ya sea del área de investigación, enseñanza o desarrollo. Una vez hecho esto se podrá definir un tiempo con metas y actividades.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Una vez desarrollado cada módulo se irá testeando, y haciendo mediciones en cada punto. El primer sistema operativo donde se solicitaría hacer pruebas en una etapa avanzada es sobre GNU/Linux&lt;/li&gt;
&lt;li&gt;Iremos hasta donde nos lleve este proyecto es algo bastante grande y muy ambicioso, gracias por formar parte.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="text-center"&gt;**“ACCESSIBLE BINARY” TEAM**
La accesibilidad universal es el FUTURO&lt;/div&gt;</description></item><item><title>GitLab Pages</title><link>https://patojad.com.ar/post/2019/10/gitlab-pages/</link><pubDate>Wed, 09 Oct 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/10/gitlab-pages/</guid><description>&lt;blockquote&gt;
&lt;p&gt;GitLab Pages es una característica que le permite publicar sitios web estáticos directamente desde un repositorio en GitLab.&lt;/p&gt;
&lt;p&gt;Puede usarlo para sitios web personales o comerciales, como carteras, documentación, manifiestos y presentaciones comerciales. También puede atribuir cualquier licencia a su contenido.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="características"&gt;
Características
&lt;a href="#caracter%c3%adsticas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Use cualquier generador de sitio web estático o &lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt; sin formato&lt;/li&gt;
&lt;li&gt;Cree sitios web para sus proyectos, grupos o cuenta de usuario&lt;/li&gt;
&lt;li&gt;Aloje en GitLab.com de forma gratuita, o en su propia instancia de GitLab&lt;/li&gt;
&lt;li&gt;Conecte sus dominios personalizados y certificados TLS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pages está disponible de forma gratuita para todos los usuarios de GitLab.com, así como para instancias autogestionadas (GitLab Core, Starter, Premium y Ultimate). Es decir que esta en sus productos a nivel que si ustedes tienen instala una instancia de GitLab pueden utilizar su propio GitLab Pages.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sitios-estaticos"&gt;
Sitios Estaticos
&lt;a href="#sitios-estaticos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para publicar un sitio web con páginas, puede usar cualquier generador de sitio estático, como Jekyll, Hugo (el caso de este Blog), Middleman, Harp, Hexo y Brunch, solo por nombrar algunos. También puede publicar cualquier sitio web escrito directamente en &lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;, &lt;a href="https://patojad.com.ar/post/2023/08/descubriendo-el-mundo-de-css/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
CSS
&lt;/a&gt; y JavaScript. Pages no admite el procesamiento dinámico del lado del servidor, por ejemplo, como .php y .asp&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="como-funciona"&gt;
Como funciona
&lt;a href="#como-funciona" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Para usar las páginas de GitLab, primero debe crear un proyecto en GitLab para cargar los archivos de su sitio web. Estos proyectos pueden ser públicos, internos o privados, a su elección. GitLab siempre implementará su sitio web desde una carpeta muy específica llamada publicen su repositorio. Tenga en cuenta que cuando crea un nuevo proyecto en GitLab, un repositorio está disponible automáticamente.
Para implementar su sitio, GitLab utilizará su herramienta integrada llamada GitLab CI / CD , para construir su sitio y publicarlo en el servidor de páginas de GitLab. La secuencia de scripts que ejecuta GitLab CI / CD para realizar esta tarea se crea a partir de un archivo llamado .gitlab-ci.yml, que puede crear y modificar a voluntad.
También se puede usar de GitLab dominio predeterminado para los sitios web GitLab Pages , name.gitlab.ioo en su propio dominio (patojad.com.ar). En ese caso, necesitará acceso de administrador al registrador de su dominio (o panel de control) para configurarlo con Pages.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="porque-elegi-gitlab"&gt;
¿Porque Elegi GitLab?
&lt;a href="#porque-elegi-gitlab" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Cuando comencé con el proyecto quería algo seguro y fiable, Todo el mundo me lo recomendó por su facilidad de uso y su disponibilidad constante. Me convencí al ver que en cuestión de minutos ya tenía mi sitio online, su velocidad es muy buena y me permite compartirlo libremente. Yo personalmente siempre recomendare GitLab Pages y es lo que planeo usar para todo lo que pueda mantener en este método.&lt;/p&gt;</description></item><item><title>CloudFlare ¿Que es? Ventajas y Desventajas</title><link>https://patojad.com.ar/post/2019/10/cloudflare-que-es-ventajas-y-desventajas/</link><pubDate>Fri, 04 Oct 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/10/cloudflare-que-es-ventajas-y-desventajas/</guid><description>&lt;p&gt;CloudFlare es un sistema gratuito que actúa como un proxy (intermediario) entre los visitantes del sitio web y el servidor. Al actuar como un proxy, CloudFlare guarda temporalmente contenido estático del sitio, el cual disminuye el número de peticiones al servidor pero sigue permitiendo a los visitantes el acceso al sitio.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://cf-assets.www.cloudflare.com/slt3lc6tev37/53qCYhQbir5WtIU0VDWESo/1c28d510cb5bb9a44e56916e37a889b6/Cloudflare_default_OG_.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ventajas"&gt;
Ventajas
&lt;a href="#ventajas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Desempeño del Sitio Mejorado:&lt;/strong&gt; CloudFlare tiene servidores proxy localizados alrededor del mundo. Los servidores proxy están localizados cerca de los visitantes, con lo cual estos podrán cargar el sitio más rápido directo de los servidores proxy. &amp;ldquo;Mientras más rápido cargue un sitio, el visitante permanecerá en este por más tiempo.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protección contra Amenazas y Bots:&lt;/strong&gt; CloudFlare usa datos del &amp;ldquo;Project Honey Pot&amp;rdquo; y otras fuentes de terceros, así como datos de su comunidad para identificar amenazas maliciosas y parar ataques antes de que estos lleguen a los sitios. Se podrán ver la amenazas que están siendo paradas a través de CloudFlare desde: &lt;a href="https://www.cloudflare.com/your-websites.html" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.cloudflare.com/your-websites.html
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protección para &amp;ldquo;Comentarios Spam&amp;rdquo;:&lt;/strong&gt; CloudFlare usa datos de fuentes de terceros para reducir el número de &amp;ldquo;comentarios Spam&amp;rdquo; en el sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alerta a Visitantes de Computadoras Infectadas:&lt;/strong&gt; CloudFlare alerta a los visitantes cuando estos acceden desde una computadora infectada para que tomen acciones inmediatas. El visitante podrá ingresar un &amp;ldquo;Captcha&amp;rdquo; para ingresar al sitio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modo de Navegación Offline:&lt;/strong&gt; En el caso eventual que nuestros servidores no se encuentren disponibles, los visitantes podrán seguir accediendo al sitio ya que CloudFlare servirá el sitio desde su CDN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disminución del Uso de CPU:&lt;/strong&gt; Ya que habría menos solicitudes a nuestros servidores, esto disminuirá el consumo de CPU de cada cuenta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nuevas Estadísticas del Sitio:&lt;/strong&gt; Con CloudFlare se podrá tener herramientas para evaluar el tráfico que existe de visitantes hacia el sitio y además contará con estadísticas para &amp;ldquo;crawlers de herramientas de búsqueda&amp;rdquo; y de amenazas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="desventajas"&gt;
Desventajas
&lt;a href="#desventajas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Actualmente, las peticiones deben ser redirigidas a www.$dominio en lugar de $dominio (lo cual puede significar que se deben realizar algunos cambios de configuración).&lt;/li&gt;
&lt;li&gt;CloudFlare puede afectar algunos programas de estadística interna que leen directamente los logs de Apache. CloudFlare no afectará programas de análisis basados en web que usen Javascript o Google Analytics. Mientras que los logs van a reflejar menos peticiones al servidor y menos carga, la experiencia hacia los visitantes de los sitios permanecerá igual.&lt;/li&gt;
&lt;li&gt;CloudFlare guarda contenido estático del sitio. Esto reduce la carga en el servidor y significa que si se hace un cambio de un archivo estático existente como una imagen, puede existir un retraso pequeño mientras aparece el cambio. &lt;strong&gt;Mientras se hace una actualización se puede configurar CloudFlare en Modo de Desarrollo para que el cambio aparezca inmediatamente.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="patojad-y-cloudflare"&gt;
PatoJAD y CloudFlare
&lt;a href="#patojad-y-cloudflare" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Cuando decidí utilizar CloudFlare (recomendado por Tehuel) me pareció que era demasiado para solo un dominio (primera vez con .tk) sin embargo con el tiempo vi que las funcionalidades me permitían ir mucho más allá. Incluso me sirvió para realizar pruebas de desarrollo particulares. Actualmente lo sigo utilizando y si bien el blog es pequeño aun, algún día pagare para poder llevar todo esto a otro nivel dado que el potencial que tiene desde el control de DNS hasta la cache geo localizada para cargar más rápido los sitios son ampliamente útiles.&lt;/p&gt;</description></item><item><title>Shadow</title><link>https://patojad.com.ar/post/2019/09/shadow/</link><pubDate>Tue, 24 Sep 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/09/shadow/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Cambia la forma en que miras tu escritorio. Obtenga un tema de iconos cuidadosamente diseñado, brillante y limpio para Gnome Desktop.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Equipo de Shadow
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://images.pling.com/img/00/00/32/82/41/1012532/2d5d5eb053c500f8cb4cdc9234db648c456d4c8568e06daf16772f1f9c6e55e21045.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Como ellos afirman son iconos cuidadosamente diseñado y pensados para generar un sutil pero notable cambio a nuestro escritorio. Sin embargo, si bien fueron diseñados para Gnome todos aquellos que utilizamos KDE tenemos la oportunidad de probarlos con un hermoso acabado final.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="nueva-solicitud-de-icono"&gt;
Nueva solicitud de icono
&lt;a href="#nueva-solicitud-de-icono" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://rudrab.github.io/Shadow/burn-in.gif" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Su equipo o mejor dicho su usuario creador nos da la posibilidad de realizar la petición de nuevos iconos. Si bien no nos asegura poder implementar todo lo que pidamos el promete hacer todo lo posible por tratar de expandir el theme de iconos. Esto podemos hacerlo a través de su GitHub, en su repositorio agregando un &lt;a href="https://github.com/rudrab/Shadow/issues" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Issus
&lt;/a&gt; con la etiqueta &amp;ldquo;Icon request&amp;rdquo;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalacion"&gt;
Instalacion
&lt;a href="#instalacion" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La instalacion la podemos hacer desde sus dos fuentes de descarga&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="github"&gt;
GitHub
&lt;a href="#github" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La primera vez debermos realizarlo asi:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p ~/.icons
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/.icons
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/rudrab/Shadow.git&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Luego podemos actualizarlo de la siguiente manera:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/.icons/Shadow
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git pull&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/rudrab/Shadow" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
GitHub
&lt;/a&gt;&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="gnome-look"&gt;
Gnome Look
&lt;a href="#gnome-look" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Lo descargamos desde Gnome look&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/.icons
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p shadow
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; shadow
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar -Jxvf &amp;lt;Your download path&amp;gt;/shadow&amp;lt;version&amp;gt;.tar.xz&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://www.gnome-look.org/content/show.php/Shadow?content=170398" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Genome Look
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>La bomba zip</title><link>https://patojad.com.ar/post/2019/09/la-bomba-zip/</link><pubDate>Fri, 13 Sep 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/09/la-bomba-zip/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Un archivo comprimido de 46 MB que explota hasta alcanzar los 4.5 petabytes, la bomba ZIP más potente creada hasta ahora&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
genbeta
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Así nos presenta genbeta en su publicación a esta bomba zip. Básicamente es un archivo malicioso (de apariencia inocente) que esconde una enorme cantidad de datos comprimida en diferentes niveles anidados, viéndose como un inofensivo zip de tan solo 42MB.&lt;/p&gt;
&lt;p&gt;Este tipo de archivo es capaz de colapsar el ordenador por un colapso de buffer y existen hace bastante tiempo, sin embargo, ninguno es capaz de hacerlo como el creado por David Fifield que pasa de 42 MB a 4.5PB. Pero no solo esto, él va mas allá y decide hacerlo no recursivo lo cual permite que la “explosión” de datos se realice en una descompresión y no en una recursión.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="estructura-de-un-archivo-zip"&gt;
Estructura de un archivo ZIP
&lt;a href="#estructura-de-un-archivo-zip" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Un archivo zip es, básicamente, un archivo central que referencia a los otros archivos&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://www.bamsoftware.com/hacks/zipbomb/normal.svg%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://www.bamsoftware.com/hacks/zipbomb/normal.svg"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;El directorio central está al final del archivo zip. Es una lista de encabezados que contiene metadatos para un solo archivo, como su nombre de archivo y suma de verificación CRC-32, y un puntero hacia atrás a un encabezado de archivo local. Un encabezado de directorio central tiene 46 bytes de longitud, más la longitud del nombre del archivo.&lt;/p&gt;
&lt;p&gt;Un archivo consta de un encabezado de archivo local seguido de datos. El encabezado del archivo local tiene 30 bytes de longitud, más la longitud del nombre del archivo. Contiene una copia redundante de los metadatos del encabezado y los tamaños comprimidos y sin comprimir de los datos de archivo que siguen. Zip es un formato contenedor, no un algoritmo de compresión, por lo cual los datos de cada archivo se comprimen utilizando un algoritmo especificado en los metadatos, generalmente DEFLATE.&lt;/p&gt;
&lt;p&gt;Esta descripción del formato zip omite muchos detalles que no son necesarios para comprender la bomba zip. Más adelante explicaremos a fundo el funcionamiento y como crear tu propia bomba zip.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="descarga"&gt;
Descarga
&lt;a href="#descarga" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Aquí ofrecemos la descarga de 3 archivos que David dejo en su blog que son 3 bombas zip donde podemos ver su peso comprimido y su peso luego de la “explosión” o descompresión. De antemano no recomiendo utilizarlos para otra cosa que no sean fines científicos y obviamente sobre entornos controlados.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.bamsoftware.com/hacks/zipbomb/zbsm.zip" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
42 kB → 5.5 GB
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.bamsoftware.com/hacks/zipbomb/zblg.zip" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
10 MB → 281 TB
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.bamsoftware.com/hacks/zipbomb/zbxl.zip" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
46 MB → 4.5 PB (Zip64, less compatible)
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>La Clave de Facebook fue Filtrada</title><link>https://patojad.com.ar/post/2019/09/la-clave-de-facebook-fue-filtrada/</link><pubDate>Thu, 05 Sep 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/09/la-clave-de-facebook-fue-filtrada/</guid><description>&lt;h1 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="la-clave-criptográfica-de-facebook-filtrada"&gt;
La clave Criptográfica de Facebook Filtrada
&lt;a href="#la-clave-criptogr%c3%a1fica-de-facebook-filtrada" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;Una clave criptográfica (en este caso la que se utiliza para firmar aplicaciones) es como una credencial que nos permite confiar en una app. Esta clave es única por empresa y con eso podemos saber que si la clave coincide claramente esa aplicación corresponde a esa empresa. Sin embargo, en este caso corremos con algo en contra…&lt;/p&gt;
&lt;div class="text-center"&gt;&lt;blockquote class="twitter-tweet" data-lang="es" data-theme="dark" data-link-color="#ff8c00"&gt;&lt;p lang="es" dir="ltr"&gt;Se filtra una clave criptográfica usada por &lt;a href="https://twitter.com/hashtag/Facebook?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#Facebook&lt;/a&gt; para firmar sus aplicaciones. Ya se han detectado las primeras aplicaciones maliciosas firmadas con esta clave.&lt;br&gt;&lt;br&gt;Más información: &lt;a href="https://t.co/iijrowseUq"&gt;https://t.co/iijrowseUq&lt;/a&gt; &lt;a href="https://t.co/Ubi7yq0XV4"&gt;pic.twitter.com/Ubi7yq0XV4&lt;/a&gt;&lt;/p&gt;&amp;mdash; CSIRT-CV (@CSIRTCV) &lt;a href="https://twitter.com/CSIRTCV/status/1168831562194018305?ref_src=twsrc%5Etfw"&gt;3 de septiembre de 2019&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Ya se han detectado las primeras aplicaciones maliciosas firmadas con esta clave&lt;/p&gt;
&lt;p&gt;Las claves de firmado para aplicaciones son utilizadas para firmar digitalmente las aplicaciones y que se pueda comprobar que son originales, que no se han falsificado y que no se han modificado con fines fraudulentos. Estas claves son secretas y por ello deben custodiarse con cautela para evitar filtraciones como la de la presente noticia.&lt;/p&gt;
&lt;p&gt;Según se ha sabido, la clave utilizada por la empresa Facebook para firmar su aplicación Free Basics (antes “Internet.org”), ha sido filtrada por un error en su custodia, por lo que resulta posible crear copias modificadas de la aplicación, firmarlas, y que el usuario crea que se trata de la aplicación original.&lt;/p&gt;
&lt;p&gt;Como medida de corrección, la aplicación se ha retirado de la Play Store y se ha sustituido por una nueva que utiliza una clave de firmado diferente.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://wwwhatsnew.com/wp-content/uploads/2019/03/Facebook-1905890_1280-.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Como podemos ver ya se encuentra solucionado el problema en sí, sin embargo, nos deja la duda de si es posible que se filtren otras claves y obtengamos aplicaciones falsas con su firma. Si te ingresa saber más sobre esto te dejamos el articulo detallado con la información técnica en detalle de lo ocurrido en el siguiente &lt;a href="https://www.androidpolice.com/2019/08/29/cryptographic-key-used-to-sign-one-of-facebooks-android-apps-compromised/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Link
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>VoidLinux por José</title><link>https://patojad.com.ar/post/2019/09/voidlinux-por-jos%C3%A9/</link><pubDate>Mon, 02 Sep 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/09/voidlinux-por-jos%C3%A9/</guid><description>&lt;p&gt;Hoy les hablaré un poco sobre una distribución muy subvalorada a mi parecer, una distribución Linux que mucha gente ni siquiera habrá nombrado mencionar y muchos menos la conocen siquiera. Hoy les voy a hablar sobra la magnífica &lt;a href="https://www.voidlinux.org" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Void Linux
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Void Linux es una distribución de Linux absolutamente independiente, construida sobre Scratch – por lo que es un desarrollo totalmente original. Fue creada por el español Juan Romero Pardines y su primera versión fue lanzada en el año 2008. Utiliza un gestor de paquetes único también, denominado XBPS (X Binary Package System) el cual también fue diseñado e implementado desde cero. XBPS es un sistema de paquetes con licencia libre BSD con ciertas similitudes con pacman en su sintaxis y al igual que pacman es muy rápido.&lt;/p&gt;
&lt;p&gt;XBPS es capaz de manejar los mas de 6000 programas que están disponibles en los repos de Void Linux y es capaz de compilar directamente desde las fuentes del propio software (XBPSSRC). La compilación la realiza sin ser root necesariamente.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.ytimg.com/vi/hCgOsJ2cRTs/maxresdefault.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Void Linux es una distribución “rolling release”, que se distribuye en distintas .isos (32 y 64 bits) con una gran variedad de entornos de escritorio disponibles: hay imágenes .isos con: Cinnamon, LXQT, LXDE, MATE, XFCE y Enlightenment. También hay disponibles .isos sin entornos de escritorios disponibles, para quienes quieran armar un sistema a su medida.&lt;/p&gt;
&lt;p&gt;Otra de las mejores cualidades de Void Linux, es que utiliza Runit cómo su init, siendo una notable excepción al pésimo init de moda adoptado por la mayoría de las distribuciones hoy en día. Runit es un sistema mucho mas simple y mucho mas rápido que el tristemente famoso SystemD. De hecho, cuando probé la distribución me sorprendió lo veloz que iba el sistema y la velocidad de inicio (arrancando varios servicios del sistema en paralelo) y apagado (en todos los casos, superior al init desarrollado por Red Hat). Ojalá otras distribuciones adoptaran este init, es excelente sin dudas.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/04/Void-Linux-Neofetch.png?resize=800%2C562&amp;amp;ssl=1%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/04/Void-Linux-Neofetch.png?resize=800%2C562&amp;ssl=1"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;La instalación de Void Linux, me hace recordar a la mejor distribución que existe en la faz de la Tierra (opinión personal, claro). A la venerable Slackware. Todo se realiza en la terminal, no existen los instaladores gráficos en Void (nada de Calamares, Ubiquity u otros). Simplemente, se abre la terminal y se escribe sudo void-installer (la contraseña es voidlinux) y se van siguiendo los pasos en el orden que aparecen en la pantalla. No es complicada de instalar, pero recomiendo hacerlo siguiendo los innumerables tutoriales que se encuentran en toda la web tanto en páginas web cómo en videos que existen en YouTube.&lt;/p&gt;
&lt;p&gt;Void Linux fue la distribución pionera en la implementación de LibreSSL el cual es desarrollado por la gente de OpenBSD, sustituyendo a OpenSSL – es un fork del mismo, (recuerdan el desagradable episodio de inseguridad Heartbleed).&lt;/p&gt;
&lt;p&gt;Si todo lo que les he comentado en el presente artículo, les ha gustado… Recomiendo que le den una oportunidad y descarguen una imagen Live de la distro y la prueben. También otra particularidad mas que presenta Void Linux, es que cuando vayan a descargar la distro se van a topar con 2 tipos de imágenes: están las imágenes comunes las que contienen la biblioteca estándar en GNU/Linux (Biblioteca GNU C) proporcionada por GLIBC (cómo lo hacen todas las distribuciones Linux) y están las imágenes con MUSL la cual es otra biblioteca C mas estándar por llamarlo de alguna manera a la que se vincularán muchos programas FOSS. MUSL es más liviano y rápido que GLIBC, pero puede ser incompatible con cierto software que no está escrito estrictamente para el estándar C. El GLIBC es más grande y generalmente más lento, pero permite y puede acomodar software que no está escrito correctamente en el estándar C debido a su implementación más indulgente.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://i0.wp.com/techpadi.com/wp-content/uploads/2018/12/b7u0z2j3rloz.png?fit=1366%2C768%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://i0.wp.com/techpadi.com/wp-content/uploads/2018/12/b7u0z2j3rloz.png?fit=1366%2C768"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;&lt;a href="www.voidlinux.org/download/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
Descargar
&lt;/a&gt;&lt;/p&gt;
&lt;center&gt; Al final de la mencionada página, van a encontrar varios mirrors de descargas.&lt;/center&gt;
&lt;p&gt;Muy bien, esto ha sido todo por el momento. Como ya se habrán dado cuenta, no es obviamente una distribución Linux para todo el mundo, pero quienes busquen un sistema rápido, sin hinchazón de programas, muy novedoso y fiable, quizás Void Linux es lo que han estado buscando. Se los recomiendo. Hasta la próxima colegas….&lt;/p&gt;</description></item><item><title>La comunidad Opina: Los linuxnautas con Doña Estela</title><link>https://patojad.com.ar/post/2019/08/la-comunidad-opina-los-linuxnautas-con-do%C3%B1a-estela/</link><pubDate>Tue, 27 Aug 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/08/la-comunidad-opina-los-linuxnautas-con-do%C3%B1a-estela/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="caso-de-estudio"&gt;
Caso de Estudio
&lt;a href="#caso-de-estudio" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Estos días pusimos un caso hipotético para que los linuxnautas nos comenten que le recomendarían. Esta práctica nos da un paneo general sobre qué es lo que la comunidad recomienda, y que distribuciones de Linux se adecuan, según la comunidad, a la necesidad planteada:&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="doña-estela"&gt;
Doña Estela
&lt;a href="#do%c3%b1a-estela" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://domusrealtor.com/wp-content/uploads/2017/02/Anciana.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hoy traigo una incógnita, que distro le recomendarían a Doña Estela y porque:&lt;/p&gt;
&lt;p&gt;Doña estela es una señora mayor que tiene su modesto equipo que usa para ver las fotos de sus nietos que viajan por el mundo y las comparten en diáspora, también tiene 2 nietos más pequeños que vienen a buscar información y suelen jugar al Minecraft mientras ella les prepara la leche. Por cierto, también quiere usar esa vieja impresora que le dió su vecino Héctor.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
PatoJAD
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Este planteo es el que se postula con el fin de ver que es lo que piensa la comunidad sobre dicho tema. Puede que el estereotipo sea exagerado, pero apela a la creatividad de los linuxnautas.&lt;/p&gt;
&lt;h1 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="respuestas"&gt;
Respuestas
&lt;a href="#respuestas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;mint + minetest (minecraft opensource)&lt;/p&gt;
&lt;p&gt;si juegan a minecraft el ordenador es modesto pero puede hacer funcionar mint sin problemas, el interfaz es agradable y facil y minetest es una alternativa opensource a minecraft con multitud de mods y muy configurable que hara las delicias de los pequeños&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
David
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Qué tal Pato, buenos días gente. Viendo que no hay referencia exacta de las especificaciones de la máquina. Mi opcion sería MX-Linux 32 bits. Esto es porque desconozco lo anterior, si no, sería el de 64 bits. Y por último le pondría bien configurado Wine, playonlinux.&lt;/p&gt;
&lt;p&gt;Bueno, porque esa distro tiene buena comunidad, ha venido estebleciéndose. Basado en Debian, sin systemd, con muy buena estabilidad.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
🇻🇪 Alejandro F 🇻🇪
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/c4M5ptrk/distropedro.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;yo le propondia algo ultraligero como al estilo Linux Lite o una menos conocida como podria ser Nanolinux&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Pedro Crespo
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;hay varias opciones, mx linux, mint xfce, manjaro xfce. Creo que minecraft usa java, así que creo que corre en linux nativamente&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Santiago De Los Rios
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Cómo ejemplo, la semana pasada me trajeron una Netbook Samsung, la n150plus micro Atom y 1 GB de RAM, traía winxp y quería ver si se podía hacer algo, actualizar memoria era difícil xq no se consigue fácil, DDR2 sodimm entonces quedo descartado el upgrade de memoria, le pregunté que quería hacer con el equipo y me comentó que lo quería para ver diarios online, entonces le instalé Ubuntu mate y navegador palemoon y salió a pista y quedo conforme el cliente.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Julio Estudilla 🇦🇷
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Linux Mint Mate. Lo más parecido al innombrable y bastante ligero&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
jolnix
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Amigo por la facilidad que representa linux mint con xfce es ideal, ahora si te vas a tomar unas horas mas y le explicase algunas cosas como funcionan Devuan mate es fantástico&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Riky Linux
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Yo probaría MilagrOS en live y si todo le funciona, incluyendo la impresora, no Minecraft, le dejo esa que se instala en 15min y en teoria no habría que hacer mas nada sino usarla. Lo bueno, es que puedes probar como funciona en estabilidad y usabilidad sin instalarla. Es MX-Linux de 64bit actualizada hasta la versión 18.3. Yo la he corrido hasta en un Pentium 4 HT con 512MB. Se ejecuta bien, siempre que no habras un navegador, tu sabes que cualquier navegador consume solito 512MB o mas.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Linux Post Install LPI
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Pero tendría que usar algo como Xfce @PatoJAD para que así deje el mayor % de recursos al software o En este caso al Minecraft, bueno&amp;hellip; Minetest&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
🐧イエス🐧🎮
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Sino configuras algunas herramienta remoto o asistes presencialmente tendrás que ir regularmente (actualizar, permiso root y si me apuras, bloqueo de funciones anticrashers), en caso contrario, veo inviable que la señora mayor quiera/acceda a tomar conciencia de mantener una distro, por no hablar que lo ideal sería una Rolling release para no actualizar entre versiones cada X meses.&lt;/p&gt;
&lt;p&gt;Si lo anterior no te vale, SolusOS, fácil, sencilla y completa si uno quiere.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Miguel Ángel Laray
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Segun tu punto de vista no es viable un linux para una persona mayor? aunque el update sea visualmente (mint, deepin, ubuntu, y el 90% de als distros)&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
PatoJAD
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Habrá excepciones, pero el ejemplo concreto&amp;hellip; tiene nietos que conocerán los juegos y querrán instalarse de todo, (los amigos lo tienen, etc&amp;hellip;), la impresora se instala una vez, cierto, pero le vas a dejar Fedora 30, toda la vida¿? y lo más importante, en la escuela me han encargado esto y lo necesito en el PC, toma la contraseña root, busca info y apañatelas&amp;hellip;&lt;/p&gt;
&lt;p&gt;No digo que no se pueda, pero ese entorno que describes, requiere asistencia técnica&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Miguel Ángel Laray
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Windows tambien necesita asistenciA tecnica, o le dejas la misma version de windows de por vida?&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
radikal
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Efectivamente, nadie dijo lo contrario&amp;hellip; xD&lt;/p&gt;
&lt;p&gt;Sólo estoy dando mi punto de vista al acertijo&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Miguel Ángel Laray
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Y, la rama de las buntus no estaría mal, o Mint como te recomendaron&lt;/p&gt;
&lt;p&gt;Por otro lado, está Q4OS que te imita el escritorio de Win7, para casos extremos&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Iván W
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;¿Que pensas vos?¿Deja los comentarios que recomendarias vos a Doña Rosa? ¿Queres participar de nuestros debates? venite a nuestro canal de &lt;a href="https://t.me/PatoJADCommunity" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-telegram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Telegram
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Doki Doki Literature Club</title><link>https://patojad.com.ar/post/2019/08/doki-doki-literature-club/</link><pubDate>Thu, 22 Aug 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/08/doki-doki-literature-club/</guid><description>&lt;blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="hola-monika-aquí"&gt;
¡Hola, Monika aquí!
&lt;a href="#hola-monika-aqu%c3%ad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;¡Bienvenido al Club de Literatura! Siempre ha sido un sueño para mí hacer algo especial con las cosas que amo. ¡Ahora que eres miembro del club, puedes ayudarme a hacer realidad ese sueño en este lindo juego!&lt;/p&gt;
&lt;p&gt;Todos los días están llenos de chit-chat y actividades divertidas con todos mis adorables y únicos miembros del club:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sayori, el joven rayo de sol que valora más la felicidad;&lt;/li&gt;
&lt;li&gt;Natsuki, la chica engañosamente linda que tiene un golpe contundente;&lt;/li&gt;
&lt;li&gt;Yuri, el tímido y misterioso que encuentra consuelo en el mundo de los libros;&lt;/li&gt;
&lt;li&gt;&amp;hellip; Y, por supuesto, ¡Monika, la líder del club! ¡Ese soy yo!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estoy muy emocionado de que hagas amigos con todos y ayudes al Literature Club a convertirse en un lugar más íntimo para todos mis miembros. Pero ya puedo decir que eres una novia, ¿prometes pasar la mayor parte del tiempo conmigo? ♥&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Team Salvato
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;De esta forma se presenta ante todos nosotros su página en itch.io (perdón por no traducirlo manualmente y utilizar algo automático, pero no disponía del tiempo) junto a un video creado por nada más ni nada menos que la gente de Team Salvato. Cuyo video podemos verlo aquí&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/kB1663FTpzU?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;En mi vida hubiera pensado en jugar este juego, no me gustan las novelas visuales y menos las cosas cursis. Pero tras ver una serie de 3 videos (que sin ningún tipo de autorización pienso compartir) el juego demostró estar a otro nivel y mereció unas amplias horas de juegos.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://ddlc.moe/images/screen2.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://ddlc.moe/images/screen3.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://ddlc.moe/images/screen4.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://ddlc.moe/images/screen5.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El juego va tomando dinámica a medida que vamos eligiendo y vamos viendo cómo va tomando un giro inesperado. Si te cuesta comenzar con este juego por alguna especie de prejuicio te recomiendo ver estos 3 videos, aunque solo con el primero y la mitad del 2 alcanza para que nos pique el bicho de la curiosidad.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/8WllK9PYJ9w?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;iframe src='https://www.youtube.com/embed/4zMAG06dLJU?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;iframe src='https://www.youtube.com/embed/EDEBtGg2VaA?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;&lt;a href="https://store.steampowered.com/app/698780/Doki_Doki_Literature_Club/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Steam
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://teamsalvato.itch.io/ddlc" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
itch.io
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ddlc.moe/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
web
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dentro de itch.io podemos encontrar la versión para Linux la cual se adecua claramente a nuestro grupo de lectores y por supuesto la que yo use. No te olvides de contarnos que te pareció el juego&lt;/p&gt;</description></item><item><title>La comunidad Opina: Publicidad</title><link>https://patojad.com.ar/post/2019/08/la-comunidad-opina-publicidad/</link><pubDate>Mon, 19 Aug 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/08/la-comunidad-opina-publicidad/</guid><description>&lt;p&gt;Esta es la primera publicación (Aunque debo recalcar que en el pasado muchas debieron estar acá) que inaugura esta sección. Como un sitio comunitario nos vamos adaptando a la comunidad y creemos que nuestros debates (en este caso en nuestro grupo de &lt;a href="https://t.me/PatoJADCommunity" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-telegram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Telegram
&lt;/a&gt;) pueden colaborar con los lectores que no pertenezcan a este grupo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="bloqueador-de-publicidad"&gt;
Bloqueador de publicidad
&lt;a href="#bloqueador-de-publicidad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El debate en la comunidad se debió a un usuario realizando una consulta debido a que en este mismo blog apareció contenido para adultos (publicidad que ya removí e incluso realicé un reclamo).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pato, me salió publicidad para adultos en tu página jajaja&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Marcelino
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;¿No tienes un bloqueador de anuncios? yo uso ublock&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
🇻🇪 Alejandro F 🇻🇪
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Yo también uso ese bloqueador&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
José Luis G.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Aún no me ha pasado lo de las páginas +18&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
🇻🇪 Alejandro F 🇻🇪
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Si entras con el ublock no sale, pero sin ublock si salen&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
José Luis G.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Si, por eso pregunté. ¡Es que si no tienes una mínima protección te pillan anuncios fastidiosos!&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
🇻🇪 Alejandro F 🇻🇪
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Pues sí, muchas webs tienen anuncios bastaste molestos&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
José Luis G.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;Hasta este momento el debate fluia con una única ideología: “mantener las publicidades al margen de nuestra vida” Sin embargo hace tiempo que personalmente le di un uso diferete a los bloqueadores, y quise compartir mi punto de vista con el grupo.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;En algunos casos las Webs se sustentan con publicidad (ej mi blog) yo procuro que la publicidad no impida disfrutar del sitio, pero espero con esa publicidad conseguir un mejor host y un dominio que me permita ofrecer más cosas que solo un blog para los usuarios&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
PatoJAD
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(Si bien parece que solo defiendo mi blog mi idea era procurar la idea de que los sitios necesitan que estén ahí, en algunos casos)&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;En búsqueda del equilibrio. ¡Equilibrio de la fuerza! 😁&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
🇻🇪 Alejandro F 🇻🇪
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;En tu punto de vista, ¿las propagandas de PatoJAD son invasivas?&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
PatoJAD
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;No me he percatado. Suelo navegar siempre con bloqueador de anuncios. Son recursos necesarios para manutención del hospedaje (me refiero a webmaster hacer uso de publicidad). Pero hay sitios en los que son exageradamente persistentes.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
🇻🇪 Alejandro F 🇻🇪
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Coincido con eso, me molesta lo que es abuso&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
PatoJAD
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Hay paginas como por ejemplo &amp;ldquo;Así se ven los famosos despues de 100 años 😱&amp;rdquo; y son de dar &amp;ldquo;siguiente, siguiente&amp;rdquo; y mucha publicidad.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Marcelino
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Son embargo en blogs que recurrimos siempre o páginas que solemos visitar (sea cual sea) creo que está bueno tener desbloqueado yo lo hago porque se lo que cuesta&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
PatoJAD
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Sí, tengo excepciones mi amigo. ¡Como la tuya por ejemplo!&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
🇻🇪 Alejandro F 🇻🇪
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;3 Gracias!!!&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Yo procuro no entrar a esos tipos de sitios que tienen tanta publicidad y poca info, comprendo que es lo que cuesta tener un blog o &amp;ldquo;x&amp;rdquo; una de mis razones de no usar tanto bloqueador.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Marcelino
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;A partir de este momento solo nos reímos con las publicidades que aparecían, no me había percatado de lo que aparecía dado que a mí solo me figuraban videojuegos (ando en la búsqueda de algún juego nuevo para mis entretiempos).&lt;/p&gt;
&lt;p&gt;¿Qué opinas de las publicidades? ¿Las bloqueas en los sitios que lo merecen? Yo particularmente el desbloqueo de todos los sitios que dan buen contenido y/o comunidades en las que participo ¿Qué otras maneras deberían usar los blogs para sustentarse?&lt;/p&gt;</description></item><item><title>Valve quiere desarrollar para Linux, ¿Y la comunidad?</title><link>https://patojad.com.ar/post/2019/08/valve-quiere-desarrollar-para-linux-y-la-comunidad/</link><pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/08/valve-quiere-desarrollar-para-linux-y-la-comunidad/</guid><description>&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.blogs.es/3ceaaf/modo-juego/450_1000.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El revuelo reciente debido a la propuesta de valve a conformar parte de los desarrolladores del Kernel de Linux deja a muchas personas expresando disconformidad a una propuesta que no está 100% consolidada y como se me está haciendo costumbre aparezco entre las sombras con la idea de aclarar o postular un punto de vista más… Abstracto…&lt;/p&gt;
&lt;p&gt;La realidad es que la propuesta es el anillo al dedo de nuestro amigo TUX, La industria del juego (o al menos la corporación que más recauda en esta industria) decide encaminar al pequeño Linux en su pata faltante que es gaming. Sin embargo, es una realidad el temor que plantearon los usuarios sobre el uso de software privativo que esto podía suponer para nuestro sistema operativo.&lt;/p&gt;
&lt;p&gt;Por lo que se sabe de momento los desarrolladores simplemente optimizaran y mejoraran la compatibilidad sin la necesidad del uso de código privativo. Sin embargo, al SO final puede que aproveche mejor estas optimizaciones con el software privativo de STEAM. De mas esta decir que todos quieren llevar agua a su molino.&lt;/p&gt;
&lt;p&gt;Si sacamos este pequeño detalle el Kernel Seguiria siendo libre y tomaría un camino más óptimo a la optimización, compatibilidad y eso sería un nuevo fututo que a mano del nuevo ecosistema que GTK y KDE tienen planeado podría implicar un paso grande para el pequeño TUX&lt;/p&gt;
&lt;p&gt;¿Qué piensas?¿Qué opinas?&lt;/p&gt;</description></item><item><title>Agregar Cache a GIT para evitar loguear constantemente</title><link>https://patojad.com.ar/post/2019/04/agregar-cache-a-git-para-evitar-loguear-constantemente/</link><pubDate>Fri, 26 Apr 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/04/agregar-cache-a-git-para-evitar-loguear-constantemente/</guid><description>&lt;p&gt;Un repositorio git puede ser accedido utilizando distintos protocolos, de entre los cuales los más comunes son &lt;a href="https://patojad.com.ar/post/2023/10/claves-ssh-una-gu%c3%ada-completa-para-la-seguridad-en-conexiones-remotas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
SSH
&lt;/a&gt; y HTTPS.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.stack.imgur.com/5OBMZ.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;HTTPS tiene algunas ventajas sobre &lt;a href="https://patojad.com.ar/post/2023/10/claves-ssh-una-gu%c3%ada-completa-para-la-seguridad-en-conexiones-remotas/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
SSH
&lt;/a&gt;: Es más fácil de utilizar, porque no necesita la generación de un par de claves pública/privada, y normalmente no tiene problemas en atravesar firewalls y proxies. El inconveniente es que es necesario introducir el usuario y contraseña cada vez que se accede al repositorio remoto con una operación pull o push.&lt;/p&gt;
&lt;p&gt;Pero también es posible configurar git para que almacene estas credenciales y las utilice cuando sea necesario, sin solicitarlas cada vez.&lt;/p&gt;
&lt;p&gt;En este artículo se explica cómo realizar esta configuración en un sistema GNU/linux.&lt;/p&gt;
&lt;p&gt;La manera más sencilla de evitar que git solicite usuario y contraseña cada vez, es establecer un asistente de credenciales en la configuración de git (Algunos usuarios prefieren que se guarde por siempre pero no es muy seguro):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global credential.helper store&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Con esto, en el siguiente acceso que se realice al repositorio remoto, el usuario y contraseña introducidos quedan almacenados en un fichero &lt;code&gt;~/.git-credentials&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="http://noticias.universia.es/net/images/ciencia-tecnologia/-/-a/-ap/-aplicaciones-gratuitas-gestionar-contrasenas.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si nos preocupa que la contraseña quede guardada en el disco duro, podemos utilizar un asistente de credenciales “cache”. En este caso, la contraseña queda guardada en memoria, durante un tiempo limitado que se puede configurar (por defecto, 15 minutos). Por ejemplo, para utilizar este asistente, con una duración de una hora:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global credential.helper &lt;span class="s1"&gt;&amp;#39;cache --timeout=3600&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Una vez transcurrida una hora(en este caso con los 3600s), el siguiente acceso que se realice al repositorio volverá a solicitar usuario y contraseña. Recuerda que puedes cambialo por la cantidad de tiempo (en segundos) que desees que permanezca&lt;/p&gt;
&lt;p&gt;Fuente: OpenAlfa&lt;/p&gt;</description></item><item><title>PatoJAD Rest Client</title><link>https://patojad.com.ar/post/2019/04/patojad-rest-client/</link><pubDate>Wed, 10 Apr 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/04/patojad-rest-client/</guid><description>&lt;p&gt;¿Cuantas veces tenemos que testear una API? Y muchas veces lo hacemos desde equipos que no tienen los suficientes requisitos como para derrochar en una app solo para identificar un campo de respuesta.&lt;/p&gt;
&lt;p&gt;Ante esta necesidad un tanto especifica me decidí a buscar una app que realicé esto por mí, y como pasa con todo lo Open Source comencé a realizar cambios. No solo el diseño de esta web es la novedad, me dedique a optimizar y traer algo cómodo lindo y bonito que se pueda usar tanto desde un dispositivo móvil o desde una pc o Tablet.&lt;/p&gt;
&lt;p&gt;¿Qué te parece?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://rest.patojad.com.ar/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Ir a REST Client
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Comparte Libre</title><link>https://patojad.com.ar/post/2019/04/comparte-libre/</link><pubDate>Thu, 04 Apr 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/04/comparte-libre/</guid><description>&lt;p&gt;Comparte libre (así se llama esta instancia) fue iniciado por KIM (Licencia GPLv3) continuado por Victorhck (Quien tiene su instancia en GitLab) y finalmente fue continuado por dicha comunidad.&lt;/p&gt;
&lt;p&gt;Actualmente se encuentra en su theme oscuro para ser menos brusco con los cambios que usen templates con este tono. La idea del proyecto es que pueda compartirse el contenido en las diferentes redes sociales Libres (Diaspora, Mastodon, Hubzilla y GNU/Social). Desde un solo lugar y sin diferenciar entre instancias.&lt;/p&gt;
&lt;p&gt;Podemos ver en Gitlab el código y realizar nuestro propio fork para crear nuestra propia instancia o podemos utilizar la instancia que creamos para todos ustedes.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="como-usarlo-en-mi-wordpress"&gt;
¿Como Usarlo en mi Wordpress?
&lt;a href="#como-usarlo-en-mi-wordpress" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En Wordpress deberemos ir al menú &lt;code&gt;Ajustes -&amp;gt; Compartir&lt;/code&gt; y en el siguiente menú añadir lo necesario:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://victorhckinthefreeworld.files.wordpress.com/2014/01/diaspora2.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En Nombre del servicio: ponemos el texto que queremos que aparezca en nuestro botón ej: &amp;ldquo;Comparte Libre&amp;rdquo;&lt;/li&gt;
&lt;li&gt;En Compartiendo URL: pondremos lo siguiente: &lt;a href="https://compartelibre.patojad.com.ar/?text=%25post_title%25&amp;amp;url=%25post_url%25" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://compartelibre.patojad.com.ar/?text=%post_title%&amp;url=%post_url%
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;En URL del icono: la dirección de la imagen que quieres que se muestre como icono al lado del botón&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nos creará el botón y deberemos activarlo y guardar los cambios. Ya estará disponible en el blog para que quien lo visite pueda compartirlo en redes sociales libres.
Al pinchar en el botón, esto nos abrirá el servicio online con el texto y url y ya podremos compartir el contenido en las mencionadas redes sociales libres.&lt;/p&gt;
&lt;p&gt;El tutorial fue creado por &lt;strong&gt;Victorhck&lt;/strong&gt; a quien les estoy eternamente agradecido por este increible proyector&lt;/p&gt;</description></item><item><title>Telegra.ph</title><link>https://patojad.com.ar/post/2019/03/telegra.ph/</link><pubDate>Fri, 29 Mar 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/03/telegra.ph/</guid><description>&lt;p&gt;La época de una leyenda viva (a fecha de hoy) cuando hubo que mecanografiar entuertos tuvo nombre y apellido: &lt;em&gt;Remington&lt;/em&gt;, &lt;em&gt;Olivetti&lt;/em&gt;, &lt;em&gt;Olympia&lt;/em&gt;, &lt;em&gt;Hermes&lt;/em&gt;, &lt;em&gt;Imperial&lt;/em&gt;, y supongo que algunas mas habrían. &lt;br&gt;
La competencia nunca duerme. &lt;br&gt;&lt;br&gt;
Pibes que se dedicaron a fabricar el aparato que habían presentado los Británicos en el siglo &lt;font size="2"&gt;XIX&lt;/font&gt;.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;De a poco y acompañando a la &lt;em&gt;primera revolución industrial&lt;/em&gt;, la maquinola en cuestión se hizo un lugar hasta convertirse en un elemento habitué en el decorado de sitios donde se requería la escritura.&lt;br&gt;
Chiringuitos de la talla del teatro, el periodismo, la literatura, el cine &amp;hellip; &lt;br&gt;&lt;/p&gt;
&lt;p&gt;Pensar que la primera máquina de escribir fue montada sobre una &lt;em&gt;máquina de coser estándar.&lt;/em&gt;&lt;br&gt;
Eso dice la &lt;a href="https://es.wikipedia.org/wiki/M%C3%A1quina_de_escribir#Primer_%C3%A9xito_comercial,_Christopher_Sholes_y_Remington" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Wiki
&lt;/a&gt;.&lt;br&gt;
Yo le creo.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/yxdshyqS/Maquina-de-escribir-antigua-con-carro.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Entre los embrollos que traen los misterios, se han encontrado vestigios de la existencia de usuarios ansiosos por la próxima actualización de &lt;font size="3" color="teal"&gt;&lt;em&gt;LibreOffice&lt;/em&gt;&lt;/font&gt;&amp;hellip;&lt;/p&gt;
&lt;p&gt;Qué lo parió.&lt;/p&gt;
&lt;p&gt;Como siempre ha sucedido, el tiempo continuó su obra maestra y oootra vez, nos encuentra ante una &lt;font size="3"&gt;&lt;em&gt;actualización tecnológica&lt;/em&gt;&lt;/font&gt; que, entre otros diretes, amontona entre sus quehaceres a una aplicación cuyo nombre &lt;em&gt;coqueto&lt;/em&gt; de protocólo tecnológico la cita como: &lt;font size="3"&gt;&lt;em&gt;microplataforma de publicación&lt;/em&gt;&lt;/font&gt;, que permite crear publicaciones con texto e imágenes usando el navegador.&lt;br&gt;
Fue lanzada por &lt;em&gt;Telegram&lt;/em&gt; y se llama:&lt;/p&gt;
&lt;h1 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="telegraph"&gt;
Telegra.ph
&lt;a href="#telegraph" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;Cuando se accede a &lt;a href="https://telegra.ph" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Telegra.ph
&lt;/a&gt; se puede ver una especie de plantilla con campos que permite el ingreso de texto:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/DyPRfbR9/00-telegraph.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si se llenaran estos campos con los siguientes datos:&lt;/p&gt;
&lt;p&gt;&lt;font size="3" color="teal"&gt;&lt;em&gt;Title:&lt;/em&gt;&lt;/font&gt; Prueba sobre Telegraph.&lt;br&gt;
&lt;font size="3" color="teal"&gt;&lt;em&gt;Your name:&lt;/em&gt;&lt;/font&gt; Tano.&lt;br&gt;
&lt;font size="3" color="teal"&gt;&lt;em&gt;Your story:&lt;/em&gt;&lt;/font&gt; Cuentos de antes y de ahora sobre tecnología de escritura.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Tendríamos también la posibilidad de imprimirle una edición de texto muy sencillo, como por ejemplo &lt;font size="3" color="black"&gt;&lt;strong&gt;&lt;/strong&gt;Negrita&lt;/font&gt; o &lt;font size="3" color="black"&gt;&lt;em&gt;Itálica&lt;/em&gt;&lt;/font&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/vTBx1n30/02-telegraph.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si pulsamos &lt;em&gt;Enter&lt;/em&gt; cuando estamos escribiendo, se tendrá el mismo efecto que al hacerlo en un procesador de texto » provoca un salto de línea y retorno de carro.&lt;br&gt;
Y nos aparecerán dos íconos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Una máquina fotográfica.&lt;/li&gt;
&lt;li&gt;Dos paréntesis angulares (de cierre y de apertura).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/7PG2y3JL/04-telegraph.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Clicando sobre el ícono de la cámara se abre una ventana de &lt;em&gt;path&lt;/em&gt; que nos permitirá elegir la imágen a subir:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/CKgZGXcB/03-telegraph.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Una vez terminada la edición, damos un clic en &lt;em&gt;Publish&lt;/em&gt; y nos aparecerá la obra de arte terminada, con un dato que nos interesa recuperar: la dirección web (url) que habremos de pegar luego en -por ejemplo- &lt;em&gt;Telegram&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/6pY3Zq4S/06-telegraph.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La &lt;em&gt;url&lt;/em&gt; incluye el &lt;em&gt;Título&lt;/em&gt; y la fecha al momento de la edición.&lt;br&gt;
En la edición del post se pueden incluir texto e imágenes (como ya vimos), videos de YouTube o Vimeo y links de:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Twitter.&lt;/li&gt;
&lt;li&gt;Archivos, GIF&amp;rsquo;s y fotos de canales de Telegram.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta plataforma usa el editor estilo &lt;font size="3" color="green"&gt;&lt;em&gt;WYSIWYG (lo que ves es lo que obtienes)&lt;/em&gt;&lt;/font&gt;, implementado también por procesadores de texto como &lt;font size="3" color="teal"&gt;&lt;em&gt;LibreOffice&lt;/em&gt;&lt;/font&gt;.&lt;/p&gt;
&lt;p&gt;&lt;font size="5" color="red"&gt;&lt;em&gt;T&lt;/em&gt;&lt;/font&gt;&lt;font size="4" color="olive"&gt;elegraph&lt;/font&gt; permite editar publicaciones que hayamos hecho si todavía estan las &lt;em&gt;cookies&lt;/em&gt; de la sesión de navegador, con la consabida salvedad que al perder las &lt;em&gt;cookies&lt;/em&gt; se pierden también los permisos de edición sobre el post.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Una forma de solventar esta instancia es creando una cuenta de &lt;font size="5" color="red"&gt;&lt;em&gt;T&lt;/em&gt;&lt;/font&gt;&lt;font size="4" color="olive"&gt;elegraph&lt;/font&gt; usando el bot &lt;a href="https://t.me/telegraph" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-telegram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
@Telegraph
&lt;/a&gt;.&lt;br&gt;
Para llevar a cabo este proceso, tenemos que escrbir &lt;font size="3" color="red" face="courier"&gt;/start&lt;/font&gt; y el robot ofrecerá sus dones para guiarnos en la creación de la cuenta.&lt;/p&gt;
&lt;p&gt;No se tiene noticia que esta aplicación haya dado paso a un nuevo Manuel de Cervantes Saavedra, pero si que de la &lt;em&gt;Olivetti&lt;/em&gt; a &lt;font size="5" color="red"&gt;&lt;em&gt;T&lt;/em&gt;&lt;/font&gt;&lt;font size="4" color="olive"&gt;elegraph&lt;/font&gt; hay un salto cualitativo de la san ostia.&lt;/p&gt;
&lt;p&gt;Por si te querés pegar una vuelta, &lt;a href="https://t.me/PatoJADCommunity" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-telegram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
aqui
&lt;/a&gt; nos juntamos todos los dias.&lt;br&gt;
Como para no perder el vicio de escribirnos.&lt;/p&gt;</description></item><item><title>Música y Desarrollo 2</title><link>https://patojad.com.ar/post/2019/03/m%C3%BAsica-y-desarrollo-2/</link><pubDate>Mon, 25 Mar 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/03/m%C3%BAsica-y-desarrollo-2/</guid><description>&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sonidos-y-código"&gt;
Sonidos y Código.
&lt;a href="#sonidos-y-c%c3%b3digo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="sonidos"&gt;
Sonidos.
&lt;a href="#sonidos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Veníamos de &lt;a href="https://patojad.com.ar/post/2019/02/m%c3%basica-y-desarrollo-1/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
aquí
&lt;/a&gt;.
Había quedado como tema de continuación, la reproducción de audio en entornos GNU/Linux&lt;/p&gt;
&lt;p&gt;Lo que aqui se observe, es &lt;em&gt;mi caso de uso&lt;/em&gt;. Y nada mas que eso.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="reproducción-multimedia-en-gnulinux"&gt;
Reproducción Multimedia en GNU/Linux
&lt;a href="#reproducci%c3%b3n-multimedia-en-gnulinux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Hay una lista soberbia de programas dedicados a tal fin, con interface gráfica algunos, para interface de línea de comandos otros.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;VLC Media PLayer&lt;/em&gt; es un verdadero animal reproductor a la hora de guapear diretes sonoros. Conozco poco prontuario, pero tampoco es mi única opinión, este &lt;em&gt;gigante&lt;/em&gt; libre como el viento y de código abierto tira fuego por el caño de escape sin necesidad de instalar códecs y reproduce un listado de formatos que de poco nada tiene, lleva licencia &lt;em&gt;GPLv2.1&lt;/em&gt;, puede correr sobre &lt;em&gt;GNU/Linux&lt;/em&gt;, &lt;em&gt;Windows&lt;/em&gt;, &lt;em&gt;macOS&lt;/em&gt;, Flia. &lt;em&gt;BSD&lt;/em&gt;, &lt;em&gt;Solaris&lt;/em&gt;, &lt;em&gt;Android&lt;/em&gt;, ¡ Ostia !, falta instalarlo en un reloj a cuerda y estamos todos.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/2ybgwjTr/vlc-void.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Este Pibe camina bien en serio.&lt;/p&gt;
&lt;p&gt;La &lt;em&gt;lista soberbia&lt;/em&gt; de reproductores en GNU/Linux no se reduce a la friolera suma de un solo reproductor. Es el único que conozco.
No es que haya sido dura mi vida, me quedo con lo que funciona bien. Tampoco hay mas.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="los-otros-"&gt;
Los &lt;em&gt;otros&lt;/em&gt; &amp;hellip;
&lt;a href="#los-otros-" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;&amp;hellip; que no tienen interface gráfica y que conozoco, son:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;mpd ncmpcpp&lt;/li&gt;
&lt;li&gt;moc&lt;/li&gt;
&lt;li&gt;mpv&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="1-mpd-ncmpcpp"&gt;
1. &lt;em&gt;mpd ncmpcpp&lt;/em&gt;
&lt;a href="#1-mpd-ncmpcpp" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;&lt;em&gt;mpd&lt;/em&gt; es el servidor de audio, que si bien no será &lt;em&gt;VLC Media Player&lt;/em&gt;, tengo que admitir que se defiende como gato panza arriba. Soporta formatos tales como &lt;em&gt;Ogg Vorbix&lt;/em&gt;, &lt;em&gt;FLAC&lt;/em&gt;, &lt;em&gt;Opus&lt;/em&gt;, &lt;em&gt;WavPack&lt;/em&gt;, &lt;em&gt;MP2&lt;/em&gt;, &lt;em&gt;MP3&lt;/em&gt;, &lt;em&gt;MP4&lt;/em&gt;, &lt;em&gt;AAC&lt;/em&gt;, puede transmitir sonido via streamming usando el protocolo HTTP, o en otras palabras, se puede gestionar el servidor de sonido a través de la red. &lt;br&gt; &lt;em&gt;ncmpcpp&lt;/em&gt; es el cliente del servidor anterior. Esto quiere decir que una vez ejecutado el motor de audio &lt;em&gt;(mpd)&lt;/em&gt;, con escribir el comando &lt;em&gt;ncmpcpp&lt;/em&gt; en la terminal, ya tendríamos el reproductor corriendo, con lo que se vería algo parecido a esto:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/DZ8BLjyX/2019-02-14-20-17-14-1280x720.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="2-moc"&gt;
2. &lt;em&gt;moc&lt;/em&gt;
&lt;a href="#2-moc" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Es un clasicazo de esos que uno lleva clavado en el pecho. &lt;br&gt;Juntos atravesamos épocas y devenires. Le guardo un cariño de la ostia. &lt;br&gt;Es un fierrazo, incolgable y pesa menos que un saquito de te. Lo cito aqui con captureta incluída, ya que nobleza obliga.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/yNWFbJ4q/2019-03-26-17-40-22-1280x720.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="3-mpv"&gt;
3. &lt;em&gt;mpv&lt;/em&gt;
&lt;a href="#3-mpv" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Sería lógico pensar que luego de mencionar a &lt;em&gt;VLC Media Player&lt;/em&gt;, es un acto osado citar a un reproductor de video y sonido como &lt;em&gt;mpv&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Es aqui donde rompo una lanza en favor de este último. &lt;br&gt;
Que no tenga una interface gráfica por defecto acorde a la ceremonia &lt;em&gt;VLC&lt;/em&gt; no significa que haya que dejarlo de lado, No Señor. Es tan potente como el mencionado rey del trono en esta entrada, pero un quilombo peliagudo manejarlo hasta que no se dominan los modificadores que hay que escribir en la terminal para que empiece a mostrar de una vez por todas el bendecido video en cuestión.&lt;/p&gt;
&lt;p&gt;Desde que aprendí a manejarlo, mi vida sigue igual, a que negarlo, pero anda como los dioses de bien (que no es poco) y lo declaro fiel ladero del aqui escribiente.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/YSqHKHbB/mpv-void.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;He mencionado cuatro excelentes reproductores multimedia, &lt;em&gt;Buenos Muchachos&lt;/em&gt; todos.&lt;br&gt;
Una reseña breve de mi paso por este mundo escuchando cosas que canta el Querido Pingüino.&lt;/p&gt;
&lt;h1 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="antes-que-me-olvide"&gt;
Antes que me olvide
&lt;a href="#antes-que-me-olvide" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;&lt;a href="https://t.me/PatoJADCommunity" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-telegram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Aqui
&lt;/a&gt; nos juntamos cuando tenemos tiempo, charlamos sobre la vida, las cacharras y algún que otro detalle mientras escuchamos la música que a &lt;em&gt;caduno&lt;/em&gt; le gusta usando por supuesto, el Reproductor Multimedia que se tenga instalado.&lt;/p&gt;</description></item><item><title>Alternativa a Krunner</title><link>https://patojad.com.ar/post/2019/03/alternativa-a-krunner/</link><pubDate>Thu, 21 Mar 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/03/alternativa-a-krunner/</guid><description>&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://www.kdeblog.com/wp-content/uploads/2010/05/krunner-main-image.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;De KDE podemos destacar muchas cosas, hoy vamos a hablar de KRunner una aplicación que fue pensada 100% para la comodidad del usuario. Para quien no lo conozca, en KDE nosotros podemos tocar ctrl + space y nos abre un input que nos permite buscar aplicaciones, ejecutar un comando de la terminal etc… Si bien no suena como algo útil, es realmente muy útil y nos optimiza mucho el tiempo de uso de nuestro equipo.
Me paso después de mucho tiempo de usarlo que otras distros me resultaban vuelteras y molestas dado que no contenían dicha funcionalidad, y el instalarlo en distribuciones no KDE me llevaban a instalar muchas dependencias.&lt;/p&gt;
&lt;h1 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="alternativas-a-krunner"&gt;
Alternativas a KRunner
&lt;a href="#alternativas-a-krunner" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;Durante mucho tiempo iniciamos una búsqueda de las mejores opciones y traemos dos, que se adaptan a todos los tipos de uso. Ambos se probaron en diferentes circunstancias (junto a otras alternativas) para llegar a la información que les traemos hoy.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="ulauncher"&gt;
Ulauncher
&lt;a href="#ulauncher" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/FRxvXvkD/photo-2019-03-21-09-36-11.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Esta aplicación es la primera recomendación, tiene una interfaz muy intuitiva y es simple de usar. Nos permite migrar entre diferentes temas oscuros y claros para que se integre mejor con nuestro escritorio. Esta opción es la más linda, al escribir nos muestra los iconos y nombres de las apps que machan con nuestra búsqueda y trae un menú de configuraciones integrado que nos hace fácil editar su configuración.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/0jWqrCfS/photo-2019-03-21-09-36-14.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/x8T20ZKY/photo-2019-03-21-09-36-17.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Para instalarlo debemos descargar el instalador correspondiente de su &lt;a href="https://ulauncher.io/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
página
&lt;/a&gt; (deb, rpm o aur) y seguir con el proceso de instalación que recomiendan en la página.&lt;/p&gt;
&lt;p&gt;Es recomendable entrar a la configuración y seleccionar la opción para que inicie con el sistema operativo para ahorrarnos un paso.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="dmenu"&gt;
Dmenu
&lt;a href="#dmenu" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Otra de las pruebas se realizó en un equipo más modesto de recursos, donde el costo de mantener ulauncher se notaba. En este punto decidimos probar dmenu una aplicación que cumple exactamente la misma función, pero “sin tanta chicha”. Dmenu nos permite obtener esta misma función, pero no cuenta con themes ni mucha interfaz con iconos, simplemente se ejecuta se busca y se ejecuta&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://blog.desdelinux.net/wp-content/uploads/2011/10/dmenu-160408.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Dmenu sueles estar en los repositorios de la mayoría de las distribuciones, por lo cual basta con buscarlo y realizar la instalación (ej sudo apt install dmenu)&lt;/p&gt;</description></item><item><title>Estranged I y II Free</title><link>https://patojad.com.ar/post/2019/03/estranged-i-y-ii-free/</link><pubDate>Tue, 19 Mar 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/03/estranged-i-y-ii-free/</guid><description>&lt;iframe src='https://www.youtube.com/embed/08gE99Nucto?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;En esta oportunidad tenemos este impecable juego que viene con la novedad de su seguna parte como acceso anticipado. En esta segunda parte podemos seguir con la aventura de nuestro protagonista esta vez con un crecimiento importante en el desarrollo y el tiempo dedicado a esta segunda entrega&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://steamcdn-a.akamaihd.net/steam/apps/582890/ss_be3dc947a7dfc521ad4cccdffdc92b37d62c8a0f.600x338.jpg?t=1552600294%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-steam" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
https://steamcdn-a.akamaihd.net/steam/apps/582890/ss_be3dc947a7dfc521ad4cccdffdc92b37d62c8a0f.600x338.jpg?t=1552600294"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sobre-el-juego"&gt;
Sobre el juego
&lt;a href="#sobre-el-juego" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Estranged cuenta la historia de un pescador solitario, cuyo barco queda varado en una isla misteriosa durante una violenta tormenta.&lt;/p&gt;
&lt;p&gt;Explora los ricos ambientes y conoce a los curiosos habitantes de la isla mientras buscas un camino de regreso a tierra firme. Planta cara al riesgo y a la intriga en esta peligrosa aventura, donde pronto te darás cuenta de que no todo es tan normal como parece.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="características"&gt;
Características:
&lt;a href="#caracter%c3%adsticas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Insólita jugabilidad e historia - El juego cuenta con alrededor de una hora de aventuras impulsadas por una historia. Incluye un elenco completamente original, con un guión cuidadosamente elaborado para traer el mundo de Estranged a la vida.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Gráficos alucinantes - Estranged se basa en el mismo motor gráfico que Half-Life 2, con algunas características adicionales. Hemos ampliado el sistema de iluminación dinámica, lo que nos permite iluminar nuestros niveles de una manera realista. Además, hemos incluido efectos tales como el granulado de película y el reflejo en la lente para ayudar a crear ambiente en el juego.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Banda sonora original - La banda sonora ha sido compuesta especialmente para Estranged y fue diseñada junto a los niveles del juego. La música concuerda con la jugabilidad y ayuda a conjugar la atmósfera de Estranged para llevar la historia a la vida.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;![](&lt;a href="https://steamcdn-a.akamaihd.net/steam/apps/582890/ss_43e3996ffa64c8d7b818bcb990f1d73c7c567b2b.600x338.jpg?t=1552600294%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-steam" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
https://steamcdn-a.akamaihd.net/steam/apps/582890/ss_43e3996ffa64c8d7b818bcb990f1d73c7c567b2b.600x338.jpg?t=1552600294"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="requisitos"&gt;
Requisitos
&lt;a href="#requisitos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;SO: Ubuntu 16.04 LTS and above, fully updated&lt;/li&gt;
&lt;li&gt;Procesador: Quad-core Intel or AMD, 2.5 GHz&lt;/li&gt;
&lt;li&gt;Memoria: 4 GB de RAM&lt;/li&gt;
&lt;li&gt;Gráficos: GeForce GTX 470 and above with NVIDIA drivers&lt;/li&gt;
&lt;li&gt;Almacenamiento: 10 GB de espacio disponible&lt;/li&gt;
&lt;li&gt;Notas adicionales: Requires newer hardware than Act I, AMD GPUs may work but are not supported&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(Los requisitos del primero son menores)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Procesador: 2.2 GHz Processor&lt;/li&gt;
&lt;li&gt;Memoria: 1024 MB de RAM&lt;/li&gt;
&lt;li&gt;Gráficos: NVIDIA GeForce 8 or higher, ATI X1600 or higher&lt;/li&gt;
&lt;li&gt;Almacenamiento: 6 GB de espacio disponible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;![](&lt;a href="https://steamcdn-a.akamaihd.net/steam/apps/261820/ss_3a9a4e2ec4f0a14a901594f0270e93dc0f4afd7d.600x338.jpg?t=1515275082%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-steam" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
https://steamcdn-a.akamaihd.net/steam/apps/261820/ss_3a9a4e2ec4f0a14a901594f0270e93dc0f4afd7d.600x338.jpg?t=1515275082"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;p&gt;El segundo juego es la continuación del primero (Es ideal jugarlo para entender el mundo en el que estamos) y un juego muy recomendable. El progreso del juego está muy bien logrado y la hambientalizacion es digna de dedicarle nuestros mejores auriculares y una habitación obscura para la completa inmersión en este título.&lt;/p&gt;
&lt;div class="text-center"&gt;
&lt;iframe
src='https://store.steampowered.com/widget/261820/'
width="646"
height="190"
title="Juego en Steam"
style="border-radius:20px;"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;div class="text-center"&gt;
&lt;iframe
src='https://store.steampowered.com/widget/582890/'
width="646"
height="190"
title="Juego en Steam"
style="border-radius:20px;"&gt;
&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Libre Office y MSOffice</title><link>https://patojad.com.ar/post/2019/03/libre-office-y-msoffice/</link><pubDate>Thu, 14 Mar 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/03/libre-office-y-msoffice/</guid><description>&lt;p&gt;El día de ayer se armó un hermoso debate en la comunidad del Maratón Linuxero en base a un video compartido el cual podemos ver a continuación.
&lt;iframe src='https://www.youtube.com/embed/x2RpwQmBe-c?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Muchos conocemos ya a &amp;ldquo;Switched to Linux&amp;rdquo; por lo cual vamos a proceder a ver el debate&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/jSVC7kjR/debate.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;nop&lt;/p&gt;
&lt;p&gt;libreoffice siempre ha tratado de parecerse a MSoffice&lt;/p&gt;
&lt;p&gt;aunque ambos son buenos word siempre esta un paso adelante&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;No es así No siempre Ultimamente da la opción de interfaz Ribbon pero no predefinida. Quizá si WPS Office, pero no LibreOffice. Prefiero LibreOffice Writer y concuerdo con las ventajas expuestas por el autor del canal Switch to Linux. Por otra parte, el que si puede llegar a tener más funcionalidades etc. es Ms. Excel respecto de LibreOffice Calc.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Roberto Ronconi 🐃🐧
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;No creo que LibreOffice busque parecerse, han tenido muchas iniciativas en otras direcciones pero sería necio no considerar las necesidades de los usuarios. Si solo quisieran parecer M$O hace rato tendrían la interface resuelta. Sería igual. En lugar de eso nos han ofrecido toda una paleta de opciones con posibilidad de personalización.&lt;/p&gt;
&lt;p&gt;¿se justifica que se parezca a M$O? desde el punto de vista de un sysadmin que trabaja con personas con poco interés en aprender, por supuesto que sí.&lt;br&gt;
Nos ahorraríamos las discusiones de la conveniencia del despliegue e implementación de la herramienta con la principal excusa de los usuarios para oponerse. &amp;ldquo;libreoffice no hace ésto o aquello solo por no saber cómo, no encontrar el botón o el resultado no se ve como en M$O&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;¡M$O tiene opciones que no están en LibreOffice! por supuesto. ¿cuantas personas se valen de esas funciones? ¿son indispensables? ¿existe alternativas?
Cada caso es diferente, sin embargo, estoy seguro que en la mayoría de las organizaciones LibreOffice cubrirá las necesidades al 100% y con las ventajas que conlleva el uso de formatos (odf) realmente abiertos.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Julian David Montoya Restrepo
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Hace mucho que puedes hacer documentos profesionales (tesis de grado, monográficas, artículos científicos, incluso hay editoriales que aceptan documentos elaborados en writter&amp;hellip; Yo no le veo ninguna limitación cubre la mayor parte de las necesidades que una suite ofimática puede ofrecer. ¿Que la mayor parte de la configuración las tengas que hacer manualmente? 😱&amp;hellip; Ooh bueno eso es cuestión de dominarlo y poner el granito de arena&amp;hellip; 👌)&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
drkgzz drkgzz
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;La única diferencia grande y que puede ser algo molesta, que he visto de writer respecto a Word, es el manejo de encabezado y pie de página. En Word lo veo mucho más cómodo de utilizar, en lo demás solo es necesario un pequeño proceso de adaptación. Además Libreoffice tiene una ventaja bastante grande respecto Office y que me ha pasado varias veces, es en la instalación.&lt;/p&gt;
&lt;p&gt;Si quieres instalar Libreoffice lo busco en los repositorios de mi distro, fácil y rápido, solo depende de la velocidad de conexión, si quiero instalar Office, necesito tener un CD o pendrive donde tenga el instalador o descargarme la versión desde su web y después instalar, aunque el proceso es fácil requiere más pasos y tiempo.&lt;/p&gt;
&lt;p&gt;Como han dicho antes, donde veo más diferencias es entre Calc y Excel,aunque cada vez esa diferencia es menor.&lt;/p&gt;
&lt;p style="text-align: right;"&gt;
Jose Jimenez
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Tras estos puntos de vista podemos ver la diversidad que se genera a pensando en un tema y lo importante que es escuchar a los demás…&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/pX5pytR0/Libre-Office.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Libre Office es una aplicación que lleva mucho tiempo y camino recorrido, en su largo tiempo llego a niveles increíbles y poco tiene que envidiarle a la competencia. Hoy la podemos tomar como una de las aplicaciones de Offimatica más estables y ligeras. A esto tenemos que sumarle su completísima suite que nos permite crear contenido a nuestro propio gusto.&lt;/p&gt;
&lt;p&gt;¿Qué piensas del video? ¿Qué piensas de Libre Office?&lt;/p&gt;</description></item><item><title>30 años de la World Wide Web!</title><link>https://patojad.com.ar/post/2019/03/30-a%C3%B1os-de-la-world-wide-web/</link><pubDate>Tue, 12 Mar 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/03/30-a%C3%B1os-de-la-world-wide-web/</guid><description>&lt;p&gt;En el 30° aniversario de la creación de la World Wide Web (WWW), lo que conocemos como Web o como la &amp;ldquo;triple W&amp;rdquo;. Comúnmente se suele confundir al término que se celebra hoy (WWW) con Internet, pero vale aclarar que no son lo mismo. Internet es la red de redes, mientras que la WWW es el sistema que se utiliza para acceder a esta red.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/rmB5SCpX/hb-patojad.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;El ingeniero británico Tim Berners-Lee presentó un día como hoy de 1989 una propuesta titulada &amp;ldquo;Gestión de la información: una propuesta&amp;rdquo;. Imaginaba una gran base de datos de hipertextos con enlaces mecanografiados para ayudar a sus colegas del CERN, un laboratorio de física nuclear suizo, a compartir información entre varias computadoras.&lt;/p&gt;
&lt;p&gt;Fue el jefe de Berners-Lee quien le dio tiempo para desarrollar el humilde diagrama de flujo en un modelo funcional, escribiendo el lenguaje &lt;a href="https://patojad.com.ar/post/2023/08/html-el-lenguaje-fundamental-de-la-web/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
HTML
&lt;/a&gt;, la aplicación HTTP y WorldWideWeb.app, el primer navegador web y editor de páginas. En 1991, los servidores web externos estaban en funcionamiento.&lt;/p&gt;
&lt;p&gt;Según explicó el ingeniero en un video y en una carta abierta para conmemorar el aniversario, él propuso un &amp;ldquo;vago pero emocionante espacio, libre y abierto, para que toda la humanidad pudiera compartir ideas y conocimientos&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;La Web revolucionó el mundo tal como se conocía hasta ese momento y dio inicio a la era de la información. Hoy en día, hay casi 2 mil millones de sitios web en línea. &amp;ldquo;Hay muy pocas innovaciones que realmente lo han cambiado todo&amp;rdquo;, dijo Jeff Jaffe, CEO de World Wide Web Consortium. Y agregó: &amp;ldquo;La web es la innovación más impactante de nuestro tiempo&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Gracias a esta hermosa historia hoy todos nosotros podemos estar leyendo esto, buscando noticias, revisar perfiles de amistades o familiares, buscar trabajo, entre otras tantas cosas que nos permite el mundo WWW (web)&lt;/p&gt;</description></item><item><title>Como usar dd</title><link>https://patojad.com.ar/post/2019/03/como-usar-dd/</link><pubDate>Fri, 08 Mar 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/03/como-usar-dd/</guid><description>&lt;p&gt;Muchas nos preguntamos cuál es la mejor APP para armar nuestros USB booteables&amp;hellip; En los grupos encontramos muchas respuestas diferentes y cada uno con su fanatismo.&lt;/p&gt;
&lt;p&gt;La realidad de esto es que puede fallar en cualquier momento no existe una app perfecta ni siquiera lo preferida (etcher) que es a mí parecer la que mejor funciona se salva de algún que otro error&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="entonces-que-usamos"&gt;
Entonces&amp;hellip; ¿Que usamos?
&lt;a href="#entonces-que-usamos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;La respuesta corta a esta pregunta es &amp;ldquo;cualquiera&amp;rdquo; y la larga &amp;ldquo;cualquiera que te guste&amp;rdquo; sin embargo hoy vamos a explicar cuál debemos usar cuando nuestra app preferida falla. Imagino que muchos ya se imaginan que estamos hablando de la terminal y el famoso comando “dd”&lt;/p&gt;
&lt;p&gt;Para usarlo basicamebte debemos hacer&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dd &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;origen &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;destino&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Donde if significa input file (archivo de entrada), es decir, lo que se quiere copiar (iso, cd, etc..) y of significa output file (archivo de salida), o sea, el archivo destino (donde se van a copiar los datos).
Tanto el origen como destino pueden ser dispositivos (lectora de CD o DVD, disco duro, diskettera, pendrive, partición, etc.), archivo de copia de seguridad o imagen de disco, etc, pero no carpetas o subcarpetas.&lt;/p&gt;
&lt;p&gt;Uno de los principales problemas a la hora de usar dd es que no comprendemos bien nuestros discos (/dev/sda1, sdb1, etc…) y es importante comprender bien que disco estamos señalando (más que nada en of donde vamos a estar escribiendo los datos), para asegurarnos correctamente cuales son los discos que vamos a usar podemos simplemente utilizar cualquier gestor de particiones grafico (por ejemplo, gparted) o el comando&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fdisk –l&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;El único “problema” de este comando básico es que no deja una incertidumbre de cuanto falta, cómo va el proceso y demás… Recordemos que no nos da un feedback de lo que está pasando mientras se está grabando.&lt;/p&gt;
&lt;p&gt;Esto se puede solucionar con un pequeño cambio en el comando original que nos mostrara como va ocurriendo todo:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dd &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;origen &lt;span class="p"&gt;|&lt;/span&gt;pv&lt;span class="p"&gt;|&lt;/span&gt;dd &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;destino&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Como resultado obtendríamos en el terminal una especie de barra de progreso, la información sobre bytes transferidos, el tiempo que lleva ejecutándose y la tasa de transferencia, todo esto en tiempo real.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;(&lt;/span&gt; alf &lt;span class="o"&gt;)&lt;/span&gt; - &lt;span class="o"&gt;(&lt;/span&gt; ~ &lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└──┤ dd &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/devmmcblk0p1 &lt;span class="p"&gt;|&lt;/span&gt;pv&lt;span class="p"&gt;|&lt;/span&gt;dd &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/mmcblk0p2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1,630GB 0:21:30 &lt;span class="o"&gt;[&lt;/span&gt;1,12MB/s&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Además al terminar nos muestra estadísticas de la tasa de transferencia, el total de bytes transferidos y el tiempo total que tardó en transferir todos los datos.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;(&lt;/span&gt; alf &lt;span class="o"&gt;)&lt;/span&gt; - &lt;span class="o"&gt;(&lt;/span&gt; ~ &lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└──┤ dd &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/devmmcblk0p1 &lt;span class="p"&gt;|&lt;/span&gt;pv&lt;span class="p"&gt;|&lt;/span&gt;dd &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/mmcblk0p2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;10530816+0 registros leídos &amp;lt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;10530816+0 registros escritos
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;5391777792&lt;/span&gt; bytes &lt;span class="o"&gt;(&lt;/span&gt;5.4 GB&lt;span class="o"&gt;)&lt;/span&gt; copiados, 3873,48 s, 1,4 MB/s
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5,02GB 1:04:33 &lt;span class="o"&gt;[&lt;/span&gt;1,33MB/s&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &amp;lt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;10530816+0 registros leídos &amp;lt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;10530816+0 registros escritos
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;5391777792&lt;/span&gt; bytes &lt;span class="o"&gt;(&lt;/span&gt;5.4 GB&lt;span class="o"&gt;)&lt;/span&gt; copiados, 3873,48 s, 1,4 MB/s
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;(&lt;/span&gt; alf &lt;span class="o"&gt;)&lt;/span&gt; - &lt;span class="o"&gt;(&lt;/span&gt; ~ &lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└──┤&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Comprobar antes de ejecutar cualquier linea de comandos con esta segunda sintaxis, que tenemos instalado en el sistema el paquete pv, o instalarlo si no lo tuviéramos: ambas cosas con Synaptic.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si necesitas mas informacion sobre este comando podemos usar &lt;a href="https://patojad.com.ar/post/2019/01/man-tu-manual-para-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
MAN siguiendo nuestro tuto
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fuente: desdelinux&lt;/p&gt;</description></item><item><title>Mi experiencia con los Tiling Window Managers</title><link>https://patojad.com.ar/post/2019/02/mi-experiencia-con-los-tiling-window-managers/</link><pubDate>Tue, 19 Feb 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/02/mi-experiencia-con-los-tiling-window-managers/</guid><description>&lt;p&gt;Este post quizá sea un poco largo, pero quiero contarles mi experiencia y opiniones con algunos Tiling Window Manager, espero que le sirva a alguien que desee probarlos para decidirse, o si nunca han probado un &lt;em&gt;Tiling Window Manager&lt;/em&gt;, para que se animen a instalarlos. Al ser Window Managers son mucho menos intrusivos que los Entornos de Escritorios y se pueden instalar y desinstalar sin problemas.&lt;/p&gt;
&lt;p&gt;Un &lt;em&gt;Tiling Window Manager&lt;/em&gt; se diferencía de un Gestor de Ventanas normal en que las ventanas, al abrirlas, ocupan todo el espacio disponible. Si tenemos dos ventanas abiertas, entonces su tamaño cambia para que ocupen todo el espacio. Esto permite mayor eficacia al ocupar todo el espacio disponible en pantalla y no tener que preocuparnos por acomodar las ventanas para que no se empalmen.&lt;/p&gt;
&lt;p&gt;Hasta ahorita, he instalado en mi sistema y probado cuatro de estos WM:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;i3wm.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bspwm.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;awesome.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;y &lt;strong&gt;Qtile.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="i3"&gt;
i3
&lt;a href="#i3" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Quizá &lt;a href="https://i3wm.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
i3wm
&lt;/a&gt; sea el &lt;em&gt;Tiling Window Manager&lt;/em&gt; más famoso y el más amigable para los principiantes. Fue el primero que usé ya que instalé &lt;em&gt;Manjaro i3&lt;/em&gt;. &lt;strong&gt;i3&lt;/strong&gt; se configura mediante un archivo de texto, su documentación es muy buena y amplia (aunque en Inglés) y permite crear &amp;ldquo;layouts&amp;rdquo; tan complejas como se desee, algunas configuraciones rayando en lo ridículo.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/rmfQp65n/i3.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Su manera de acomodar las ventanas es dinámica, es decir, tú tienes que indicarle a &lt;strong&gt;i3&lt;/strong&gt; la orientación en que se dividirá el nodo, si vertical u horizontal (por defecto, se abren horizontal), algo que a mi casi no me gustó, ya que nunca le indicaba donde abrir la siguiente ventana y tenía 4 o 5 ventanas abiertas en horizontal, lo que las volvía imposibles de leer e inútiles. Viene con un panel llamado &lt;em&gt;i3bar&lt;/em&gt;, que rápidamente cambié por &lt;strong&gt;polybar&lt;/strong&gt; y opciones interesantes, como configurar &amp;ldquo;modos&amp;rdquo; con atajos de teclado especiales (similar a &lt;em&gt;VIM&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Es un buen WM, muy bien documentado, aunque carece de &amp;ldquo;layouts&amp;rdquo; automáticas y para tener algunas configuraciones de apariencia es necesario usar un &lt;em&gt;fork de &lt;strong&gt;i3&lt;/strong&gt;&lt;/em&gt; llamado &lt;a href="https://github.com/Airblader/i3" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
i3-gaps
&lt;/a&gt;, que añade separaciones entre ventanas (gaps) y otras opciones que esperarías tener en el proyecto original.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="bspwm"&gt;
Bspwm
&lt;a href="#bspwm" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;a href="https://github.com/baskerville/bspwm" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
Bspwm
&lt;/a&gt; es el Window Manager en el que más tiempo he pasado y el que uso actualmente. &lt;strong&gt;Bspwm&lt;/strong&gt; solo se encarga de mostrar ventanas, quien se encarga de controlarlas es un módulo llamado &lt;code&gt;bspc&lt;/code&gt;, es decir que podemos enviar órdenes a &lt;code&gt;bspwm&lt;/code&gt; (mover ventanas, cerrar ventanas, cambiar tamaño de los bordes, etc.) con comandos en terminal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bspwm&lt;/strong&gt; se configura en 2 partes: un script de bash (&lt;code&gt;bspwmrc&lt;/code&gt;) donde indicamos algunas reglas y configuraciones de ventanas, y la aplicación que deseemos usar para configurar atajos de teclado, aunque, como viene recomendado en la página de &lt;strong&gt;Bspwm&lt;/strong&gt;, la mayoría usa &lt;a href="https://github.com/baskerville/sxhkd" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
sxhkd
&lt;/a&gt;, pero podemos usar la que queramos, como &lt;em&gt;obkey&lt;/em&gt; o la herramienta de algún Entorno de Escritorio. Las ventanas se abren como &amp;ldquo;hojas de un arbol binario&amp;rdquo;, es decir, al abrir una ventana, la última ventana abierta se divide en 2, ya sea vertical u horizontal, para ir formando una espiral, también se pueden preseleccionar donde queremos que se abra la nueva ventana, similar a &lt;em&gt;i3&lt;/em&gt;, aunque en mi opinión, tiene un acomodo de ventanas manual más poderoso, al poder elegir la proporción en la que queremos se divida la ventana.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/ZqCrL9Nc/bspwm.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bspwm&lt;/strong&gt; no trae panel integrado, pero podemos usar &lt;em&gt;polybar&lt;/em&gt;. Quizá el mayor problema con &lt;strong&gt;Bspwm&lt;/strong&gt; sea su documentación, la cual es mala a morir, la única manera de figurarte que puedes hacer es leer el manual y comenzar a experimentar, o estudiar ya sea los ejemplos proporcionados en su página de GitHub o la configuración de alguien más, por otro lado tiene muchas opciones como &amp;ldquo;gaps&amp;rdquo;, personalizar bordes, y es mucho más modular que &lt;em&gt;i3&lt;/em&gt;, además está en constante desarrollo.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="awesome"&gt;
Awesome
&lt;a href="#awesome" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/1z2D79cZ/awesome.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://awesomewm.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Awesome
&lt;/a&gt; es un WM desarrollado en &lt;em&gt;Lua&lt;/em&gt;. Tiene mucha mejor integración con el ratón que los demás y es posible usarlo como un WM flotante, como &lt;em&gt;openbox&lt;/em&gt;, incluso viene con bordes y botones de cerrar y minimizar, bandeja de notificaciones, temas, menú de ventanas abiertas y lanzador de aplicaciones.&lt;/p&gt;
&lt;p&gt;Viene con un conjunto de &amp;ldquo;layouts&amp;rdquo; preseleccionadas y podemos elegir cuales usar, entre ellas las de otros WM como &lt;em&gt;Bspwm&lt;/em&gt; y &lt;em&gt;Xmonad&lt;/em&gt;, sin embargo, no tiene modo manual para colocar ventanas como si lo tienen &lt;em&gt;Bspwm&lt;/em&gt; o &lt;em&gt;i3&lt;/em&gt;. Posee un panel integrado llamado &lt;em&gt;wiibar&lt;/em&gt;, totalmente personalizable desde su archivo de configuración, y existen muchos módulos (widgets) que podemos agregar o podemos desarrollar los propios.&lt;/p&gt;
&lt;p&gt;Su configuración es en &lt;em&gt;Lua&lt;/em&gt;, y este el mayor problema de &lt;strong&gt;Awesome&lt;/strong&gt;. En mi opinión, &lt;em&gt;Lua&lt;/em&gt; es un lenguaje sucio (usa muchas llaves, paréntesis y es complicado de leer, sobre todo comparado con &lt;em&gt;bash&lt;/em&gt; o &lt;em&gt;python&lt;/em&gt;) y como no se nada de &lt;em&gt;Lua&lt;/em&gt; me pierdo fácilmente. No obstante, es posible crear escritorios muy personalizados y poderosos, y los expertos en &lt;em&gt;Lua&lt;/em&gt; deberían sentirse en casa con este Window Manager.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Awesome&lt;/strong&gt; es mucho más completo que los anteriores y posee herramientas como &lt;em&gt;cambiar el fondo de pantalla&lt;/em&gt; o &lt;em&gt;mostrar notificaciones&lt;/em&gt; sin necesidad de utilizar aplicaciones externas, mientras que los demás ocupan de aplicaciones como &lt;em&gt;nitrogen&lt;/em&gt; y &lt;em&gt;dunst&lt;/em&gt; para esto.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qtile"&gt;
Qtile
&lt;a href="#qtile" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/hvbxGVFS/qtile.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La verdad que usé este Gestor de Ventanas solo porque &lt;a href="https://www.youtube.com/channel/UCVls1GmFKf6WlTraIb_IaJg" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
DistroTube
&lt;/a&gt; habla maravillas de él. &lt;a href="http://www.qtile.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Qtile
&lt;/a&gt; está escrito y configurado en &lt;em&gt;python&lt;/em&gt;, un lenguaje que tampoco manejo, pero que es súper fácil de interpretar y puedes empezar a modificar y a entender como funcionan las cosas simplemente estudiando el código (a diferencia de &lt;em&gt;Lua&lt;/em&gt; que es mucho más caótico).&lt;/p&gt;
&lt;p&gt;Al igual que &lt;em&gt;Awesome&lt;/em&gt; viene con un panel totalmente configurable y posee un conjunto de &amp;ldquo;layouts&amp;rdquo; predefinidas, con la posibilidad de crear las propias en &lt;em&gt;python&lt;/em&gt;, además cada configuración de ventanas es personalizable, y se pueden tener diferentes bordes para cada una. Un problema que noté en &lt;strong&gt;Qtile&lt;/strong&gt; es que si hay un error en la configuración muy grave (ejemplo, no hay escritorios configurados), se niega a iniciar, obligandote a ir a otro WM para arreglar el problema o a la consola, mientras que otros como &lt;em&gt;i3&lt;/em&gt; o &lt;em&gt;Awesome&lt;/em&gt; inician con una notificación de error y cargan la configuración predeterminada.&lt;/p&gt;
&lt;p&gt;Si bien su documentación es amplia, su comunidad es algo pequeña y es un Window Manager algo más oscuro que el resto. Salvo la página oficial, es difícil encontrar mucha más información por ahí, aunque si se domina &lt;em&gt;python&lt;/em&gt; no debería haber ningún problema. Personalmente, entre &lt;em&gt;Awesome&lt;/em&gt; y &lt;strong&gt;Qtile&lt;/strong&gt;, me quedo con &lt;strong&gt;Qtile&lt;/strong&gt; por su sencilla configuración.&lt;/p&gt;
&lt;p&gt;Hay otros que nunca he usado pero se un poco por lo que he visto. Espero probarlos pronto.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://xmonad.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Xmonad
&lt;/a&gt;: Está configurado en &lt;em&gt;Haskell&lt;/em&gt; (otro lenguaje poco usado), su manera de mostrar las ventanas por defecto me gusta bastante, al mostrar una principal y las demás en cascada al lado (esta configuración se conoce como &lt;em&gt;MonadTall&lt;/em&gt; o &lt;em&gt;Master-Slave&lt;/em&gt;) y es posible crear las propias en &lt;em&gt;Haskell&lt;/em&gt;. Al igual que &lt;em&gt;bspwm&lt;/em&gt;, no posee panel pero la mayoría suele usar &lt;em&gt;xmobar&lt;/em&gt; y es el utilizado en la documentación oficial para ejemplos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dwm.suckless.org/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Dwm
&lt;/a&gt;: Un producto del proyecto &lt;em&gt;suckless&lt;/em&gt;, y como tal, carece de archivo de configuración, para cualquier modificación hay que editar el archivo &lt;em&gt;config.h&lt;/em&gt; encontrado en su código fuente y recopilar esto cada vez que se desee hacer una modificación. Carece de varias opciones (algunas que esperarías tener) debido a que quieren mantenerlo libre de sobrecargas innecesarias (bloated). Como &lt;em&gt;Awesome&lt;/em&gt;, viene con varias &amp;ldquo;layouts&amp;rdquo; predefinidas, un panel configurable y hay muchos parches que añaden funcionalidades extra.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Música y Desarrollo 1</title><link>https://patojad.com.ar/post/2019/02/m%C3%BAsica-y-desarrollo-1/</link><pubDate>Tue, 19 Feb 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/02/m%C3%BAsica-y-desarrollo-1/</guid><description>&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="palabras-reservadas-en-el-contexto-de-esta-entrada"&gt;
&lt;em&gt;Palabras Reservadas&lt;/em&gt; en el contexto de esta entrada:
&lt;a href="#palabras-reservadas-en-el-contexto-de-esta-entrada" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;&lt;em&gt;Cacharra:&lt;/em&gt; Máquina electrónica capaz de almacenar información y tratarla automáticamente mediante operaciones matemáticas y lógicas controladas por programas informáticos.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Garfios:&lt;/em&gt; Dedos de la mano.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sonidos-y-código"&gt;
Sonidos y Código.
&lt;a href="#sonidos-y-c%c3%b3digo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="sonidos"&gt;
Sonidos.
&lt;a href="#sonidos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Cita el antiquísimo lema: &lt;em&gt;La Música es el poncho del Alma.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Cita un escrito contemporáneo alojado en las pampas del saber con &lt;em&gt;quizá&lt;/em&gt;, el mayor raconto de Parroquianos Visitantes (&lt;a href="https://es.wikipedia.org/wiki/M%C3%BAsica" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Wikipedia
&lt;/a&gt;), que el arte de las &lt;em&gt;musas&lt;/em&gt; no es otra cosa que:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;El arte de organizar sensible y lógicamente una combinación coherente de sonidos y silencios respetando los principios fundamentales de la melodía, la armonía y el ritmo, mediante la intervención de complejos procesos psicoanímicos&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A finales de noviembre de 1.862, de la unificación corpórea resultante, llegaba al terráqueo planeta valle de lágrimas Albertito Williams, que años después se cargaría de un plumazo a la antes citada definición, como si &lt;em&gt;La Wiki&lt;/em&gt; no le fuese a importar.&lt;/p&gt;
&lt;p&gt;Cosas de Algunos.
&lt;br&gt;
Vaya Uno a saber.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/KvKDXG5j/Alb-Williams-00.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Williams dijo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La Música es el arte de combinar sonidos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Listo. Marcha con fritas. A otra cosa.&lt;/p&gt;
&lt;h3 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="código"&gt;
Código.
&lt;a href="#c%c3%b3digo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Con el tiempo, la manipulación de datos hizo aterrizar en nuestras vidas a toda una caterva de aparetejos dedicados a tal fin.
&lt;br&gt;
Por esas cosas de la curiosidad, cuando empezaron las averigüaciones, descubrimos que las &lt;em&gt;cacharras&lt;/em&gt; tocaban música. Muchos nos quedamos tiesos escuchando.
&lt;br&gt;
Claro, habrá unos cuantos a quienes este contexto le parezca cuento chino, pero es que &lt;em&gt;¡Mího!&lt;/em&gt; no todos somos ciudadanos de la &lt;em&gt;era del jostick&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Y asi fue que el paso de los dias nos trajo otra caterva, pero esta vez de &lt;em&gt;Animales del Conocimiento y el Trabajo duro&lt;/em&gt;. Gente con una disciplina a prueba de balazos, algunos instruídos incluso, en la época anterior al transistor.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dennis Ritchie.&lt;/li&gt;
&lt;li&gt;Ken Thompson.&lt;/li&gt;
&lt;li&gt;Richard Stallman.&lt;/li&gt;
&lt;li&gt;Linux Torvalds.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por nombrar algunos.
&lt;br&gt;
Son exponentes aplaudibles por donde se los mire.
&lt;br&gt;
Escribiendo código, estos Tipos aguantaron la parada hasta hacer crecer al Pingüino.
&lt;br&gt;
Sin dejar de mencionar a los cientos de miles que también escribieron su cuota de código, aportando desde el anonimato&lt;/p&gt;
&lt;p&gt;El tiempo continuó su obra maestra, y finalmente aqui nos encontró.
Clavando los &lt;em&gt;garfios&lt;/em&gt; en el teclado para escribir esta entrada y Uds. leyendo frente a la pantalla.&lt;/p&gt;
&lt;p&gt;Hombre o Mujer que lee estas líneas, has de saber que existe en la web, un lugar donde se alojan sonidos compuestos por Anónimos. Gente tan creíble y de todos los días como Vos y como Yo.&lt;/p&gt;
&lt;p&gt;El sitio web en cuestión se hace llamar &lt;em&gt;&lt;a href="https://musicforprogramming.net/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
musicforprogramming
&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/fyRSfK8k/00-program-music.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Con un &lt;em&gt;Estilo Editor de Código Fuente Moderno&lt;/em&gt;, el diseño de la página ya da una idea de el tipo de sonidos que alli se alojan.
&lt;br&gt;
Aunque ya se sabe que sobre gustos no hay ni habrá nada escrito, comparto sobre la existencia de este sitial, ya que a los sets de Música aquí alojados los escucho cada vez que llevo a cabo una tarea rutinaria en la &lt;em&gt;cacharra&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Dicen los Pibes de &lt;em&gt;&lt;a href="https://musicforprogramming.net/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
musicforprogramming
&lt;/a&gt;&lt;/em&gt; acerca de su gestión:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/2ySTLnv7/about-musicforprogrammers.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A través de años de prueba y error: saltando en las emisoras de radio por Internet, reproduciendo nuestras colecciones de música en forma aleatoria o simplemente repitiendo álbumes solos, hemos encontrado que la música más efectiva para ayudar a los períodos prolongados de concentración intensa tiende a tener una mezcla de las siguientes cualidades:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Drones&lt;/li&gt;
&lt;li&gt;Grabaciones de campo&lt;/li&gt;
&lt;li&gt;Vaguedad (hipnagogia)&lt;/li&gt;
&lt;li&gt;Texturas sin ritmo.&lt;/li&gt;
&lt;li&gt;Acordes menores complejos&lt;/li&gt;
&lt;li&gt;Música antigua (barroca, laúd, clavecín).&lt;/li&gt;
&lt;li&gt;Muy pocos tambores o voces.&lt;/li&gt;
&lt;li&gt;Arpegios sinteticos&lt;/li&gt;
&lt;li&gt;Impresionante / desalentador / presentimiento&lt;/li&gt;
&lt;li&gt;Paredes de reverb
&lt;blockquote&gt;
&lt;p&gt;La música que posee estas cualidades a menudo puede proporcionar la cantidad justa de interés para ocupar las partes de su cerebro que de lo contrario se dejarían libres para vagar y conducir a la distracción durante su trabajo.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En la parte inferior del sitio, hace acto de presencia la opción:
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/sD20MC4C/switch-theme-negro.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Cuya misión en esta vida es la de cambiar la apariencia, por lo que una vez pulsado, el sitio se verá asi:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/xjL96Hw1/switch-theme-mfp.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En la misma parte inferior, hacen fila un par de links mas, que aportan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El código usado para construir el sitio.&lt;/li&gt;
&lt;li&gt;Los Créditos.&lt;/li&gt;
&lt;li&gt;La dirección para tenerlos en un lector de noticias.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/ZK1g2D6k/parte-inferior-mfp.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;En una próxima Entrada, vamos a echarle un ojo a la reproducción de estos -y otros- audios en estas &lt;em&gt;cacharras&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Por si te querés pegar una vuelta, &lt;a href="https://t.me/PatoJADCommunity" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fab fa-telegram" aria-hidden="true"&gt;&lt;/i&gt;&amp;nbsp;
aqui
&lt;/a&gt; nos juntamos todos los dias.&lt;/p&gt;
&lt;p&gt;Nos leeremos luego.&lt;/p&gt;</description></item><item><title>Uniform +</title><link>https://patojad.com.ar/post/2019/02/uniform-/</link><pubDate>Thu, 14 Feb 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/02/uniform-/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="uniform-"&gt;
Uniform +(+)
&lt;a href="#uniform-" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Les traigo una gama de iconos que modifiqué levemente para mejorar su integración (Probado en Deepin) y que la verdad, ¡Me resultan muy lindos!. Estos íconos me acompañan casi de distribución a distribución dado que siempre logran darle un gran cambio.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/y8g7Z3jG/demostra-patojad.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;La instalación es muy básica (aún asi mas adelante haré un paso a paso para aquellas personas que nunca hayan agregado íconos a mano), por ahora basta con dejar la carpeta en &lt;code&gt;~/.icons&lt;/code&gt; para que luego podamos elegir el pack.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mediafire.com/file/ccz6k727wwznaue/Uniform_Pato_LatinLinux.tar.gz/file" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descarga
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;¡Comentanos que te parecieron!&lt;/p&gt;</description></item><item><title>Cuatro potentes alternativas a MS Skype</title><link>https://patojad.com.ar/post/2019/01/cuatro-potentes-alternativas-a-ms-skype/</link><pubDate>Sat, 19 Jan 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/01/cuatro-potentes-alternativas-a-ms-skype/</guid><description>&lt;p&gt;Skype se convirtió en el software más popular para videollamadas. Aunque no es el único, es solo uno de los pioneros en esta área y logró masificarse hasta convertirse en una especie de norma dentro de las transmisiones de audio y video. Sin embargo, los usuarios GNU/Linux también cuentan con servicios que vale la probar, puesto que cuentan con un gran rendimiento y cumplen todas las funciones que necesitamos en una videollamada. para lo cual contamos con las siguientes alternativas!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="signal"&gt;
Signal
&lt;a href="#signal" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Nf80gDXZ/skype-alternatives-linux-signal-640x426.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Se trata de una plataforma de código abierto enfocada en comunicarnos bajo un entorno seguro. Sus funciones dan soporte para chat y llamadas de voz y vídeo, asimismo, promete no almacenar ningún tipo de información en sus servidores. También cuenta con una versión para el smartphone que se sincroniza con la del computador. Es una aplicación muy prometedora y a diferencia de otras procura cuidar nuestros datos!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="telegram"&gt;
Telegram
&lt;a href="#telegram" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/RZMZqtQh/2018-12-16-13-17-58.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Telegram es una excelente plataforma de chat, muy segura y debo admitir que es mi aplicación favorita. Si eres usuario de Whatsapp, esta aplicación te gustará mucho más, incluso llegas a odiar WPP por la falta de tantas cosas. Además del soporte para videollamadas, permite la creación de grupos, envío de notas de voz y la interacción con bots dentro de los grupos. Y puedes llevarla en el móvil al igual que en ordenador.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="jitsi"&gt;
Jitsi
&lt;a href="#jitsi" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/yx4VK38V/2018-12-16-13-20-03.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Jitsi es una aplicación de mensajería con soporte para videollamadas. Lo más interesante, es su función para cifrar las comunicaciones de extremo a extremo, promoviendo conversaciones en un entorno de seguridad. Se trata de un software de código abierto y ofrece soporte para plataformas como Facebook, Google, AIM y otras.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="tox"&gt;
Tox
&lt;a href="#tox" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/VsnfRgK5/tox.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El enfoque principal de Tox es la privacidad. En ese sentido, brinda la posibilidad de comunicarnos a través de texto, voz y vídeo dentro de un marco de seguridad y comunicaciones cifradas. Con Tox, puedes despreocuparte de todo lo relacionado a filtración de datos y hackeos, puesto que su misión es mantener la máxima privacidad. Muy útil a nivel empresarial a para aquellos que le damos mucha importancia a la protección de nuestros datos!.&lt;/p&gt;</description></item><item><title>¿Porqué nos importa la Libertad?</title><link>https://patojad.com.ar/post/2019/01/porqu%C3%A9-nos-importa-la-libertad/</link><pubDate>Tue, 15 Jan 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/01/porqu%C3%A9-nos-importa-la-libertad/</guid><description>&lt;p&gt;Buenas, hoy vamos a dejar un poco de lado a GNU/Linux y vamos a hablar de Libertad&amp;hellip; Para esto vamos a comprar un poco que nos sienta tan bien&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="nunca-dudaste"&gt;
¿Nunca dudaste?
&lt;a href="#nunca-dudaste" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;No te paso en algún momento de tu vida de dudar si la máquina para sacar peluches estaba trucada, o si el casino tambien estaba programado y no era simplemente azar (hablando de las máquinas digitales). Claramente si están programadas para dejar una ganancia, pero muchos no se dan cuenta de esto mismo. Sin embargo si todos pudiéramos ver como funciona, saberlo e incluso mejorarlo seria un poco mas justo y dejarían de robarnos&amp;hellip;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://1.bp.blogspot.com/-9C3H_n_hPS4/XDzZ4gdHBuI/AAAAAAAAeuQ/d_MVcoqaf1ka2Afyzrkp2arSgDA5L6IPACLcBGAs/s320/duda_patojad.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="que-tiene-que-ver-esto-con-la-libertad"&gt;
¿Que tiene que ver esto con la Libertad?
&lt;a href="#que-tiene-que-ver-esto-con-la-libertad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Bueno es muy simple, así como en el juego nos roban el dinero porque no tenemos la libertad de saber que pasa adentro en los sistemas informáticos nos pueden robar todo tipos de datos cuando no tenemos la libertad de saber que esta pasando adentro. Si bien a muchas personas no les interesa su privacidad es importante ser conscientes y como mínimo tener la potestad de elegir que hacer con nuestra privacidad&amp;hellip; Anteriormente hablamos de las libertades del software libre y vemos que esto abarca mucho mas que solo saber que pasa, habla de convertirnos en los actores principales de lo que usamos&amp;hellip; ¿Cuantas veces no te gustaba como funcionaba algo o estabas cansado de el mismo error? El software libre te da la libertad de poder corregir o brindar la informacion para que otros la solucionen&amp;hellip;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/Qx15GcSy/duda-patojad.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="entonces-porqué-nos-interesa-la-libertad"&gt;
Entonces&amp;hellip; ¿Porqué nos interesa la libertad?
&lt;a href="#entonces-porqu%c3%a9-nos-interesa-la-libertad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Básicamente, cuando decidimos usar Software Libre (algunas veces 100% libre y otras no) es porque queremos estar seguros de todo lo que pasa ahi dentro. No significa que veamos el código constantemente, pero sabemos el Software Libre suele tener una comunidad muy expectante de lo que sucede con ese programa y de alguna u otra forma nos protege&amp;hellip; Es como ir a un mecánico que no te puede mentir, imaginate cuanto nos ahorramos con eso&amp;hellip;
Para ejercer nuestra libertad no existe solo GNU/Linux, tenemos muchas alternativas, incluso para los que están acostumbrados y enamorados de MS Windows pueden usar ReactOS.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/9Q29WznF/software-libre-patojad.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="sobre-privacidad"&gt;
Sobre Privacidad
&lt;a href="#sobre-privacidad" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Cuando hablamos de privacidad nos encontramos con muchas respuestas que no valen la pena mencionar, sin embargo hay una respuesta que se merece que nos detengamos un segundo a pensar&amp;hellip;&lt;/p&gt;
&lt;p&gt;Cual es el problema que sepan lo que hago si no tengo nada que esconder&lt;/p&gt;
&lt;p&gt;Cada vez que alguien dice eso, esta cayendo en la simpleza de renunciar a un derecho solo porque cree que no lo necesita&amp;hellip; Imaginen que un político quite la libre expresión porque no tiene nada para decir&amp;hellip; Esto no funciona asi. Si uno quiere dar todos sus datos publicamente puede hacerlo, esta en su derecho. Sin embargo una empresa no puede tomar esa decisión por Uno y por mas que estemos de acuerdo en darle nuestros datos debería molestarnos, igual el hecho que no nos pregunte en ningún momento si queremos regalarle nuestra vida entera&amp;hellip;&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/d0tTypFb/privacidad-patojad.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>Poner las paginas de man en español</title><link>https://patojad.com.ar/post/2019/01/poner-las-paginas-de-man-en-espa%C3%B1ol/</link><pubDate>Tue, 15 Jan 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/01/poner-las-paginas-de-man-en-espa%C3%B1ol/</guid><description>&lt;p&gt;Ya hablamos de man y podes verlo &lt;a href="https://patojad.com.ar/post/2019/01/man-tu-manual-para-linux/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
aquí
&lt;/a&gt;. Sin embargo muchas personas no tienen dominio del Inglés o simplemente no quieren estar traduciendo todo constantemente. Para esas personas les traigo una forma de poner las páginas de man en Español, antes de iniciar con esto debo aclarar que solo estará en Español lo que tiene una traducción. Puede que algunas cosas no dispongan este idioma y lo veamos en Inglés. En dicho caso se puede colaborar con la traducción.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="iniciemos"&gt;
Iniciemos
&lt;a href="#iniciemos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Lo primero que debemos hacer es instalar las páginas de man en Español. Esto se encuentra en dos paquetes, una las páginas básicas y el otro contiene todas las extras que eventualmente necesitaremos. Lo podemos hacer de la siguiente forma:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install manpages-es manpages-es-extra&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Los paquetes son los mismos para cualquier distribución por lo cual solo debemos modificar el comando de instalación por el de nuestra distribución.&lt;/p&gt;
&lt;p&gt;Una vez finalizada la instalación puede ser que man no se encuentra aún en Español, en ese caso debemos configurar el sistema correctamente para que tome el idioma Español para man. Para esto debemos ejecutar el siguiente comando que nos permite realizar la configuración regional del sistema.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dpkg-reconfigure locales&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Al ejecutarlo vamos a pasar por unos simples pasos guiados en nuestra terminal. Iniciando por un aviso en el cual se nos informa dónde vamos a ingresar.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/g0Tr60Nh/consejos-para-configurar-los-locales-patojad.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Seguido a esto vamos a tener que elegir la configuración regional que deseamos generar. Las imagenes fueron tomadas de un blog Español por lo cual van a elegir las correspondientes a España, sin embargo nosotros elegimos la que corresponda dependiendo de donde vivamos.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/0jgQcBg2/seleccionar-configuracion-regional-2-patojad.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Ya seleccionado correctamente, solo nos queda aplicar los cambios, para esto en la próxima ventana debemos seleccionar efectivamente cual queremos aplicar a nuestro sistema.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/KzCKCYTb/aplicar-la-configuracion-regional-patojad.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Y ahora efectivamente podemos comprobar que man se encuentra traducido al español. Puede que algunas paginas se encuentren en ingles dado que no tienen traducción. Aun así podemos asegurarnos de que la mayoría se encuentran en español.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/0y5NWS4m/consejo-patojad.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>Man, tu Manual para Linux!</title><link>https://patojad.com.ar/post/2019/01/man-tu-manual-para-linux/</link><pubDate>Mon, 14 Jan 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/01/man-tu-manual-para-linux/</guid><description>&lt;p&gt;En la vida cotidiana cuando adquirimos un producto del cual desconocemos correctamente su funcionamiento o alguna funcionalidad, recurrimos al manual. Esta es una práctica que viene hace años y que, si bien no se valora mucho es lo que nos permite hacernos con nuevos productos facilitando nuestro día a día.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-tiene-que-ver-esto-con-gnulinux"&gt;
¿Qué tiene que ver esto con GNU/Linux?
&lt;a href="#qu%c3%a9-tiene-que-ver-esto-con-gnulinux" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Llevando esta analogía a GNU/Linux podríamos decir que cada producto es una aplicación. Y muchas veces no conocemos el funcionamiento completo de la misma. Sin embargo en esta situación solemos ir a los foros o grupos a consultar las dudas, dependiendo de que otra persona lo conozca y se encuentre justo en ese momento disponible para respondernos. ¿No seria mejor tener un manual de cada aplicación? Bueno, hoy te digo que eso ya lo tenes&amp;hellip;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-es-man"&gt;
¿Qué es man?
&lt;a href="#qu%c3%a9-es-man" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Bueno, como dije si existe y se llama &amp;ldquo;man&amp;rdquo; pero&amp;hellip; ¿Qué es man?, simplemente es una herramienta de los sistemas Unix que cumple la función de manual, donde se encuentra documentado todo acerca de comandos, archivos, llamadas a sistema, etc. Por lo cual tenemos acceso a un manual completo sobre nuestro Sistema Operativo que nos puede ayudar a solucionar mucho antes de hacer una pregunta.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/HW4HqxXt/manual-patojad.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="cómo-se-usa"&gt;
¿Cómo se usa?
&lt;a href="#c%c3%b3mo-se-usa" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;La gran mayoría de las aplicaciones aportan a man para que quede todo documentado y cualquier usuario pueda obtener la documentación de la misma sin tener que acceder a Internet para esto existe un comando basico que nos permite ver &amp;ldquo;el manual&amp;rdquo; de una aplicación&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;man aplicacion&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Llevando esto a un ejemplo funcional podríamos querer ver el &amp;ldquo;el manual&amp;rdquo; de man (si &amp;ldquo;el manual&amp;rdquo; trae un manual de uso&amp;hellip;) en ese caso deberiamos hacer:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;man man&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;y lograríamos ver la documentación completa de man.&lt;/p&gt;
&lt;p&gt;En ocasiones algunas aplicaciones un poco mas complejas poseen varias secciones del manual (como los manuales de los autos que tambien contienen muchas secciones) cuando esto ocurre suele mostrar un mensaje indicando la sección, como &lt;strong&gt;man(1)&lt;/strong&gt; y &lt;strong&gt;man(7)&lt;/strong&gt;, o &lt;strong&gt;exit(1)&lt;/strong&gt; y &lt;strong&gt;exit(3)&lt;/strong&gt;. Para acceder a estas secciones basta con indicarlo de la siguiente forma:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;man &lt;span class="m"&gt;3&lt;/span&gt; printf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-secciones-hay"&gt;
¿Qué secciones hay?
&lt;a href="#qu%c3%a9-secciones-hay" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El manual normalmente esta dividido en ocho secciones numeradas, organizadas como sigue (en BSD, Unix y GNU/Linux):&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Sección&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Descripción&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;1&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Comandos Generales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;2&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Llamadas al sistema&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;3&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Biblioteca C de funciones&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;4&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Ficheros especiales (normalmente dispositivos) y drivers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;5&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Formatos de fichero y convenciones&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;6&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Juegos y salvapantallas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;7&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Miscelánea&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;8&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Comandos de administración del sistema y Demonios&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;En algunos sistemas están disponibles también las siguientes secciones:&lt;/p&gt;
&lt;div class="overflow-x-auto w-full my-4"&gt;
&lt;table class="min-w-full background rounded-xl"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="px-3 py-1"&gt;Sección&lt;/th&gt;
&lt;th class="px-3 py-1"&gt;Descripción&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;0&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Archivos de cabecera de la biblioteca estándar de C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;9&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Rutinas del Kernel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;n&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;Tcl/Tk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="border-t-2 border-gray-500"&gt;
&lt;td class="px-3 py-1"&gt;x&lt;/td&gt;
&lt;td class="px-3 py-1"&gt;X Window System&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;p&gt;No te llevas bien con Inglés, no te preocupes &lt;a href="https://patojad.com.ar/post/2019/01/poner-las-paginas-de-man-en-espa%c3%b1ol/" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-link"&gt;&lt;/i&gt;&amp;nbsp;
aquí
&lt;/a&gt; podes ver como traducirlo al español!&lt;/p&gt;</description></item><item><title>¿Antivirus en Linux?</title><link>https://patojad.com.ar/post/2019/01/antivirus-en-linux/</link><pubDate>Mon, 07 Jan 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/01/antivirus-en-linux/</guid><description>&lt;p&gt;En GNU/Linux, como en cualquier Sistema Operativo la seguridad es importante y es importante mencionar que no existe sistema que este excluido de estos &amp;ldquo;virus&amp;rdquo; por lo cual siempre debemos mantenernos atentos a lo que realizamos con nuestros ordenadores.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;El malware para GNU/Linux puede no estar tan extendido como las variantes que apuntan a MS Windows, pero existir, existe y se está volviendo igual de complejo y multifuncional.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Esto mismo podemos verlo en el descubrimiento realizado en noviembre del año pasado del antivirus ruso (Dr. Web). Es una nueva variedad del maleware que, aun, no tiene un nombre distintivo pero es mucho mas complejo que lo conocido actualmente para esta plataforma dado a su gran cantidad de funciones maliciosas.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/ZRP8P3gg/virus-ecb233fd.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El cómo funciona y demás no viene al caso dado que este virus ya tiene una forma de ser detectado con análisis que a la fecha tienen la mayoría de los antivirus.&lt;/p&gt;
&lt;p&gt;La idea al escribir esto es empezar a entender que a medida que GNU/Linux aumenta en uso cotidiano también aumentan las malas intenciones de otros Usuarios con un poco mas de conocimiento generando así una mayor cantidad de virus para el pobre Pingüinito!.&lt;/p&gt;
&lt;p&gt;Como siempre digo, en cualquier sistema el mejor antivirus es el usuario y la conciencia en lo que esta haciendo. Sin embargo, ¡ Nunca esta de mas tener algún programa que nos colabore un poco con lo que obviamente a cualquiera se le puede pasar!.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/gk7ZZNjj/linux.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;GNU/Linux contaba con la particularidad de tener Usuarios muy cultos en la materia por lo cual sabían que instalar y como hacerlo, sin embargo en otros sistemas las personas se acostumbran a confiar en todo y a realizar un &lt;strong&gt;&lt;em&gt;Siguiente Siguiente Siguiente&lt;/em&gt;&lt;/strong&gt; lo cual termina siendo una forma fácil de ingresar virus en los equipos.&lt;/p&gt;
&lt;p&gt;Por lo cual es siempre recomendable tener un antivirus &lt;strong&gt;¡Que desconfíe por Nosotros!&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Paralelismo entre sistemas operativos y comidas</title><link>https://patojad.com.ar/post/2019/01/paralelismo-entre-sistemas-operativos-y-comidas/</link><pubDate>Thu, 03 Jan 2019 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2019/01/paralelismo-entre-sistemas-operativos-y-comidas/</guid><description>&lt;p&gt;En esta nueva entrada presentamos una comparación que nos ayuda a comprender las diferencias entre los Sistemas Operativos Libres y propietarios. Para esto vamos a usar una comparación que hizo Sergio, un gran colega que apoya el Software Libre. Al principio pensé en modificar un poco el texto pero no quiero perder su esencia, por ende quiero aclarar que lo que viene a continuación es literalmente lo que Segio publicó en Escuela libre!.&lt;/p&gt;
&lt;h1 class="my-6 font-semibold" style="font-size:1.25rem;color:var(--oui-text-default)" id="que-tipo-de-comida-es-tu-sistema-operativo"&gt;
¿Que tipo de comida es tu Sistema Operativo?​
&lt;a href="#que-tipo-de-comida-es-tu-sistema-operativo" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h1&gt;&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="windows--comida-rápida"&gt;
Windows = Comida Rápida
&lt;a href="#windows--comida-r%c3%a1pida" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Es fácil de conseguir.&lt;/li&gt;
&lt;li&gt;Sirve para saciar el apetito, pero tiene carencias nutricionales.&lt;/li&gt;
&lt;li&gt;El usuario tiene muy poco control sobre la personalización de la comida (con queso, sin queso, con tomate, sin tomate, y poco más).&lt;/li&gt;
&lt;li&gt;Las condiciones higiénicas y sanitarias de preparación (seguridad) son dudosas.&lt;/li&gt;
&lt;li&gt;La publicidad sobre el producto raramente refleja el producto real (prometen mucho más de lo que el comprador recibe al adquirirla).&lt;/li&gt;
&lt;li&gt;Siempre hay que pagar un poco más para obtener ciertos extras (bebida grande, extra de papas fritas, etc.).&lt;/li&gt;
&lt;li&gt;Aunque aparentemente existen muchas variedades de productos, al final, casi todas saben a lo mismo.&lt;/li&gt;
&lt;li&gt;Las hamburguesas dicen ser de carne, pero no tienes manera de comprobarlo.&lt;/li&gt;
&lt;li&gt;Si algún plato te desagradó, estaba mal preparado y te sentó mal, no te explicarán qué pasó. Te dirán que en el nuevo menú de la carta ya no existe tal problema.&lt;/li&gt;
&lt;li&gt;Siempre se quejarán de la comida de otros restaurantes y dirán que la suya es mejor, pero ellos hacen las mismas hamburguesas de siempre.&lt;/li&gt;
&lt;li&gt;Los dueños de los restaurantes de comida rápida dicen ser filántropos, pero jamás regalarán su producto a menos que tengan un beneficio comercial en tal acción.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="mac--comida-gourmet"&gt;
Mac = Comida Gourmet
&lt;a href="#mac--comida-gourmet" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Es cara.&lt;/li&gt;
&lt;li&gt;La presentación es casi más importante que el producto en si.&lt;/li&gt;
&lt;li&gt;El usuario no puede aderezar libremente la comida. Tiene que comerla como se la sirven y si cuestiona el sabor, generalmente se lo tachará de tener mal gusto.&lt;/li&gt;
&lt;li&gt;Mucha gente la come no porque crea que es más sabrosa, sino porque al hacerlo aparenta ser un entendido culinario frente a sus amigos.&lt;/li&gt;
&lt;li&gt;Sólo la consigues en lugares exclusivos, donde cosas comunes que podrías conseguir en otros lados salen muchísimo más caras.&lt;/li&gt;
&lt;li&gt;Siempre innovando y reinventando, aunque a veces no por agradar al usuario, sino por mantener vivo el negocio.&lt;/li&gt;
&lt;li&gt;Te aseguran que está elaborado con lo mejor de lo mejor, pero no te dejan entrar a la cocina a ver cómo lo hacen.&lt;/li&gt;
&lt;li&gt;Si algún plato te desagradó, estaba mal preparado o te sentó mal, no te explicarán qué pasó, aunque te regalarán un descuento para tu próxima comida.&lt;/li&gt;
&lt;li&gt;Para ellos, la comida que se hace en otros lados es de mala calidad, aunque no la hayan probado nunca o alguna vez usen sus recetas en sus propios platos.&lt;/li&gt;
&lt;li&gt;El Gourmet se acercará como una persona sencilla, cercana y espontánea, pero apenas empiece a hablar de sus cosas, te darás cuenta que está en un nivel que no te puedes permitir. Sencillamente lo hace porque es bueno para la imagen de su negocio.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="gnulinux--comida-casera"&gt;
GNU/Linux = Comida Casera
&lt;a href="#gnulinux--comida-casera" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Siempre estuvo ahí, no se inventó por negocio, sino por necesidad y por placer.&lt;/li&gt;
&lt;li&gt;Se ajusta a todos los bolsillos, puede ser barata, cara o incluso gratuita.&lt;/li&gt;
&lt;li&gt;Se cuida la presentación, pero lo importante es la comida.&lt;/li&gt;
&lt;li&gt;Puedes compartir las recetas con tus amigos. No hay secretos.&lt;/li&gt;
&lt;li&gt;La puedes hacer tú, un amigo, o puedes recurrir a restaurantes de comida casera, hasta te la pueden llevar a casa o hacértela por encargo.&lt;/li&gt;
&lt;li&gt;A veces se te puede quemar, pero a la próxima ya sabes cómo evitarlo y te saldrá cada vez mejor.&lt;/li&gt;
&lt;li&gt;Puede ser jugosa a la vez que muy nutritiva, y la puedes combinar con otros platos.&lt;/li&gt;
&lt;li&gt;Si la compartes con alguien que la necesita, no vendrá un empleado a decir que tu invitado que no paga no tiene derecho a estar en el restaurante.&lt;/li&gt;
&lt;li&gt;No hace falta sacarle fotos y disfrazarla para que se vea apetitosa. Lo que ves es lo que obtienes.&lt;/li&gt;
&lt;li&gt;Para toda la gente, para todas las ocasiones. Hay recetas sencillas y elaboradas, platos para “matar el hambre” y para “comer hasta explotar”.&lt;/li&gt;
&lt;li&gt;Existe una variedad inmensa de recetas, y las puedes usar y modificar a tu antojo.&lt;/li&gt;
&lt;li&gt;Los demás cocineros son gente como tú, puedes hablar cara a cara con ellos, sencillamente porque les gusta lo que hacen, les encanta la cocina.&lt;/li&gt;
&lt;li&gt;Aunque por la calle y en la televisión se ve mucha gente yendo a restaurantes de comida rápida y de comida gourmet, hay mucha más gente de la que imaginas que cocina en casa.&lt;/li&gt;
&lt;li&gt;Los utensilios y productos que necesitarás para prepararla están disponibles en cualquier tienda, o incluso puedes utilizar utensilios caseros y antiguos que tengas en casa.&lt;/li&gt;
&lt;li&gt;Una vez que la tienes servida en tu plato, lista para comerla, te darás cuenta que nada de lo que puedas comprar por ahí se compara con tu propia comida casera, preparada a tu gusto.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>PrimeOS: Android en tu PC</title><link>https://patojad.com.ar/post/2018/12/primeos-android-en-tu-pc/</link><pubDate>Wed, 26 Dec 2018 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2018/12/primeos-android-en-tu-pc/</guid><description>&lt;p&gt;Hace tiempo pasaron proyectos como &lt;strong&gt;RemixOS&lt;/strong&gt; o &lt;strong&gt;Phoenix OS&lt;/strong&gt; pero perdieron el enfoque callendo en el olvido y terminando por desaparecer. Sin embargo Android en una PC es una buena salida para todos aquellos que tenemos algún equipo antiguo en el cual nos sirve para estudiar o realizar búsquedas y demás.&lt;/p&gt;
&lt;p&gt;Para esto llega &lt;strong&gt;PrimeOS&lt;/strong&gt; desde su versión beta nos da una solución a mi criterio bastante optimizada y que si bien es una beta a la cual van a trabajar y actualizar constantemente es, a mi criterio, perfectamente funcional.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/jjCGCqDB/laptop-2x.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si bien solo lo probe dos semanas en la diaria, estoy muy contento con el resultado final y existen muchos ámbitos dónde es perfectamente aplicable y mucho más optópt que un sistema operativo multiusos (siempre conociendo el alcance que va a tener el uso de ese equipo).&lt;/p&gt;
&lt;p&gt;Mi único Problema, por el cual instalé en ese equipo MX Linux tras la prueba, es simplemente que Android no está diseñada para desarrollar sobre si misma o al menos no con el nivel de comodidad que permite Linux y eso en mi caso es un poco molesto (mas bien por ser un perro de costumbres) aún asi no es imposible usarla para eso sin embargo me inclino por MX Linux.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/7h1RjfRJ/group4-2x.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Si bien la instalación es muy simple y la puede hacer un Usuario novato o un Usuario avanzado sin problemas, les recomiendo ver este hermoso tutorial que realizó nuestro amigo Cumpi un gran Linuxnauta que lleva mucho tiempo colaborando con comunidades y enseñando desde su canal.&lt;/p&gt;
&lt;iframe src='https://www.youtube.com/embed/3yoQSKFojt0?rel=0' title="Video de Youtube"
class="w-full h-auto rounded-xl aspect-video mb-3" allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;También les dejo el &lt;a href="https://www.primeos.in/download" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
link
&lt;/a&gt; de descarga.&lt;/p&gt;</description></item><item><title>Esta Navidad nos llegó el Kernel 4.20</title><link>https://patojad.com.ar/post/2018/12/esta-navidad-nos-lleg%C3%B3-el-kernel-4.20/</link><pubDate>Mon, 24 Dec 2018 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2018/12/esta-navidad-nos-lleg%C3%B3-el-kernel-4.20/</guid><description>&lt;p&gt;Hace pocas horas y después de dos meses de desarrollo, &lt;strong&gt;Linus Torvalds anunció la nueva versión del Kernel de Linux 4.20&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Que entre los cambios más notables en esta nueva versión del Kernel 4.20 se encuentran diversas correcciones en cuanto a errores y sobre todo soporte a diversos dispositivos.&lt;/p&gt;
&lt;p&gt;En esta nueva versión del Kernel de Linux se hicieron 14.997 parches de 1857 Desarrolladores a la nueva versión, el tamaño del parche fue de 49 MB (los cambios afectaron a 11,402 archivos, se agregaron 686,104 líneas de código, 318945 líneas se eliminaron).&lt;/p&gt;
&lt;p&gt;Aproximadamente el 47% de todos los cambios presentados en 4.20 están relacionados con los controladores de dispositivos, aproximadamente el 17% de los cambios están relacionados con la actualización de códigos específicos para arquitecturas de hardware, el 14% están relacionados con la pila de red, el 3% son sistemas de archivos y el 4% son subsistemas internos del Kernel.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/zB7WMNjX/Linux-kernel-4-20-released.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="qué-hay-de-nuevo-en-el-kernel-de-linux-420"&gt;
¿Qué hay de nuevo en el Kernel de Linux 4.20?
&lt;a href="#qu%c3%a9-hay-de-nuevo-en-el-kernel-de-linux-420" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Lo primero que merece la pena mencionar es el soporte para los aceleradores gráficos incluidos en las APU Picasso y Raven 2, además de haber avanzado en el soporte de las futuras GPU Vega 20. Es bueno saber que aparentemente no se tendrá que esperar demasiados meses para ver las futuras gráficas bien soportadas en Linux. Además, también tenemos mejoras en el rendimiento de GPUVM en AMDGPU (el driver libre para GPU “recientes” de AMD) y aceleración de JPEG en VCN en las APU Raven Ridge si se combina con Mesa 18.3, ya que la versión del driver del kernel utilizada puede condicionar hasta qué punto podemos exprimir la pila encarga de las API gráficas. En CPU nos encontramos con un soporte muy inicial de Zen 2.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="speck-se-ha-ido"&gt;
Speck se ha ido
&lt;a href="#speck-se-ha-ido" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El controvertido Speck recientemente agregado con Linux 4.17 en el algoritmo de encriptación del Kernel fue eliminado en Linux 4.20.&lt;/p&gt;
&lt;p&gt;Dado que Google privó de la confianza del código de Android realmente destinado. Esto no se debió a la tecnología, ya que el algoritmo fue desarrollado por la NSA.&lt;/p&gt;
&lt;p&gt;Y la estandarización de este se le negó, ya que la NSA no estaba dispuesta a responder preguntas detalladas sobre el algoritmo.&lt;/p&gt;
&lt;p&gt;Además, la virtualización se ha mejorado con KVM, que ahora permite máquinas virtuales a través de la virtualización anidada en una máquina virtual.&lt;/p&gt;
&lt;p&gt;El soporte también está disponible para el Raspberry Pi Model 3. En el futuro, la pila TCP entregará paquetes con un nuevo algoritmo, que no solo debería ser más rápido sino también más seguro.&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="nuevos-protocolos"&gt;
Nuevos protocolos
&lt;a href="#nuevos-protocolos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;En este Kernel se implementó un nuevo programador de tráfico &lt;em&gt;“taprio”&lt;/em&gt;, que permite administrar el envío de paquetes de acuerdo con las series de tiempo generadas anteriormente.&lt;/p&gt;
&lt;p&gt;El método de programación se define en la especificación IEEE 802.1Qbv, tiene en cuenta los requisitos para la transmisión de tráfico sensible al tiempo de entrega de paquetes (por ejemplo, flujos de video y audio) y utiliza diferentes intervalos de tiempo para diferentes clases de tráfico.&lt;/p&gt;
&lt;p&gt;Para el protocolo rtnetlink, se implementa un modo de comprobación estricta (“comprobación rígida”), que permite garantizar que la información relevante se transmita al espacio del usuario correspondiente a la solicitud entrante;&lt;/p&gt;
&lt;p&gt;Se agregó la capacidad de filtrar volcados con información de enrutamiento por los protocolos utilizados (por ejemplo, para separar rutas de diferentes demonios de enrutamiento), tipos de rutas (por ejemplo, para asignar unicast)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="el-id-de-la-tabla-de-enrutamiento-y-la-puerta-de-enlace-más-cercana-nexthop"&gt;
El ID de la tabla de enrutamiento y la puerta de enlace más cercana (nexthop).
&lt;a href="#el-id-de-la-tabla-de-enrutamiento-y-la-puerta-de-enlace-m%c3%a1s-cercana-nexthop" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Dichos filtros han sido soportados durante mucho tiempo en iproute2, pero se implementaron en el espacio del usuario. Mover los filtros al espacio del kernel le permite aumentar la eficiencia de los grandes sistemas de enrutamiento basados ​​en Linux.&lt;/p&gt;
&lt;p&gt;En la implementación de puentes de red (subsistema de puentes), se ha agregado la capacidad de ver estadísticas de VLAN en el contexto de puertos individuales.&lt;/p&gt;
&lt;p&gt;El soporte para 5 y 6 canales para la banda de 60 GHz se ha agregado a la pila inalámbrica ieee80211, así como la capacidad de habilitar la funcionalidad FTM Responder desde el espacio del usuario.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/WbCZxXMr/Linux-Kernel-5-featured.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="y-el-kernel-50-para-cuando"&gt;
¿Y el Kernel 5.0 para cuando?
&lt;a href="#y-el-kernel-50-para-cuando" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Finalmente, muchos esperaban que el nuevo Kernel sería análogo al cambio a 4.0 puesto que después del 4.19 ahora se esperaba la versión 5.0.&lt;/p&gt;
&lt;p&gt;Sin embargo, dado que Torvalds no quiere ser arreglado en un esquema, se dijo que Linux 5.0 vendrá en 2019. Aunque en una fecha estimada no se sabe, ya que de momento los planes para la próxima versión continúan para la versión 4.21.&lt;/p&gt;</description></item><item><title>Repara tu GRUB con Boot-Repair</title><link>https://patojad.com.ar/post/2018/12/repara-tu-grub-con-boot-repair/</link><pubDate>Thu, 20 Dec 2018 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2018/12/repara-tu-grub-con-boot-repair/</guid><description>&lt;p&gt;Vamos a ver como repararlo con Boot-Repair, para eso debemos instalarlo de la siguiente forma desde cualquier live que tengamos&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/L57qK8ZR/boot-repair-tutorial-grub-linux-windows.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Boot-Repair es una sencilla herramienta que se utiliza para reparar los problemas de arranque del GRUB. Funciona en distribuciones Debian y derivadas, como Ubuntu, Linux Mint o Elementary OS. Sin embargo, esto no es ningún problema, ya que se suele utilizar desde un Live-CD. Con un Live de Ubuntu es posible recuperar el grub de cualquier distribución. Es muy fácil de utilizar, ya que con unos cuantos clicks es posible reparar la configuración de arranque de nuestro equipo. Por supuesto, también existen muchas configuraciones avanzadas, pero no suelen ser necesarias.&lt;/p&gt;
&lt;p&gt;Para instalar Boot-Repair añadimos el repositorio mediante PPA y luego actualizamos el sistema.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo add-apt-repository ppa:yannubuntu/boot-repair
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install boot-repair&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;El funcionamiento básico de Boot-Repair es muy sencillo. Al abrirlo, veremos una ventana con dos opciones y simplemente haremos click en reparación recomendada. El programa se pondrá a funcionar y, en la mayoria de los casos, solucionará los problemas de nuestro GRUB.&lt;/p&gt;
&lt;p&gt;Por lo general, esto suele funcionar sin mayor inconveniente, pero si por alguna circunstancia no lo hace, es posible realizar una configuración avanzada:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/RV661Kj0/boot-repair-tutorial-grub-linux-windows-2.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Aqui podemos cambiar el tiempo de espera de arranque o reparar el sistema de archivos, además de reinstalar el grub. En la siguiente pestaña es posible seleccionar el Sistema Operativo que queremos que arranque por defecto:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/8CHjkHrZ/boot-repair-tutorial-grub-linux-windows-3.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;A menos que se le especifique lo contrario en la última pestaña, al acabar de reparar el arranque se generará un log con el resultado, que suele ser satisfactorio.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://geekytheory.com/wp-content/uploads/2015/09/boot-repair-tutorial-grub-linux-windows-1.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>Chrome OS 71 llegó</title><link>https://patojad.com.ar/post/2018/12/chrome-os-71-lleg%C3%B3/</link><pubDate>Wed, 19 Dec 2018 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2018/12/chrome-os-71-lleg%C3%B3/</guid><description>&lt;p&gt;Siguiendo una actualización del tema de Google Material y un completo rediseño del lanzador de aplicaciones pensado para tabletas y dispositivos táctiles, Chrome OS 71 ha llegado el día de hoy. Una de las mejoras más importantes de esta actualización es mejorar la experiencia de tener una Chromebook y un dispositivo con Android.&lt;/p&gt;
&lt;p&gt;Esta mejorada integración entre un dispositivo Android y Chrome OS es llamada Better Together. Después de actualizar, los usuarios veran una alerta sobre “Cómo hacer que los dispositivos funcionen mejor juntos.” Seleccionando esa alerta se puede conocer más sobre esta función.&lt;/p&gt;
&lt;p&gt;Las funciones disponibles de Better Together varían según los teléfonos y la Chromebook. En el Pixel, Better Together trae anclaje de red instantáneo para compartir internet entre el móvil y la portátil. También se encuentra disponible la función Smart Unlock que permite a los usuarios desbloquear sus portátiles con tan sólo tener el teléfono cerca.&lt;/p&gt;
&lt;p&gt;Todos los dispositivos se beneficiarán de la integración de mensajes para web que usa la misma aplicación con emparejamiento a través de código QR. Se menciona que para usar Better Together necesitas Android 5.1 o superior.&lt;/p&gt;
&lt;p&gt;Mejoras en el soporte para Linux
Chrome OS 71 trae muchas funciones para mejorar el soporte de Linux, lo que permite un desarrollo y programación más avanzado. La máquina virtual de Linux ahora aparece en el administrador de tareas de Chrome OS.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://blog.desdelinux.net/wp-content/uploads/2018/12/chrome-71-shut-down-linux.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Mientras tanto, la máquina virtual ahora puede ser apagada con un clic derecho en el icono de terminal. La nueva opción para cerrar Linux es mucho más rápida que reiniciar tu terminal. Adicionalmente, las carpetas compartidas te permitirán leer y escribir en los archivos.&lt;/p&gt;
&lt;p&gt;ChromeOS 71 está disponible ahora mismo y llegará gradualmente a todos los Chromebook en las semanas próximas.&lt;/p&gt;</description></item><item><title>RetroPie</title><link>https://patojad.com.ar/post/2018/12/retropie/</link><pubDate>Wed, 12 Dec 2018 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2018/12/retropie/</guid><description>&lt;p&gt;Muchos de nosotros crecimos con juegos de otra época, y tenemos cierta fidelidad a esos juegos. Soy de los que prefieren jugar al Pokemon Esmeralda al Pokemon GO. Y por suerte es algo que pude inculcar en mi familia. Siempre tenemos que volver a los orígenes.&lt;/p&gt;
&lt;p&gt;En medio de esta &amp;ldquo;aventura&amp;rdquo; me encontre con el mundo feliz de &lt;em&gt;RetroPie&lt;/em&gt;, lo cual me permitió convertir mi PC en una consola retro para jugar con mi familia (con posibles peleas maritales ¡Luego de que te gana en el Street fighter!).&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/wBNvv4qp/Themes.png" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="instalación"&gt;
Instalación
&lt;a href="#instalaci%c3%b3n" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Según &lt;em&gt;RetroPie&lt;/em&gt; deberías usar Ubuntu pero personalmente recomiendo Debian (si usas Arch tenes una alternativa genial con RetroArch) esta me dio menos problemas. Actualmente lo monte en un Raspberry y en Mi pc on Deepin.&lt;/p&gt;
&lt;p&gt;Iniciamos actualizando nuestro sistema operativo (Es importante que nada te bloquee mas adelante ninguna instalación asi que recomiendo tener todo actualizado correctamente!)&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt-get upgrade&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Vamos a instalar algunas dependencias necesarias para iniciar&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install -y git dialog unzip xmlstarlet&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Y ahora es donde uno agradece a la comunidad y al sistema Libre / OpenSource, la primera vez tuve dos horas buscando y compilando cosas para que quede todo ok, pero ahora hubo un loco que se dedicó a facilitarnos la vida y ¡Armo un script que soluciona todo con correrlo!. Por ende solo debemos descargar de su repositorio a dicho script:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone --depth&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; https://github.com/RetroPie/RetroPie-Setup.git&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;¡ Y correrlo para que se instale todo!:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;div class="highlight-header flex flex-row justify-between"&gt;
&lt;div&gt;
&lt;em class="fas fa-code me-2" aria-hidden="true"&gt;&lt;/em&gt;&lt;span class="highlight-lang"&gt;zsh&lt;/span&gt;
&lt;/div&gt;
&lt;button type="button" class="copy-code-button background" aria-label="Copiar código" title="Copiar código"&gt;&lt;em class="fas fa-copy" aria-hidden="true"&gt;&lt;/em&gt;&lt;em class="fas fa-check" aria-hidden="true"&gt;&lt;/em&gt;&lt;span&gt;Copiar&lt;/span&gt;&lt;/button&gt;
&lt;/div&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; RetroPie-Setup &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo ./retropie_setup.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Veremos una pantalla como esta:&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://i.postimg.cc/XYdSBRCQ/c4e3da42-79c4-11e6-82a8-026afa67801b.png" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Eligiendo solo Basic Install tenemos todo para iniciar a jugar (el proceso puede demorar mucho dependiendo de velocidad de internet). Para saber mas les dejo la documentación correspondiente (en Inglés) lugar de donde saque la informacion.&lt;/p&gt;</description></item><item><title>Spiral Knights</title><link>https://patojad.com.ar/post/2018/12/spiral-knights/</link><pubDate>Wed, 12 Dec 2018 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2018/12/spiral-knights/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Los Spiral Knights han despertado en un mundo desconocido. Sus reservas de equipo y su nave han sido saqueadas y su nave, el Skylark, no podrá recuperarse del accidente. Ahora deberán trabajar juntos para sobrevivir en una aventura que los llevará al núcleo mismo de este mundo.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="a-las-armas"&gt;
¡A las armas!
&lt;a href="#a-las-armas" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://media.spiralknights.com/v/20180726125121/images/about/take_up_arms.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Cradle es un planeta hostil lleno de toda clase de criaturas extrañas. Cualquier esperanza de supervivencia que tengas depende de tu habilidad de amasar un arsenal de armas y equipo que te de las opciones apropiadas para cualquier ambiente. ¡Como Spiral Knight tienes toda la libertad de personalizar y usar el arsenal de la manera que desees!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="únete-a-los-otros-caballeros-en-haven"&gt;
Únete a los otros caballeros en Haven
&lt;a href="#%c3%banete-a-los-otros-caballeros-en-haven" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://media.spiralknights.com/v/20180726125121/images/about/haven.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Alguna vez un puesto minero, Haven sirve ahora como campamento base para el Cuartel General Spiral. Desde la seguridad de sus paredes, los caballeros pueden encontrar una gran variedad de artículos y servicios ofrecidos. ¡Todo, desde compar nuevas armas y equipo hasta crear poderosos artículos por medio de la alquimia está a tu alcance!&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="explora-los-misterios-de-los-mecanismos"&gt;
Explora los misterios de los Mecanismos
&lt;a href="#explora-los-misterios-de-los-mecanismos" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://media.spiralknights.com/v/20180726125121/images/about/clockworks.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Más allá de Haven se despliegan los Mecanismos, un enorme complejo subterráneo lleno de piezas de mundos extraños, criaturas peligrosas y tesoros fabulosos. ¿Será que tu y tus compañeros responderán a su llamado a la aventura?&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="domina-el-poder-del-arcade"&gt;
Domina el poder del Arcade
&lt;a href="#domina-el-poder-del-arcade" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://media.spiralknights.com/v/20180726125121/images/about/arcade.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Lleno de extraños mecanismos alimentados por los Minerales que se han encontrado en los mundos más abajo, el Arcade de Haven es usado por los Spiral Knights para construir sus propias entradas que marcan caminos únicos a los Mecanismos subterráneos. (¡No existen dos gates iguales!)&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="lleva-las-aventuras-hasta-el-core"&gt;
¡Lleva las aventuras hasta el Core!
&lt;a href="#lleva-las-aventuras-hasta-el-core" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://media.spiralknights.com/v/20180726125121/images/about/core.jpg" alt="" title=""
loading="lazy" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;El Cuartel General de Spiral está recibiendo una fuerte señal de energía desde el centro del Core del planeta. ¿Eres lo suficientemente valiente para enfrentar los peligros que se encuentran entre los secretos de este misterioso nuevo mundo y tu?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.spiralknights.com/?locale=es" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Web Oficial
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>eDEX-UI</title><link>https://patojad.com.ar/post/2018/12/edex-ui/</link><pubDate>Tue, 11 Dec 2018 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2018/12/edex-ui/</guid><description>&lt;p&gt;eDEX-UI es una aplicación de escritorio de pantalla completa que se asemeja a una interfaz de computadora de ciencia ficción, inspirada en gran medida en DEX-UI y los efectos de película TRON Legacy. Ejecuta el shell de su elección en un terminal real y muestra información en vivo sobre su sistema. Fue diseñado para ser usado en pantallas táctiles grandes, pero funcionará bien en una computadora de escritorio normal o tal vez en una tableta o en una de esas computadoras portátiles de 360 ° con pantalla táctil.&lt;/p&gt;
&lt;p&gt;
&lt;div class="flex flex-wrap justify-center"&gt;
&lt;img src="https://4.bp.blogspot.com/-KsW2QQ4-j3Y/W_Li-0Brf0I/AAAAAAAAB5M/PYI7Lb_C2lQv2cJTZ_aWfQwTl7OP7MxrwCLcBGAs/s1600/edex-ui-scifi-computer-interface.jpg" alt="" title=""
loading="eager" fetchpriority="high" decoding="async"
class="rounded-xl" /&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;A continuación dejo el link del AppImage compilado por mi para que lo puedan probar en sus sistemas.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mediafire.com/file/b52tmfjif1dimj2/eDEX-UI&amp;#43;Linux&amp;#43;%28x86_64%29.AppImage" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Descargar
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>RunScape</title><link>https://patojad.com.ar/post/2018/12/runscape/</link><pubDate>Tue, 11 Dec 2018 00:00:00 +0000</pubDate><guid>https://patojad.com.ar/post/2018/12/runscape/</guid><description>&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="elige-tu-lucha"&gt;
Elige tu Lucha
&lt;a href="#elige-tu-lucha" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;El combate de RuneScape es emocionante y desafiante, con muchas opciones y capacidades diferentes para elegir. Hay disponibles miles de combinaciones de armaduras y armas, y los jugadores más fuertes son aquellos que se preparan bien para la batalla. Los jugadores pueden tratar de derrotar a cientos de NPC diferentes a medida que avanzan en su aventura o pueden participar en combates con otros jugadores en áreas específicas de PvP. Sigue leyendo para descubrir por qué Combat es una parte tan importante del juego de RuneScape.&lt;/p&gt;
&lt;p&gt;![](&lt;a href="https://images.ctfassets.net/ra5kw4ubxdsf/5VDo7YuJQo3KdqQDvSUdvp/e639ecc171bd6c4de47392202b7e633c/RS3_Device_Tablet_450x615.webp?q=75&amp;amp;w=680%22" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
https://images.ctfassets.net/ra5kw4ubxdsf/5VDo7YuJQo3KdqQDvSUdvp/e639ecc171bd6c4de47392202b7e633c/RS3_Device_Tablet_450x615.webp?q=75&amp;w=680"
&lt;/a&gt; &amp;gt;}}&lt;/p&gt;
&lt;h2 class="my-6 font-semibold" style="font-size:1.65rem;color:var(--oui-text-strong);letter-spacing:-0.022em" id="evolución-del-combate"&gt;
Evolución del combate
&lt;a href="#evoluci%c3%b3n-del-combate" style="color:var(--oui-text-faint)"&gt;#&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Un sistema de combate dinámico y moderno basado en las habilidades de hacer clic. Se puede jugar completamente de forma manual o semiautomatizada, y permite batallas emocionantes y visualmente impresionantes. Es una excelente forma de jugar en todos los niveles, y se recomienda encarecidamente para los desafiantes encuentros de jefes finales del juego. Hay tres tipos de habilidades:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Básico: estas habilidades son rápidas, generalmente basadas en daños, que pueden generar adrenalina. La adrenalina se usa para realizar habilidades más avanzadas y más fuertes, como el umbral y el final.&lt;/li&gt;
&lt;li&gt;Umbral: las habilidades de umbral hacen más daño que las habilidades básicas, pero también agotan el 15% de tu adrenalina cuando se lanzan. Las habilidades de umbral requieren 50% de adrenalina para usar.&lt;/li&gt;
&lt;li&gt;Ultimate: estas son las habilidades más poderosas. La mayoría de estas habilidades borran completamente tu barra de adrenalina y no generan adrenalina.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La mayoría de las habilidades se desbloquean a medida que entrenas tus habilidades de combate, pero algunas se pueden obtener de otras maneras: como gotas de criaturas poderosas o al completar misiones.&lt;/p&gt;
&lt;p&gt;También puedes elegir automatizar tus habilidades seleccionando Revolution como tu modo de combate&lt;/p&gt;
&lt;p&gt;&lt;a href="https://play.runescape.com/" target="_blank" rel="noopener noreferrer" class="text-fuchsia-700 hover:text-fuchsia-800 font-semibold"&gt;
&lt;i class="fas fa-up-right-from-square"&gt;&lt;/i&gt;&amp;nbsp;
Sitio Web
&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>