<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Juan Pino Contreras</title>
    <description>The latest articles on DEV Community by Juan Pino Contreras (@jpinodev).</description>
    <link>https://dev.to/jpinodev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1685504%2Feff906ee-eedc-4c23-94e2-aa9a095b02dd.jpg</url>
      <title>DEV Community: Juan Pino Contreras</title>
      <link>https://dev.to/jpinodev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jpinodev"/>
    <language>en</language>
    <item>
      <title>Ejercicios de logica y programacion (3 soluciones): Enfoques y Optimización</title>
      <dc:creator>Juan Pino Contreras</dc:creator>
      <pubDate>Mon, 19 Aug 2024 17:58:14 +0000</pubDate>
      <link>https://dev.to/jpinodev/ejercicios-de-logica-y-programacion-enfoques-y-optimizacion-aka</link>
      <guid>https://dev.to/jpinodev/ejercicios-de-logica-y-programacion-enfoques-y-optimizacion-aka</guid>
      <description>&lt;h2&gt;
  
  
  Dado este ejercicio: (desde &lt;a href="https://www.codewars.com/" rel="noopener noreferrer"&gt;codewars.com&lt;/a&gt;)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Crear una función que devuelva el cuadrado de cada dígito de un número.
&lt;/h3&gt;

&lt;p&gt;Por ejemplo, al ingresar a la función el número &lt;strong&gt;702&lt;/strong&gt; deberá devolver &lt;strong&gt;4904&lt;/strong&gt;, ya que el cuadrado de 7 es &lt;strong&gt;49&lt;/strong&gt;, el cuadrado de 0 es &lt;strong&gt;0&lt;/strong&gt; y el cuadrado de 2 es &lt;strong&gt;4&lt;/strong&gt;. Si la función recibe un cero debe devolver 0.&lt;/p&gt;

&lt;p&gt;Como todo en programación, es posible resolver este ejercicio de muchas formas. Primero, vamos a resolverlo usando las propiedades de manipulación de números en Python, luego explicaré otra forma más avanzada 🤓.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;square_digits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;num&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="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;num_sqr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; 
        &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
        &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_sqr&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="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En este código, primero evaluamos si se recibe un 0 para retornar un 0, tal como indica el enunciado. Luego, inicializamos la variable result como un string vacío, creamos un ciclo while con la condición &lt;code&gt;num &amp;gt; 0&lt;/code&gt;. Definimos la variable num_sqr, que es el cuadrado de cada dígito recibido. Con &lt;code&gt;num % 10&lt;/code&gt; obtenemos el último dígito del número recibido para luego elevarlo al cuadrado con &lt;code&gt;**2&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;El uso de num % 10 es un método común para extraer el último dígito de un número.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;La expresión num = num // 10 elimina el último dígito del número, avanzando en el recorrido de cada dígito.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Otra forma de resolverlo es convertir el número en un string y recorrer este string con un ciclo &lt;code&gt;for&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;square_digits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&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="sh"&gt;""&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;digit&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&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="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;digit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este código es más óptimo, tiene menos líneas y se entiende muy bien el recorrido, además de que no es necesario evaluar si recibe un 0. En Python es posible recorrer carácter por carácter de un string con un ciclo &lt;code&gt;for&lt;/code&gt;. Usamos esta funcionalidad para recorrer el número recibido, convirtiéndolo con &lt;code&gt;str(num)&lt;/code&gt; a un string. Creamos la variable &lt;code&gt;result&lt;/code&gt;como un string vacío, al cual se le concatenará un carácter que es el resultado de digit convertido a entero y elevado a 2, todo esto convertido a un string. Luego, retornamos el resultado convertido a un entero.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Concatenar strings dentro de un bucle puede ser menos eficiente en términos de rendimiento para números muy largos, pero es perfectamente aceptable para la mayoría de los casos de uso.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;Una forma mas avanzada y "elegante" *&lt;/em&gt; es usando Comprension de generadores y el motodo .join. Te presento el codigo primero y vamos desglosando explicando estos terminos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;square_digits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;digit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;digit&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este código de primeras no es muy legible si no se conocen los conceptos &lt;br&gt;
que lo conforman.&lt;/p&gt;

&lt;p&gt;La expresión &lt;code&gt;str(int(digit)**2) for digit in str(num)&lt;/code&gt; es un _generador _(Generator Expression) que itera sobre cada dígito en la representación en cadena del número num.&lt;br&gt;
Para cada dígito, lo convierte en un entero &lt;code&gt;(int(digit))&lt;/code&gt;, lo eleva al cuadrado &lt;code&gt;(**2)&lt;/code&gt;, y luego lo convierte nuevamente en una cadena &lt;code&gt;(str(...))&lt;/code&gt;. Luego, con &lt;code&gt;''.join(...)&lt;/code&gt;, toma una secuencia (en este caso, el generador) y concatena todos los elementos en una única cadena. Aquí, todos los cuadrados de los dígitos se combinan en una sola cadena sin ningún separador (debido a que la cadena entre las comillas simples es vacía '').&lt;/p&gt;

&lt;p&gt;Como vemos, las diferentes formas de resolver un ejercicio demuestran los niveles de conocimiento en un lenguaje. Todas las soluciones son correctas si pasan las pruebas, pero algunas son más eficientes y legibles que otras. La elección del enfoque depende del contexto y de lo que se priorice en cada caso:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Legibilidad&lt;/strong&gt;: Es crucial cuando otros desarrolladores van a leer y mantener tu código. Un código claro y fácil de entender reduce la posibilidad de errores y facilita su mantenimiento. 📖&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Eficiencia&lt;/strong&gt;: Importa cuando se trabaja con grandes volúmenes de datos o en aplicaciones donde el rendimiento es crítico. Un código más optimizado puede hacer una gran diferencia en la velocidad y el consumo de recursos. 🚀&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simplicidad&lt;/strong&gt;: Para casos donde la prioridad es resolver el problema de forma rápida y directa, como en prototipos o ejercicios didácticos. La simplicidad a menudo facilita la depuración y pruebas del código. 😉&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Al desarrollar, es importante encontrar un balance entre estas consideraciones, adaptando la solución a las necesidades específicas del proyecto o tarea. &lt;/p&gt;

</description>
      <category>programacion</category>
      <category>practica</category>
      <category>algoritmos</category>
      <category>python</category>
    </item>
    <item>
      <title>Instalando “Terminal” y subsistema Linux en Windows 11</title>
      <dc:creator>Juan Pino Contreras</dc:creator>
      <pubDate>Mon, 29 Jul 2024 20:16:19 +0000</pubDate>
      <link>https://dev.to/jpinodev/instalando-terminal-y-subsistema-linux-en-windows-11-47jl</link>
      <guid>https://dev.to/jpinodev/instalando-terminal-y-subsistema-linux-en-windows-11-47jl</guid>
      <description>&lt;p&gt;Una Terminal nos proporciona una interfaz de linea de comandos (CLI) donde el usuario escribe comandos o instrucciones en texto que serán interpretados por el sistema operativo.&lt;/p&gt;

&lt;p&gt;En 2019 Windows lanza “Terminal”, una aplicación que que busca modernizar el uso de la consola de comandos, permitiendo al usuario abrir múltiples pestañas con diferentes shells (cmd, PowerShell, WSL), modificar la interfaz (UI) y mejorando el rendimiento y compatibilidad con funcionalidades modernas como compatibilidad con UTF-8 y emojis 😜y la integración estrecha de WSL, Azure Cloud Shell, entre otras herramientas de desarrollo.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Esta guía se basa principalmente en las enseñanzas del docente Eric Maxwell de Programadores Chile.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Preparando el equipo para acercarse al modo Semi-Dios
&lt;/h2&gt;

&lt;p&gt;Tocar el cielo no es tan fácil, por lo que debemos prepararnos física y mentalmente para esto. Lo mismo ocurre con los equipos. Es probable que tu equipo no venga con esta configuración lista por lo que te dejo estas indicaciones.&lt;/p&gt;

&lt;h3&gt;
  
  
  Activando WSL
&lt;/h3&gt;

&lt;p&gt;En inicio escribe “Activar o desactivar las características de Windows”, y habilitaremos las opciones Hyper-v, Subsistema de Windows para Linux y Windows PowerShell 2.0&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ag5eua713q90socpfxh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ag5eua713q90socpfxh.png" alt="Image description" width="428" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;También lo puedes activar ejecutando este comando:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart&lt;br&gt;
&lt;/code&gt; &lt;/p&gt;
&lt;h3&gt;
  
  
  Habilitar o permitir virtualizacion en la Bios
&lt;/h3&gt;

&lt;p&gt;Es probable que la Bios de tu equipo tampoco esté habilitada para virtualizar un sistema tan poderoso y omnipresente como Linux, por lo que te invito a informarte sobre la versión de tu placa o la marca y modelo de tu equipo y buscar: “cómo ingresar a la Bios para habilitar la opción de “virtualizacion” en mi equipo {marca} {modelo} sin que explote, se queme la casa, mi familia se disuelva y terminar en la cárcel por pirómano”&lt;/p&gt;

&lt;p&gt;En tu Bios la puedes encontrar literalmente como “virtualización” o “VTX” en alguna pestaña de “avanzado”👌. Si está deshabilitada, habilítala 😒&lt;/p&gt;
&lt;h2&gt;
  
  
  Instalemos Windows Terminal ^^
&lt;/h2&gt;

&lt;p&gt;Windows nos recomienda instalar desde Microsoft Store para asegurarnos que tendremos la ultima versión y actualizaciones automáticas. Es miy probable que ya tengas instalado Terminal en tu sistema windows 11, si no es así sigue estos pasos.&lt;/p&gt;
&lt;h3&gt;
  
  
  Desde Microsoft Store:
&lt;/h3&gt;

&lt;p&gt;En el menú de inicio de Windows puedes buscar Microsoft Store, luego buscas “Terminal” y ya la puedes instalar. EZ-PZ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypcuxg8n8uk1a7zabnw8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypcuxg8n8uk1a7zabnw8.png" alt="Image description" width="382" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚠️Pon especial atención en escoger la versión regular, ya que existen otras versiones que están en etapa de prueba o de acceso anticipado.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1bierqd64rk6m1kwqkb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1bierqd64rk6m1kwqkb.png" alt="Image description" width="753" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👽Dato freak: La versión CAN por ejemplo es la versión Canary, éste tipo de versiones siempre están sujetas a errores. El nombre Canary, o Canario en español, viene de la técnica que se usaba en las minas subterráneas de entrar a la excavación con un canario, si el canario muere significa que hay una fuga de gas. 🐦🪦&lt;/p&gt;
&lt;h3&gt;
  
  
  Desde la terminal (PowerShell o CMD):
&lt;/h3&gt;

&lt;p&gt;Si eres curioso y quieres comenzar a usar y acostumbrarte a la terminal desde ya, abre tu terminal CMD o PowerShell desde inicio o con Windows + R&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs0hja5uyt4m49q44vvof.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs0hja5uyt4m49q44vvof.png" alt="Image description" width="336" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ejecutamos el siguiente comando:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;winget install --id Microsoft.WindowsTerminal -e&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjrdqke4hcxcmlvakilq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjrdqke4hcxcmlvakilq.png" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Qué estamos haciendo con ese comando?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;winget, es el gestor de paquetes de Windows.&lt;/li&gt;
&lt;li&gt;Acción install para instalar un paquete.&lt;/li&gt;
&lt;li&gt;Especificamos el identificador exacto del paquete Microsoft.WindowsTerminal para asegurarse de que el paquete correcto sea instalado.&lt;/li&gt;
&lt;li&gt;Utiliza la opción -e para realizar una coincidencia exacta del identificador del paquete.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Una vez instalada la Terminal podremos abrirla desde inicio de Windows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxry7mlag3u0658pyilia.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxry7mlag3u0658pyilia.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notarás que por defecto abre una terminal PowerShell en una pestaña y puedes abrir otras terminales, todo esto se puede configurar.&lt;/p&gt;

&lt;p&gt;Pero antes instalemos el 🎉Subsistema de Linux para Windows🎈&lt;/p&gt;
&lt;h2&gt;
  
  
  Instalando WSL Ubuntu 22.04
&lt;/h2&gt;

&lt;p&gt;Windows Subsystem for Linux permite ejecutar distribuciones de Linux nativamente en Windows, sin necesidad de una máquina virtual, proporcionando una interfaz de línea de comandos completa y lo más importante: compatibilidad con herramientas de desarrollo de Linux.&lt;/p&gt;

&lt;p&gt;Al igual que Windows Terminal, podemos instalar un subsistema Linux desde la store de Microsoft y desde la terminal.&lt;/p&gt;

&lt;p&gt;Puedes instalar diferentes distros de Linux. Si buscas “wsl” en la Microsoft Store podrás ver Ubuntu, Debian, Fedora, Arch, Alma, Suse, entre otros. Ubuntu es sugerida como la mejor distro para tomarle el gusto a ese pedazo de cielo de Linux, ya que su principal propósito es mejorar la experiencia de usuario, además de tener una gran comunidad y documentación extensa.&lt;/p&gt;

&lt;p&gt;🤓Tips del Dev: Al momento de escoger y aprender cualquier tecnología es importante tener en cuenta estos dos últimos puntos, ya que una gran comunidad y amplia documentación significa que los problemas que nos vayamos a encontrar a futuro es muy probable que estén resueltos o documentados.&lt;/p&gt;

&lt;p&gt;Esto mismo debemos considerar al momento de escoger una versión de un sistema o aplicación. Si escogemos la última versión , es muy probable que nos encontremos con errores o bugs no documentados, por otro lado si escogemos una versión muy antigua o “legacy” es muy probable que ya no se le preste soporte o no sea compatible con las últimas tecnologías.&lt;/p&gt;

&lt;p&gt;Considerando estos datazos del dev y teniendo en cuenta que estamos dando el primer acercamiento al mundo Linux, vamos a instalar el subsitema Ubuntu, en su versión 22.04 LTS (Long Term Support), ya que a la fecha de hoy, Julio 2024, es la version intermedia mejor evaluada y más estable.&lt;/p&gt;
&lt;h3&gt;
  
  
  Desde Micrsofot Store:
&lt;/h3&gt;

&lt;p&gt;En el menú inicio de Windows, ingresar a Microsoft Store y buscar Ubuntu, escoger la versión Ubuntu 24.04 LTS e instalar ^^.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0b649lr7tcncjql2vgzc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0b649lr7tcncjql2vgzc.png" alt="Image description" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Desde la terminal (PowerShell o CMD):
&lt;/h3&gt;

&lt;p&gt;Abrir nuestra nueva Terminal con PowerShell o abrir una nueva pestaña con CMD.&lt;/p&gt;

&lt;p&gt;Primero visualizaremos las versiones disponibles con el siguiente comando:&lt;br&gt;
&lt;code&gt;wsl --list --online&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxrxgyaa5i309qxwvj3c8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxrxgyaa5i309qxwvj3c8.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Es importante saber el nombre exacto que tiene la distro, si ingresamos un carácter o espacio que no corresponde nos indicara un error ya que no encuentra esa distro.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;wsl --install Ubuntu-22.04&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Nota que no especificamos LTS ya que de por sí la versión 22.04 está definida como LTS.&lt;/p&gt;

&lt;p&gt;Una vez instalada nos abrirá una nueva ventana con la Terminal ejecutando el subsitema Linux Ubuntu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/es-es/windows/wsl/basic-commands" rel="noopener noreferrer"&gt;Documentación wsl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚠️&lt;strong&gt;Atención&lt;/strong&gt;! Evita ingresar Unix username, ya que al hacerlo no seremos usuario Root. En los sistemas Linux el usuario root tiene permisos modo dios, es decir podemos hacer y deshacer sin pedir permisos ni forzando el sistema. Activa tu modo dios cerrando la ventana y reabriendo la Terminal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqkid8nms5f73thpeenb6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqkid8nms5f73thpeenb6.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
🚫🙅‍♂️🙅🙅‍♀️🚫&lt;br&gt;
Cierra esto 👆&lt;/p&gt;
&lt;h2&gt;
  
  
  Configurando Subsistema Ubuntu Linux 22.04_AllInOne_FullActivate_God_mode-NoFaKe_noKeyNeeded
&lt;/h2&gt;

&lt;p&gt;Si lo hiciste todo bien, ya eres el Dios de tu sistema y podrás ver esta belleza ✨:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3g7jg35mt9o3h5eac5o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3g7jg35mt9o3h5eac5o.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pero como en gustos no hay nada escrito, vamos a meter mano y a configurar nuestra terminal.&lt;/p&gt;

&lt;p&gt;Lo primero, configuraremos Ubuntu como terminal predeterminada, para que al abrir la terminal lo primero que veamos sea literal la cara de Dios. Para esto haz click derecho en la barra de pestañas y selecciona “configuración”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fun0a7lk3bzcbsys01oto.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fun0a7lk3bzcbsys01oto.png" alt="Image description" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se nos abrirá una nueva pestaña de configuración donde al lado izquierdo podremos ver un menú de opciones y posibilidades a configurar. Aquí escogemos la primera opción “inicio” y luego en “Perfil predeterminado” seleccionamos nuestro sistema Ubuntu 22.04.3 LTS&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxw3giqz5rydsv8qtpe8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxw3giqz5rydsv8qtpe8y.png" alt="Image description" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos a personalizar la UI.&lt;/p&gt;

&lt;p&gt;Existen varias formas de personalizar nuestra terminal ya sea de forma manual o modificando el json que contiene esta config. “Con Ctrl + Mayus (shift) + , ” podemos ingresar al json.&lt;/p&gt;

&lt;p&gt;Otra forma es seleccionando la opcion “Valores predeterminados”, ahi podremos definir un icono personalizado para la terminal, cambiar el titulo de la pestaña y definir la ejecucion como administrador.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo1x2ln30zt1frgohdsfi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo1x2ln30zt1frgohdsfi.png" alt="Image description" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aquí viene lo bueno: En la sección de Configuración adicional, opción -Apariencia podremos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modificar la combinación de colores&lt;/li&gt;
&lt;li&gt;La fuente y tamaño de la fuente&lt;/li&gt;
&lt;li&gt;Activar estilo retro&lt;/li&gt;
&lt;li&gt;Luminosidad del texto&lt;/li&gt;
&lt;li&gt;Forma del cursor&lt;/li&gt;
&lt;li&gt;Imagen de fondo&lt;/li&gt;
&lt;li&gt;Opacidad&lt;/li&gt;
&lt;li&gt;Margen o espaciado&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Puedes ir cambiando estos valores, guardar e ir visualizando los cambios en una nueva terminal en otra ventana. (para abrir otra terminal en una nueva ventana haz mayus (shift)+ click en el icono de la terminal en inicio o en la barra de inicio). Te sugiero ejecutar “htop”, donde podrás visualizar los recursos de tu sistema con varios colores destacados y asi podras definir tu configuración y previsualizar si se verá cool 🤓&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3dxqelvv7h74ay2w5ijr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3dxqelvv7h74ay2w5ijr.png" alt="Image description" width="800" height="459"&gt;&lt;/a&gt;&lt;br&gt;
Para salir de htop haz click en quit, presiona F10 o con “ctr + c”&lt;/p&gt;
&lt;h3&gt;
  
  
  Posibles errores
&lt;/h3&gt;

&lt;p&gt;Es importante que verifiques los primeros pasos, configurar la Bios y habilitar el sistema wsl.&lt;/p&gt;

&lt;p&gt;Si obtuviste este error:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fge7ezmy5piebkc2fcpuw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fge7ezmy5piebkc2fcpuw.png" alt="Image description" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como puedes ver, el error comienza indicando WslRegisterDistribution failed y nos dá un código, esto nos da una pista, hay un problema con registro de wsl.&lt;/p&gt;

&lt;p&gt;Esto se debe a la versión de wsl, que por defecto viene asignada la versión 2. Como indiqué anteriormente en esta guía, usar la ultima versión por lo general no es muy beneficioso, y este es el caso.&lt;/p&gt;

&lt;p&gt;Lo que un buen mortal semi-dios haría, sería copiar el error y buscarlo en google, los más amateurs se irían de cabeza a Chatgpt. En estos casos, Chatgpt puede que no nos ayude mucho ya que hay muchas variables en juego para resolver este error, para empezar, la documentación. Leyendo la documentación de WSL (aka biblia) sobre lo que estamos usando y poniendo toda nuestra fé (y de la cual se alimenta principalmente el chat ) veremos que existe un wsl1 y un wsl2. ¿Había una versión de wsl? al parecer sí, siendo wsl2 la ultima, lo más actualizado, lo mejor que le ha pasado al mundo, en la documentación se compara como superior en contraste a la version wsl1 y es cierto, tiene muchas mejoras, peeero no siempre lo ultimo es lo mejor.&lt;/p&gt;

&lt;p&gt;Este problema en mi caso se resolvió con este comando que establece la version wsl1 como default.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --set-default-version 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;De momento me ha funcionado bien, pero debemos considerar updatear a la versión 2 en algún momento, que de seguro traerá la solución a este problema.&lt;/p&gt;

&lt;p&gt;Si no te convence wsl1, puedes intentar volver a la versión 2 y luego hacer update.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si aun así sigues recibiendo el mismo error, prueba actualizando los registros o seguir buscando de otra forma o en otro idioma, como indiqué más arriba, hay una gran conunidad, más de alguien tuvo el mismo problema y ya lo resolvió de alguna forma, si tu lo resolviste de una forma diferente documentalo 😉&lt;/p&gt;

&lt;p&gt;En los errores está el aprendizaje, instala, desinstala, reinicia, updatea, upgradea, invierte el orden de los pasos y equivócate, luego acaricia a tu mascota, toma café, camina y avanza.&lt;/p&gt;

&lt;p&gt;Cuando veas a un dev concentrado, con las pupilas dilatadas y moviendo las manitas como loco en el teclado, es porque esta resolviendo un problema, y lograr resolver ese problema es la mejor parte de este rubro, dopamina de la buena.. no como esos burdos likes 🫢&lt;/p&gt;

&lt;p&gt;El siguiente paso es aprender a usar la terminal, saber cómo se estructura una instrucción, configurar ssh key, instalar zsh, instalar vim, pm2, abrir/cerrar puertos, conectarnos a un vps, en resumen: cómo controlar tanto poder sin morir en el intento. Stay tuned 🐟&lt;/p&gt;

</description>
      <category>ubuntu</category>
      <category>linux</category>
      <category>terminal</category>
      <category>windows11</category>
    </item>
  </channel>
</rss>
