<?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: Jorge Luis Calleja Alvarado</title>
    <description>The latest articles on DEV Community by Jorge Luis Calleja Alvarado (@wootsbot).</description>
    <link>https://dev.to/wootsbot</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%2F148847%2Fb1243f20-34f7-4492-ad88-6912b50c9d4a.jpg</url>
      <title>DEV Community: Jorge Luis Calleja Alvarado</title>
      <link>https://dev.to/wootsbot</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wootsbot"/>
    <language>en</language>
    <item>
      <title>Cómo Enfrentar y Superar la Sensación de No Aportar en una Nueva Etapa</title>
      <dc:creator>Jorge Luis Calleja Alvarado</dc:creator>
      <pubDate>Tue, 26 Sep 2023 02:21:00 +0000</pubDate>
      <link>https://dev.to/wootsbot/como-enfrentar-y-superar-la-sensacion-de-no-aportar-en-una-nueva-etapa-5h01</link>
      <guid>https://dev.to/wootsbot/como-enfrentar-y-superar-la-sensacion-de-no-aportar-en-una-nueva-etapa-5h01</guid>
      <description>&lt;p&gt;No dudaría que la mayoría hemos estado allí: nuestro primer día en la nueva empresa o en cualquier otro lugar, sintiéndonos como un pez fuera del agua bajo la mirada curiosa de los nuevos compañeros. Muchos lo conocen como el síndrome del impostor. Sin embargo, en este caso no se trata de eso, sino más bien de la sensación de no aportar lo suficiente en una nueva etapa profesional. Pero no estás solo en esto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tu ritmo es único, y eso está bien.
&lt;/h2&gt;

&lt;p&gt;Cada uno de nosotros tiene y lleva un ritmo único de adaptación. En algunos casos, pueden sentirse como en casa en un par de días, mientras que en otros puede tomar semanas o meses. Tómatelo con calma, esto está perfectamente bien. Creo que lo primero es que no te juzgues por lo rápido o lento que te sientas adaptado. Es mejor si abrazas tu proceso y reconoces que cada día es un paso hacia sentirte más cómodo y seguro.&lt;/p&gt;

&lt;h2&gt;
  
  
  El ladrón de la alegría
&lt;/h2&gt;

&lt;p&gt;Lo más fácil que hacemos es mirar a nuestro alrededor y sentir que todos están más adelante que tú, que todos están más cómodos y que todos están aportando más que tú. Pero recuerda, solo estás comparando tu comienzo con el capítulo de alguien más. Debes considerar que cada persona que ves ha pasado y ha tenido sus propios desafíos y momentos de dudas. Lo mejor que puedes hacer es no compararte; te recomiendo inspirarte en las historias y trayectorias de cada uno.&lt;/p&gt;

&lt;h2&gt;
  
  
  Estrategias para abrazar tu valor
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reconoce tus logros&lt;/strong&gt;: Es fácil olvidar lo que has logrado, pero es importante que recuerdes que has llegado hasta donde estás por tus propios méritos. No te olvides de tus logros y de lo que has aprendido en el camino.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No te compares&lt;/strong&gt;: Como mencioné antes, no te compares con los demás. Cada uno tiene su propio ritmo y su propia historia. En vez de compararte, inspírate en las historias de los demás.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Acepta que no sabes todo&lt;/strong&gt;: Es normal sentir que no sabes todo, y es cierto que no puedes saberlo todo. Acepta que estás en un proceso de aprendizaje y disfruta de ese camino.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Aprende a pedir ayuda&lt;/strong&gt;: No tengas miedo de solicitar apoyo; es normal necesitar ayuda en ciertos momentos. Aprende a pedirla y a aceptarla cuando te la ofrezcan.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Aprende a decir no&lt;/strong&gt;: Es crucial que sepas establecer límites. No puedes hacerlo todo ni saberlo todo. Aprende a decir no y a priorizar tus tareas y responsabilidades.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mentoría&lt;/strong&gt;: Busca aquel mentor en tu entorno que pueda ofrecerte consejos y perspectiva. Es excelente tener a alguien que te guíe en tu proceso y te brinde una visión externa para ayudarte a ver las cosas con mayor claridad.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Aprende a celebrar&lt;/strong&gt;: Valora y celebra tus logros, por pequeños que sean. Disfruta de cada paso que das en tu proceso de crecimiento.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pide retroalimentación&lt;/strong&gt;: Pide retroalimentación acerca de tu labor y rendimiento. Esta valiosa información te permitirá detectar oportunidades de crecimiento y consolidar tus puntos fuertes.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Un mensaje para ti
&lt;/h2&gt;

&lt;p&gt;Si estás leyendo esto y sientes que no aportas lo suficiente, quiero que sepas que tu valor no se mide por cuánto sabes el primer día, sino por tu disposición para aprender, crecer y aportar. Eres valioso, perteneces aquí y, con el tiempo, esa voz interna que duda se silenciará ante la evidencia de tus logros y contribuciones.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Configurando tu Terminal para una Experiencia de Desarrollo Frontend Superproductiva 🚀</title>
      <dc:creator>Jorge Luis Calleja Alvarado</dc:creator>
      <pubDate>Thu, 11 May 2023 21:25:00 +0000</pubDate>
      <link>https://dev.to/wootsbot/configurando-tu-terminal-para-una-experiencia-de-desarrollo-frontend-superproductiva-29nc</link>
      <guid>https://dev.to/wootsbot/configurando-tu-terminal-para-una-experiencia-de-desarrollo-frontend-superproductiva-29nc</guid>
      <description>&lt;p&gt;Como desarrolladores frontend, en los últimos años nuestra interacción con la terminal ha aumentado significativamente. &lt;/p&gt;

&lt;p&gt;Esto se debe a que ejecutamos numerosas tareas con frameworks y bibliotecas como &lt;a href="https://react.dev/"&gt;react&lt;/a&gt;, &lt;a href="https://reactnative.dev/"&gt;react-native&lt;/a&gt;, &lt;a href="https://nextjs.org/"&gt;Nextjs&lt;/a&gt;, &lt;a href="https://remix.run/"&gt;remix&lt;/a&gt;, &lt;a href="https://svelte.dev/"&gt;svelte&lt;/a&gt; , &lt;a href="https://vuejs.org/"&gt;vuejs&lt;/a&gt;, entre otros, tanto para desarrollo web como móvil. Ante esta realidad, se hace evidente la necesidad de buscar una experiencia de terminal más amigable y productiva.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Esta guía solo funciona para Linux y macOS, ya que exa aún no tiene soporte para Windows 🫣. pero podría omitir &lt;a href="https://the.exa.website/"&gt;exa&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Lista de herramientas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://hyper.is/"&gt;hyper&lt;/a&gt;:&lt;br&gt;
El objetivo del proyecto es crear una experiencia hermosa y extensible para los usuarios de la interfaz de línea de comandos, basada en tecnologías web.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.zsh.org/"&gt;Zsh&lt;/a&gt;: Es un shell diseñado para uso interactivo, aunque también es un poderoso lenguaje de scripting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://ohmyz.sh/"&gt;Oh My Zsh&lt;/a&gt;: Oh My Zsh es un framework encantador, de código abierto e impulsado por la comunidad para administrar su configuración de Zsh.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://starship.rs/"&gt;starship&lt;/a&gt;: ¡El indicador mínimo, ultrarrápido e infinitamente personalizable para cualquier shell!.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://the.exa.website/"&gt;exa&lt;/a&gt;:&lt;br&gt;
Un reemplazo moderno para el comando &lt;code&gt;ls&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://fig.io/"&gt;fig&lt;/a&gt;: La línea de comando de próxima generación. La fuente de la verdad para los secretos, scripts y credenciales SSH de su equipo.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Instalar hyper
&lt;/h2&gt;

&lt;p&gt;Hyper me ha acompañado mucho tiempo, aunque su primer commit fue en &lt;a href="https://github.com/vercel/hyper/releases?page=9"&gt;06 Oct 2016&lt;/a&gt;, no fue que lo conocí en la fecha 10 Mar 2017 por un compañero de trabajo.&lt;/p&gt;

&lt;p&gt;Con Homebrew ejecute el siguiente comando para realizar la instalación:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; hyper
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;si prefieres bajar &lt;code&gt;.app&lt;/code&gt;, te dejo el &lt;a href="https://hyper.is/#installation"&gt;link de descarga oficial de hyper&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Para más detalles sobre su configuración e instalación, consulta su documentación oficial. &lt;a href="https://hyper.is/#installation"&gt;https://hyper.is/#installation&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Instalar Zsh
&lt;/h2&gt;

&lt;p&gt;Zsh mejora la experiencia de terminal con funciones avanzadas y personalización. Es esencial para &lt;a href="https://ohmyz.sh/"&gt;Oh My Zsh&lt;/a&gt;, permitiéndote gestionar tu configuración de Zsh y aumentar tu productividad.&lt;/p&gt;

&lt;p&gt;Es bastante simple de instalar, ¡porque ahora tenemos Homebrew! Solo ejecutaremos un comando y estaremos listos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;zsh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notarás que después de que finalice la instalación, realmente no sucede nada. Tendremos que cambiar nuestro shell a Zsh, y lo hacemos con un comando bastante simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;chsh &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;which zsh&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lo que hemos hecho es cambiar nuestro shell para utilizar Zsh cada vez que iniciamos sesión en nuestra terminal. Ahora, simplemente cierra tu terminal y vuélvela a abrir, y estarás listo para usar Zsh.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Instala en otros sistemas operativos con solo seguir la guía oficial &lt;a href="https://github.com/vercel/hyper#usage"&gt;desde el repositorio oficial&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Puedes hacer uso de la configuración que te dejo a continuación:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="err"&gt;"use&lt;/span&gt; strict";
&lt;span class="p"&gt;module.exports = {
&lt;/span&gt;    config: {
        // default font size in pixels for all tabs
&lt;span class="gd"&gt;-        fontSize: 13,
&lt;/span&gt;&lt;span class="gi"&gt;+        fontSize: 12,
&lt;/span&gt;        // font family with optional fallbacks
&lt;span class="gi"&gt;+       fontFamily: "DroidSansMono Nerd Font",
+       cursorColor: 'rgba(248,28,229,0.8)',
&lt;/span&gt;        // terminal text color under BLOCK cursor
&lt;span class="gi"&gt;+       cursorAccentColor: '#000',
&lt;/span&gt;        // `'BEAM'` for |, `'UNDERLINE'` for _, `'BLOCK'` for █
        cursorShape: 'BLOCK',
&lt;span class="gi"&gt;+       foregroundColor: '#fff',
&lt;/span&gt;        // opacity is only supported on macOS
&lt;span class="gi"&gt;+       backgroundColor: '#000',
&lt;/span&gt;        // terminal selection color
&lt;span class="gi"&gt;+       selectionColor: 'rgba(248,28,229,0.3)',
&lt;/span&gt;        // border color (window, tabs)
&lt;span class="gi"&gt;+       borderColor: '#333',
&lt;/span&gt;      ...
    },
&lt;span class="gi"&gt;+   plugins: ["hyper-one-dark", "hyper-snazzy", "hyper-active-tab", "hyper-pane", "hyper-search", "hyper-aura-theme"],
&lt;/span&gt;&lt;span class="err"&gt;};&lt;/span&gt;
//# sourceMappingURL=config-default.js.map
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Instalar oh-my-zsh
&lt;/h2&gt;

&lt;p&gt;Ahora que Zsh está instalado, queremos comenzar a configurarlo para que funcione bien para nosotros. &lt;/p&gt;

&lt;p&gt;Una de las formas más fáciles de comenzar es instalando Oh My Zsh. &lt;/p&gt;

&lt;p&gt;Oh My Zsh viene con una tonelada de temas y complementos de Zsh que le ahorran mucho tiempo configurando cómo desea que se vea y funcione su shell.&lt;/p&gt;

&lt;p&gt;Instalarlo es bastante simple, solo hazlo con:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Una vez que finalice esta instalación, hará una referencia para verificar su nuevo archivo &lt;code&gt;~/.zshrc&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;Este es un archivo de configuración oculto, y aquí es donde comenzará a agregar su configuración para hacer que Zsh sea como lo desea.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Puedes visitar la documentación oficial si tienes problemas &lt;a href="https://ohmyz.sh/#install"&gt;https://ohmyz.sh/#install&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Instalar y Configurar starship
&lt;/h2&gt;

&lt;p&gt;Starship realmente me brinda una experiencia con la terminal muy agradable, desde manejar los entornos en los que estoy trabajando, hasta ejecutar comandos de manera más rápida.&lt;/p&gt;

&lt;p&gt;Ejecute el siguinte comando para realizar la instalación:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;starship
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agregue lo siguiente en su archivo de configuración de &lt;code&gt;~/.zshrc&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# s t a r s h i p&lt;/span&gt;
&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;starship init zsh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ahora solo cierra y vuelve a abrir tu terminal Hyper y pasarás de esto:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v5_vA9Eq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gct1zbt9sin5qsvajpmv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v5_vA9Eq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gct1zbt9sin5qsvajpmv.png" alt="Image description" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A esto:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n08G6gy7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i5j0wd98e2iudh335s7k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n08G6gy7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i5j0wd98e2iudh335s7k.png" alt="Image description" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Para más detalles sobre su configuración e instalación, consulta su documentación oficial. &lt;a href="https://starship.rs/guide/#%F0%9F%9A%80-installation"&gt;https://starship.rs/guide/#%F0%9F%9A%80-installation&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Instalar y Configurar Exa
&lt;/h2&gt;

&lt;p&gt;Exa no es un reemplazo directo para el comando &lt;code&gt;ls&lt;/code&gt;, pero ofrece valores predeterminados mucho más intuitivos que el comando nativo. Aunque las opciones de línea de comandos disponibles son similares,  no son exactamente iguales.&lt;/p&gt;

&lt;p&gt;Sin embargo, la mayoría de las opciones comunes funcionarán de manera consistente.&lt;/p&gt;

&lt;p&gt;Ejecute el siguinte comando para realizar la instalacion:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;exa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;cuando finalize la intslacon simplemnte cierre y abra nuevamnete su terminal &lt;code&gt;hypper&lt;/code&gt; y ejecute &lt;code&gt;exa --long --header --git&lt;/code&gt; y obtendra un resultado como el sigunete:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cN3vG6_b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8tn1qaawe8r8wb2rpmqd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cN3vG6_b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8tn1qaawe8r8wb2rpmqd.png" alt="Image description" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exa puede mostrar íconos junto a los nombres de los archivos para que sean más fáciles de distinguir. &lt;/p&gt;

&lt;p&gt;Los iconos son símbolos Unicode especiales y, como tales, requieren que la fuente que se utilice tenga los glifos correctos.&lt;/p&gt;

&lt;p&gt;Una buena solución para usar iconos en la terminal es el proyecto &lt;a href="https://www.nerdfonts.com/"&gt;Nerd Fonts&lt;/a&gt;, que parchea las fuentes de ancho fijo existentes con los íconos necesario.&lt;/p&gt;

&lt;p&gt;Personalmente uso la fuente &lt;code&gt;DroidSansMono Nerd Font&lt;/code&gt;, mi archivo de configuracion de &lt;code&gt;.hypper.js&lt;/code&gt; se ve asi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;use strict&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&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="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// default font size in pixels for all tabs&lt;/span&gt;
        &lt;span class="na"&gt;fontSize&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="c1"&gt;// font family with optional fallbacks&lt;/span&gt;
        &lt;span class="na"&gt;fontFamily&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;DroidSansMono Nerd Font&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Es necesario también agregar alias de Exa a tu archivo de configuración &lt;code&gt;.zshrc&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# E X A =&amp;gt; M A N A G E R&lt;/span&gt;
&lt;span class="nb"&gt;alias ls&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'exa --icons'&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;lsa&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'exa --all'&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;l&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'exa -lbF --git --icons'&lt;/span&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;'exa -lbGF --git --icons'&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;llm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'exa -lbGd --git --sort=modified'&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;la&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'exa -lbhHigUmuSa --time-style=long-iso --git --color-scale'&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;lx&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'exa -lbhHigUmuSa@ --time-style=long-iso --git --color-scale'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Al ejecutar los alias en Exa, se puede percibir notablemente la diferencia. Nos proporciona una salida más elegante, enriquecida con íconos, con el siguiente comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ll
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4_luwJCh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6vfrcmid7xpoidhnup12.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4_luwJCh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6vfrcmid7xpoidhnup12.png" alt="Image description" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Para más detalles sobre su configuración e instalación, consulta su documentación oficial. &lt;a href="https://the.exa.website/#installation"&gt;https://the.exa.website/#installation&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Instalar y Configuar Fig
&lt;/h2&gt;

&lt;p&gt;La línea de comando de próxima generación. La fuente de la verdad para los secretos, scripts y credenciales SSH de su equipo.&lt;/p&gt;

&lt;p&gt;Ejecute el siguinte comando para realizar la instalacion:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; fig
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para poder usarlo debemos crear una cuanta, puedo hacerlo desde la terminal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;fig login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fig no solo ofrece una funcionalidad de autocompletado al estilo de un IDE, sino que también presenta un tablero interactivo para explorar todas sus características. En este espacio, podrás supervisar la integración con tus editores de texto y terminal de manera efectiva y visual.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FBBBfg9L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x18hdpxgwinjdgty2qk7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FBBBfg9L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x18hdpxgwinjdgty2qk7.png" alt="Image description" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para integrarlo con Hyper, realiza lo siguiente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Abre el panel de control de Fig.&lt;/li&gt;
&lt;li&gt;En la sección de integraciones, activa Hyper.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Yp5q-GsN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://wootsbot.dev/_next/image%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fconfigurando-tu-terminal-para-una-experiencia-de-desarrollo-frontend-superproductiva%252Ffig_das.gif%26w%3D3840%26q%3D100" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Yp5q-GsN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://wootsbot.dev/_next/image%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fconfigurando-tu-terminal-para-una-experiencia-de-desarrollo-frontend-superproductiva%252Ffig_das.gif%26w%3D3840%26q%3D100" alt="Image description" width="800" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;¡Prepárate para una demostración sorprendente! A continuación, te muestro todo el proceso de integración y configuración que hemos realizado:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c5d7hXdE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://wootsbot.dev/_next/image%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fconfigurando-tu-terminal-para-una-experiencia-de-desarrollo-frontend-superproductiva%252Ffig_demo.gif%26w%3D3840%26q%3D100" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c5d7hXdE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://wootsbot.dev/_next/image%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fconfigurando-tu-terminal-para-una-experiencia-de-desarrollo-frontend-superproductiva%252Ffig_demo.gif%26w%3D3840%26q%3D100" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión:
&lt;/h2&gt;

&lt;p&gt;La configuración de tu terminal con Hyper, Fig, Exa, Starship y Oh My Zsh puede llevar tu productividad de desarrollo frontend al siguiente nivel. &lt;/p&gt;

&lt;p&gt;Cada una de estas herramientas aporta su propio conjunto de características y beneficios que, cuando se utilizan juntas, crean un entorno de trabajo eficiente y agradable. &lt;/p&gt;

&lt;p&gt;Ya sea que estés buscando una interfaz más atractiva, una mayor facilidad de uso, o una forma más efectiva de gestionar tus scripts y credenciales, estos poderosos complementos tienen lo que necesitas. &lt;/p&gt;

&lt;p&gt;En resumen, una terminal bien configurada no es solo un lujo, sino una necesidad para cualquier desarrollador frontend moderno.&lt;/p&gt;

</description>
      <category>dx</category>
      <category>hyper</category>
      <category>exa</category>
      <category>fig</category>
    </item>
    <item>
      <title>Zed El Mejor Editor De Texto Del Mundo</title>
      <dc:creator>Jorge Luis Calleja Alvarado</dc:creator>
      <pubDate>Fri, 31 Mar 2023 03:54:00 +0000</pubDate>
      <link>https://dev.to/wootsbot/zed-el-mejor-editor-de-texto-del-mundo-46a0</link>
      <guid>https://dev.to/wootsbot/zed-el-mejor-editor-de-texto-del-mundo-46a0</guid>
      <description>&lt;p&gt;Hace unas semanas, mientras navegaba por Twitter, me encontré con un &lt;a href="https://twitter.com/zeddotdev/status/1636034629848403968" rel="noopener noreferrer"&gt;tuit&lt;/a&gt; de la cuenta oficial de &lt;a href="https://twitter.com/zeddotdev" rel="noopener noreferrer"&gt;Zed&lt;/a&gt; en el que anunciaban la beta pública de su editor de texto. Inmediatamente me dispuse a probarlo y lo utilicé durante un par de semanas para evaluar sus funcionalidades.&lt;/p&gt;

&lt;p&gt;Zed, mi nuevo editor favorito, es increíblemente genial. Es de alto rendimiento y no requiere complementos adicionales. Su característica más destacada es la colaboración en tiempo real, lo que lo hace aún más impresionante.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mi experiencia con Zed: por qué es mi editor de texto preferido.
&lt;/h2&gt;

&lt;p&gt;Siempre he buscado lo que encontré en &lt;a href="https://www.sublimetext.com/" rel="noopener noreferrer"&gt;Sublime Text&lt;/a&gt;: un editor disponible en la velocidad de la luz, que se sienta ligero y que me proporcione una gran experiencia de codificación. Con Zed, he encontrado todo eso y más. No he tenido que sacrificar ninguna de las características esenciales, como el resaltado de sintaxis, autocompletado, sugerencias y resaltado de errores. Gracias a Zed, puedo crear software de alta calidad más rápidamente y con una sonrisa.&lt;/p&gt;

&lt;p&gt;Navegar por los archivos y carpetas de su proyecto es una experiencia fabulosa en zed, ya que me recuerda a la navegación ligera que proporcionan complementos como los que usan editores como &lt;a href="https://neovim.io/" rel="noopener noreferrer"&gt;nvim&lt;/a&gt;. Además, zed ofrece varios modos, entre ellos un modo &lt;code&gt;vim&lt;/code&gt;. Simplemente presiona el atajo &lt;code&gt;CMD + ,&lt;/code&gt; para abrir la configuración personalizada y activar el modo Vim.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Zed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;settings&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;information&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;how&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;configure&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Zed,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;see&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Zed&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;documentation:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;https://zed.dev/docs/configuring-zed&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;To&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;see&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;all&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Zed's&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;default&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;settings&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;without&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;changing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;your&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;custom&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;settings,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;run&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;`open&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;default&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;settings`&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;command&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;command&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;palette&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;`Zed`&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;application&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;menu.&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 class="nl"&gt;"vim_mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Para sus mapas de teclas podemos configurar &lt;code&gt;base_keymap&lt;/code&gt;, que pretenden replicar la sensación de otros editores como &lt;code&gt;Atom&lt;/code&gt;, &lt;code&gt;JetBrains&lt;/code&gt;, &lt;code&gt;SublimeText&lt;/code&gt;, &lt;code&gt;TextMate&lt;/code&gt;, &lt;code&gt;VSCode&lt;/code&gt;,&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Zed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;settings&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;information&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;how&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;configure&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Zed,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;see&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Zed&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;documentation:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&lt;a href="https://zed.dev/docs/configuring-zed" rel="noopener noreferrer"&gt;https://zed.dev/docs/configuring-zed&lt;/a&gt;&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;To&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;see&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;all&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Zed's&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;default&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;settings&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;without&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;changing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;your&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;custom&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;settings,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;run&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&lt;code&gt;open&amp;lt;/span&amp;gt;&amp;lt;span class="w"&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span class="err"&amp;gt;default&amp;lt;/span&amp;gt;&amp;lt;span class="w"&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;span class="err"&amp;gt;settings&lt;/code&gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;command&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;command&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;palette&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&lt;code&gt;Zed&lt;/code&gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;application&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;menu.&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"base_keymap"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"VSCode"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Explorando las características de Zed&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;Me centraré en resaltar las características de Zed que, en mi opinión, lo diferencian de otros editores de texto.&lt;/p&gt;

&lt;h3&gt;
  
  
  Colaboración
&lt;/h3&gt;

&lt;p&gt;Creo unas de las características que hacen que zed sea unos de los mejores editores de texto es la colaboración.&lt;/p&gt;

&lt;p&gt;Puede agregar un contacto para que lo tenga disponible como colaborador en los proyectos que usted elija, desplegado desde el ícono en la esquina superior derecha de la ventana, o presionando `cmd-shift-c´ y luego haciendo clic en el botón &lt;strong&gt;Agregar&lt;/strong&gt; a la derecha del cuadro de búsqueda.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqd992v92c4z400ne1i6j.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqd992v92c4z400ne1i6j.jpg" alt="Colaboración"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Puedes ver qué contactos están disponibles para colaborar y también tienes la opción de rechazar invitaciones.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26w5mjgll9wnsi3669vk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26w5mjgll9wnsi3669vk.jpg" alt="Colaboración share"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzxz3fpsr0yg7rxwqaelc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzxz3fpsr0yg7rxwqaelc.jpg" alt="Colaboración invitation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Actions
&lt;/h3&gt;

&lt;p&gt;Cada vez que vea un relámpago junto al numero de linea, significa que hay una acción de código disponible para la ubicación actual del cursor desde el servidor de idioma. Puede hacer clic en el rayo o presionar &lt;code&gt;cmd-.&lt;/code&gt; para revelar las acciones disponibles.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8sl5r39huv4u624z4egu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8sl5r39huv4u624z4egu.jpg" alt="Code Actions"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Language Servers
&lt;/h3&gt;

&lt;p&gt;Zed hace que la experiencia de editar archivos en diferentes idiomas sea más fácil y sin problemas. Al abrir un archivo en un idioma específico por primera vez, el editor descarga e inicia automáticamente el servidor de idioma correspondiente, si es compatible. Esto significa que no es necesario buscar complementos adicionales para resaltar la sintaxis o tener soporte en el lenguaje del archivo que estás editando.&lt;/p&gt;

&lt;p&gt;Si estás interesado en conocer los lenguajes que Zed soporta en cada versión, puedes consultar la lista completa"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.zed.dev/languages" rel="noopener noreferrer"&gt;https://docs.zed.dev/languages&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Breadcrumbs
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2evugnkyhgi86kdirquv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2evugnkyhgi86kdirquv.jpg" alt="Breadcrumbs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En la parte superior de los archivos muestra un resumen de los nodos de sintaxis que lo contienen y con la ruta del archivo. Esto puede ser especialmente útil en múltiples archivos o dentro de funciones grandes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quien esta detrás de este proyecto
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://zed.dev/about" rel="noopener noreferrer"&gt;Zed Industries&lt;/a&gt;, un equipo pequeño y apasionado con la visión de crear el mejor editor de texto del mundo, para usted y su equipo.  Son los creadores de Atom y Tree-sitter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Después de usar zed durante un tiempo, creo que es el mejor editor de texto para código que he probado. A pesar de que aún se encuentra en su versión beta, se ha convertido en mi editor favorito y no he podido dejar de utilizarlo. Sus características son suficientes para satisfacer mis necesidades diarias de codificación.&lt;/p&gt;

&lt;p&gt;Zed aprovecha de manera eficiente todos los núcleos de la CPU y la GPU para iniciarse al instante, cargar archivos en un abrir y cerrar de ojos y responder a sus pulsaciones de teclas en la próxima actualización de la pantalla. El rendimiento implacable lo mantiene en flujo y hace que otras herramientas se sientan lentas.&lt;/p&gt;

&lt;p&gt;La codificación productiva comienza con una herramienta que se mantiene fuera de su camino. Zed combina el poder de un IDE con la capacidad de respuesta de un editor liviano para una productividad que puede sentir al alcance de su mano.&lt;/p&gt;

&lt;p&gt;referencia: &lt;a href="https://wootsbot.dev/blog/zed-el-mejor-editor-de-texto-del-mundo" rel="noopener noreferrer"&gt;https://wootsbot.dev/blog/zed-el-mejor-editor-de-texto-del-mundo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>zed</category>
      <category>code</category>
      <category>editor</category>
      <category>ide</category>
    </item>
    <item>
      <title>Mi Experiencia Con Starlink Tras 4 Meses De Uso desde México</title>
      <dc:creator>Jorge Luis Calleja Alvarado</dc:creator>
      <pubDate>Tue, 14 Jun 2022 04:27:43 +0000</pubDate>
      <link>https://dev.to/wootsbot/mi-experiencia-con-starlink-tras-4-meses-de-uso-desde-mexico-28cn</link>
      <guid>https://dev.to/wootsbot/mi-experiencia-con-starlink-tras-4-meses-de-uso-desde-mexico-28cn</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Starlink ofrece servicio de alta velocidad y baja latencia a través de todo el mundo. Dentro de cada área de cobertura.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;En resumen, puedes visitar la &lt;a href="https://www.starlink.com/"&gt;pagina&lt;/a&gt; y aprender más sobre el tema.&lt;br&gt;
Pero creo que podríamos decir que si vives en un lugar fuera de la ciudad, donde no llega internet de calidad o un internet decente o incluso sin señal de móvil, starlink podría ayudarte, pero por supuesto deberías leer el artículo completo para que entiendas por qué es que vale cada centavo, o si mi recomendación te ayuda a decidir si es para ti.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como empezo todo
&lt;/h2&gt;

&lt;p&gt;En fechas del 2015 Elon Musk (un genio en mi opinión), en una de sus locuras, &lt;a href="https://spaceexplored.com/guides/starlink/"&gt;anuncia Starlink&lt;/a&gt;. Una red de satélites de baja órbita desplegados por todo el mundo para dar acceso a internet prácticamente desde cualquier lugar. Como formaba parte de SpaceX, con las mismas pruebas de sus lanzamientos de cohetes, podían desplegar satélites.&lt;/p&gt;

&lt;p&gt;Así empezó todo el sábado, 9 oct 2021, el tiempo avanzaba y la necesidad de mejores conexiones, también, cuando tuve la oportunidad de inscribirme a la beta que lanzó Starlink en México, Honestamente, tenía muchas dudas debido a los costos del equipo y las facturas mensuales. Y con la incertidumbre, si es tan genial como los comentarios de otros países. En ese momento, las cosas que me llevaron a considerar adquirirlo fueron las siguientes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Internet de alta velocidad&lt;/li&gt;
&lt;li&gt;Mejorar mis videollamadas en el trabajo&lt;/li&gt;
&lt;li&gt;Sentirse más productivo 😅&lt;/li&gt;
&lt;li&gt;Mi velocidad máxima era. Descarga: 8 Megas y 1 Mega Subida 🥶&lt;/li&gt;
&lt;li&gt;Soy fan de probar cosas nuevas. 😅&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;¿Estaba buscando una excusa para probar este Internet?, Realmente no lo creo con mi proveedor de internet anterior si tenía mucho que reclamar, cuando escuchas que podrías tener velocidades de hasta 150 Megas de descarga y 50 de subida envías la orden para probar la beta.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--noLKotVg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5y7c3vcvj26p0ezjyzkw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--noLKotVg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5y7c3vcvj26p0ezjyzkw.png" alt="starlink order" width="880" height="785"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tuve que esperar casi 4 meses y empezaron a enviar correos de confirmación y pago de los kits, bastante lento para mis deseos de un mejor internet, Starlink exigía un pago de todo el equipo por &lt;code&gt;$11,000&lt;/code&gt; pesos mexicanos (envío incluido) y un montaje completamente autónomo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kxn_y1nc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8xz1j9kjbdo7hk3f3y5x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kxn_y1nc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8xz1j9kjbdo7hk3f3y5x.png" alt="starlink order confirm" width="880" height="967"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finalmente llegó el momento y mi nuevo kit de internet starlink me estaba saludando. para mí fue un momento muy emotivo ya que tenia muchas ganas de una mejor conexión a internet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qumVmpUu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m3hzs3ostpxw1vcsqr10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qumVmpUu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m3hzs3ostpxw1vcsqr10.png" alt="starlink order confirm kit" width="880" height="1009"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UKKdSevF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l47buffhirqd6l71yzn7.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UKKdSevF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l47buffhirqd6l71yzn7.jpeg" alt="starlink order confirm kit paso 2" width="880" height="660"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dEujfKlA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kid6kx5syhvxv7fkqazp.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dEujfKlA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kid6kx5syhvxv7fkqazp.jpeg" alt="starlink ki" width="880" height="1173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aunque hay mucho cable y cosas en la caja, todo lo que tienes que hacer es enchufar la corriente, conectar el ruter a la misma fuente de alimentación, poner el receptor sobre su plataforma y él mismo ya buscará los satélites mirando al cielo del norte.&lt;br&gt;
Lo puse en el techo de la casa.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dqF9bFKL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7tedauirmt32ekf2as1k.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dqF9bFKL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7tedauirmt32ekf2as1k.jpeg" alt="starlink instalation" width="880" height="1173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Desde dónde me conecto a mi Starlink
&lt;/h2&gt;

&lt;p&gt;Claro para entender por qué me asombra tanto el tema de recomendar y dar mi punto de vista es mostrarles desde dónde me conecto.&lt;/p&gt;

&lt;p&gt;Básicamente soy de un lugar rural llamado &lt;strong&gt;San Juan Omeapa&lt;/strong&gt; un pequeño pueblo en la capital de Guerrero.&lt;/p&gt;

&lt;p&gt;Esta es una captura del pueblo del que te hablé.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GWKMeTX9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/avcctifpb9lnhezah8m7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GWKMeTX9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/avcctifpb9lnhezah8m7.png" alt="Chilpancingo maps" width="880" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verás que es un pueblo muy pequeño, no más de 1000 personas, y no tenemos acceso a la señal del móvil.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jcMajrbq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l21hgruvn2za3a5an9rw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jcMajrbq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l21hgruvn2za3a5an9rw.png" alt="san juan omeapa maps" width="880" height="583"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora bien, pero ¿qué velocidades ofrece? Lo he llevado a varios lugares alejados de la ciudad y estas son las rápidas respuestas que he tenido.&lt;/p&gt;

&lt;p&gt;Las pruebas que realizo realmente me han sorprendido mucho ya que nunca pensé que tendría un internet tan bueno.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RtpCoo9x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kqcrlu0krejxzn4puj16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RtpCoo9x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kqcrlu0krejxzn4puj16.png" alt="tarlink test" width="880" height="730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;He tenido cortes de hasta 15 minutos pero esto es comprensible ya que estaba en proceso de beta, lo más curioso es que deje de preocuparme por mi conexión y hago pruebas solo por curiosidad.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E57A4VSW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/52auyjw57wppjzn1hl5o.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E57A4VSW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/52auyjw57wppjzn1hl5o.jpeg" alt="tarlink test" width="603" height="1304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ventajas y desventajas
&lt;/h2&gt;

&lt;p&gt;La verdad no ha habido problemas con la conexión, con el tiempo starlink está lanzando nuevos satélites y he visto como ha mejorado la estabilidad del servicio.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ventajas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Velocidad definitivamente&lt;/li&gt;
&lt;li&gt;Movilidad&lt;/li&gt;
&lt;li&gt;Puedes cancelar cuando no necesites internet de starlink y reactivar cuando lo necesites&lt;/li&gt;
&lt;li&gt;Puedo transmitir&lt;/li&gt;
&lt;li&gt;Juega juegos en línea con mejor calidad&lt;/li&gt;
&lt;li&gt;Calidad en mis llamadas de trabajo&lt;/li&gt;
&lt;li&gt;Adiós al estrés por el mal servicio de internet&lt;/li&gt;
&lt;li&gt;Mejor experiencia en la navegación por la web&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Desventajas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Yo pago el precio $2,299.00 pesos mexicanos de manera mensual&lt;/li&gt;
&lt;li&gt;A veces la latencia es alta&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Quiero ser honesto, definitivamente es un internet con precio alto, pero vale la pena cada centavo si vives en un lugar o decides vivir lo más lejos de la ciudad, si necesitas viajar puedes llevarlo contigo.&lt;/p&gt;

&lt;p&gt;Es muy estable no es un internet perfecto pero la mayoría de las veces nunca te das cuenta si estuviste sin internet por unos segundos, Principalmente si está lejos del acceso de calidad a estas conexiones, esto podría cambiar tu forma de vivir ya que puedes tomar mejores decisiones sobre dónde quieres moverte para establecerse, ya sea en la ciudad o en un lugar más tranquilo como lo hago actualmente.&lt;/p&gt;

&lt;p&gt;link &lt;a href="https://www.wootsbot.dev/blog/mi-experiencia-con-starlink-tras-4-meses-de-uso-en-mexico"&gt;https://www.wootsbot.dev/blog/mi-experiencia-con-starlink-tras-4-meses-de-uso-en-mexico&lt;/a&gt;&lt;/p&gt;

</description>
      <category>starlink</category>
      <category>internet</category>
      <category>spacex</category>
    </item>
    <item>
      <title>¿Qué es XState y por qué usar máquinas de estado?</title>
      <dc:creator>Jorge Luis Calleja Alvarado</dc:creator>
      <pubDate>Thu, 09 Jun 2022 03:01:04 +0000</pubDate>
      <link>https://dev.to/wootsbot/que-es-xstate-y-por-que-usar-maquinas-de-estado-10bl</link>
      <guid>https://dev.to/wootsbot/que-es-xstate-y-por-que-usar-maquinas-de-estado-10bl</guid>
      <description>&lt;p&gt;Una de las bibliotecas clave que utilizo actualmente en mis desarrollos es XState. En esta pequeña publicación, Quiero mostrarte por qué, sinceramente, es uno de los descubrimientos más importantes que he hecho recientemente sobre programación y por qué te recomiendo que lo implementes.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué es XState?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;XState es una biblioteca para crear, interpretar y ejecutar máquinas de estado finito y diagramas de estado, así como para administrar las invocaciones de esas máquinas como actores.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sinceramente tomé esta definición del &lt;a href="https://xstate.js.org/" rel="noopener noreferrer"&gt;sitio oficial&lt;/a&gt;, pero no se preocupe si no esta familiarizado con los conceptos de máquinas de estado y estados finitos, parecen complejos pero en realidad no lo son.&lt;/p&gt;

&lt;p&gt;Si crees que necesitas ampliar tus conocimientos al respecto, en la documentación puedes encontrar los conceptos, pero en resumen, xstate te ayuda a definir de forma declarativa toda tu lógica de negocio de tus aplicaciones, facilitando su interceptación, interacción y respuesta con una gran confianza.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Por qué máquinas de estado?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Máquinas de estado: Una máquina de estados finitos es un modelo matemático de computación que describe el comportamiento de un sistema que puede estar en un solo estado en un momento dado. Por ejemplo, supongamos que puede estar representado por una máquina de estado con un número finito (2) de estados: dormido o despierto. En un momento dado, estás dormido o despierto. Es imposible que estés dormido y despierto al mismo tiempo, y es imposible que no estés ni dormido ni despierto.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;En realidad, una máquina de estado es un modelo explícito a lo largo del tiempo de su estado, por lo que le ayuda a definir su lógica de negocio de una manera más concisa, también le ayuda a comunicarse mejor con UI/UX y otros compañeros de equipo que no son desarrolladores, lo que hace que su producto sea más robusto y preparado para el futuro. Creo que lo hace atractivo para mí y darle una oportunidad.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visualizador y un ejemplo
&lt;/h2&gt;

&lt;p&gt;Una gran ventaja de xstate es que tiene un visor fantástico en línea y en editores de texto, lo que le permite ver su gráfico de estado en su totalidad.&lt;/p&gt;

&lt;p&gt;así que digamos que tenemos una solicitud para recuperar datos de una API, que representaríamos de la siguiente manera.&lt;/p&gt;

&lt;p&gt;Los estados que asignamos a nuestra máquina son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;idle&lt;/code&gt;: Es el inicio y es por defecto cuando arrancamos nuestra máquina.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;loading&lt;/code&gt;: Este estado nos ayudara a saber que la llamada a la api ha iniciado y esta en proceso de ser resuelta.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;failure&lt;/code&gt;: Nos ayudará a saber si la llamada no tuvo éxito.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;loaded&lt;/code&gt;: Si la llamada es exitosa, pasaremos a este estado y nuestra máquina terminará, ya que es un estado de tipo &lt;code&gt;final&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Los eventos que tendrá nuestra máquina son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;FETCH&lt;/code&gt;: Nos ayudará a pasar del estado de &lt;code&gt;idle&lt;/code&gt; al &lt;code&gt;loading&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;FETCH_CANCEL&lt;/code&gt;: Nos llevará de vuelta al estado &lt;code&gt;idle&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;FETCH_RETRY&lt;/code&gt;: Nos ayudará a volver al estado &lt;code&gt;loading&lt;/code&gt; cuando estamos en un estado &lt;code&gt;failure&lt;/code&gt;, un modo de reintento al llamar a la API.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;FETCH_SUCCESS&lt;/code&gt;: Pasar del estado de &lt;code&gt;loading&lt;/code&gt; al estado &lt;code&gt;loaded&lt;/code&gt;, como una forma de terminar la máquina con éxito.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;FETCH_ERROR&lt;/code&gt;: Pasar del estado de &lt;code&gt;loading&lt;/code&gt; al estado &lt;code&gt;failure&lt;/code&gt;, esto sucede si hay un error en la llamada a la API.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;En la próxima iteración, verá cómo pasó del estado &lt;code&gt;idle&lt;/code&gt;, con el evento &lt;code&gt;FETCH&lt;/code&gt; al estado &lt;code&gt;loading&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feknwl2nmre2ipz3resf0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feknwl2nmre2ipz3resf0.gif" alt="FETCH"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En el estado en que se encuentra la máquina &lt;code&gt;loading&lt;/code&gt;, entonces nos habilita 3 eventos que son &lt;code&gt;FETCH_CANCEL&lt;/code&gt;, &lt;code&gt;FETCH_SUCCESS&lt;/code&gt;, &lt;code&gt;FETCH_ERROR&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;En este ejemplo simularemos que nuestro usuario quiere cancelar la llamada lo cual nos apoyará desde el evento &lt;code&gt;FETCH_CANCEL&lt;/code&gt;, lo que el evento nos va a llevar del estado &lt;code&gt;loading&lt;/code&gt; al estado &lt;code&gt;idle&lt;/code&gt; y habilitará el evento nuevamente &lt;code&gt;FETCH&lt;/code&gt;, esto para que pueda realizar el flujo de nuevo.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfnvimacnwdjqbnuija5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfnvimacnwdjqbnuija5.gif" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
Para simular una llamada a la api no es exitosa nos ayudará el evento &lt;code&gt;FETCH_ERROR&lt;/code&gt;, nos va a llevar del estado &lt;code&gt;loading&lt;/code&gt; al estado &lt;code&gt;failure&lt;/code&gt;, con ayuda del evento &lt;code&gt;FETCH_ERROR&lt;/code&gt;. y nos habilitará el evento &lt;code&gt;FETCH_RETRY&lt;/code&gt; para poder hacer un reintento.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy11k61xr1rbvtll3yg6g.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy11k61xr1rbvtll3yg6g.gif" alt="FETCH_ERROR"&gt;&lt;/a&gt;&lt;br&gt;
Así que ahora estamos en un estado de &lt;code&gt;failure&lt;/code&gt; y con el evento &lt;code&gt;FETCH_RETRY&lt;/code&gt; vamos a regresar al estado &lt;code&gt;loading&lt;/code&gt; para poder hacer un reintento.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ka7hi7z1y1qlj3tsbte.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ka7hi7z1y1qlj3tsbte.gif" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
Con todos los estados expuestos en este momento, es hora de ver cómo llegamos al estado de &lt;code&gt;loaded&lt;/code&gt;, nos apoyamos el evento &lt;code&gt;FETCH_SUCCESS&lt;/code&gt;, y esto termina el flujo del estado de la máquina.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj2buhswtuu45dgdg7pcc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj2buhswtuu45dgdg7pcc.gif" alt="FETCH_SUCCESS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Realmente creo que una de las razones por las que las máquinas de estados finitos se han vuelto tan populares es porque tener que escribir explícitamente todo tu estado te ayuda a pensar en un caos más extremo y probablemente a descubrir algunos errores que te perdiste en alguna parte. 🤗&lt;/p&gt;

</description>
      <category>xstate</category>
      <category>react</category>
      <category>statemachine</category>
    </item>
    <item>
      <title>Uso de la funcion gen_random_uuid() nativa de Postgresql en Supabase + Prismajs</title>
      <dc:creator>Jorge Luis Calleja Alvarado</dc:creator>
      <pubDate>Tue, 07 Jun 2022 14:27:44 +0000</pubDate>
      <link>https://dev.to/wootsbot/uso-de-la-funcion-genrandomuuid-nativa-de-postgresql-en-supabase-prismajs-3l41</link>
      <guid>https://dev.to/wootsbot/uso-de-la-funcion-genrandomuuid-nativa-de-postgresql-en-supabase-prismajs-3l41</guid>
      <description>&lt;p&gt;PostgreSQL incluye una función para generar un &lt;strong&gt;UUID&lt;/strong&gt;, la exponen con el nombre &lt;code&gt;gen_random_uuid()&lt;/code&gt; → uuid. Esta función devuelve un UUID de versión 4 (aleatorio). Este es el tipo de UUID más utilizado y es apropiado para la mayoría de las aplicaciones y lo haremos con la ayuda de&lt;br&gt;
&lt;a href="https://supabase.com/" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt; + &lt;a href="https://www.prisma.io/" rel="noopener noreferrer"&gt;Prismajs&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Algunas funciones de bases de datos nativas son parte de una extensión. Por ejemplo, &lt;code&gt;gen_random_uuid()&lt;/code&gt; es parte del módulo &lt;a href="https://www.postgresql.org/docs/10/pgcrypto.html" rel="noopener noreferrer"&gt;&lt;code&gt;pgcrypto&lt;/code&gt;&lt;/a&gt;. El módulo pgcrypto proporciona funciones criptográficas para PostgreSQL.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Creando modelo User
&lt;/h2&gt;

&lt;p&gt;En el &lt;code&gt;schema.prisma&lt;/code&gt; voy a crear el modelo &lt;code&gt;User&lt;/code&gt; con los siguientes atributos, la propiedad &lt;code&gt;@default(uuid())&lt;/code&gt; nos genera un identificador único global basado en la especificación UUID. Este es un ejemplo que puedes encontrar en la &lt;a href="https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#uuid" rel="noopener noreferrer"&gt;documentacion de prisma&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;model&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="nb"&gt;String&lt;/span&gt;   &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;id&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;default&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt;        &lt;span class="nb"&gt;String&lt;/span&gt;
  &lt;span class="nx"&gt;userName&lt;/span&gt;    &lt;span class="nb"&gt;String&lt;/span&gt;   &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user_name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Pero queremos hacer uso de la función &lt;code&gt;gen_random_uuid()&lt;/code&gt; de &lt;strong&gt;PostgreSQL&lt;/strong&gt;, Así que los cambios que tenemos que hacer son los siguientes.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="err"&gt;

&lt;/span&gt;  model User {
&lt;span class="gd"&gt;-    id    String   @id @default(uuid())
&lt;/span&gt;&lt;span class="gi"&gt;+    id    String   @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
&lt;/span&gt;&lt;span class="err"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;dbgenerated&lt;/code&gt; Representa valores predeterminados que no se pueden expresar en el esquema de Prisma (como &lt;code&gt;random()&lt;/code&gt;).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;entonces nuestro modelo final sería el siguiente.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;model&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="nb"&gt;String&lt;/span&gt;   &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;id&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;default&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;dbgenerated&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gen_random_uuid()&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Uuid&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt;        &lt;span class="nb"&gt;String&lt;/span&gt;
  &lt;span class="nx"&gt;userName&lt;/span&gt;    &lt;span class="nb"&gt;String&lt;/span&gt;   &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user_name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Veremos que en el dashboard de supabase al crear un nuevo usuario en la columna &lt;code&gt;id&lt;/code&gt; veremos po defecto &lt;code&gt;gen_random_uuid()&lt;/code&gt;.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Conclusión
&lt;/h3&gt;

&lt;p&gt;En PostgreSQL, existen varias alternativas a los campos de ID, cada una de las cuales tiene un caso de uso adecuado para usar o no, con &lt;code&gt;gen_random_uuid&lt;/code&gt; lo que le devolverán son incuestionablemente únicos, lo que garantiza que reciba datos precisos.&lt;/p&gt;

&lt;p&gt;También puede usar &lt;code&gt;dbgenerated()&lt;/code&gt; para establecer el valor predeterminado para los tipos admitidos. Por ejemplo, puede generar UUID a nivel de base de datos en lugar de depender del &lt;code&gt;uuid()&lt;/code&gt; de Prisma.&lt;/p&gt;

&lt;p&gt;links: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.wootsbot.dev/blog/uso-de-la-funcion-gen-random-uuid-nativa-de-postgresql-en-supabase-prismajs" rel="noopener noreferrer"&gt;https://www.wootsbot.dev/blog/uso-de-la-funcion-gen-random-uuid-nativa-de-postgresql-en-supabase-prismajs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>postgres</category>
      <category>supabase</category>
      <category>prisma</category>
      <category>pgcrypto</category>
    </item>
    <item>
      <title>Turborepo Mejorando La Experiencia De Desarrollo En Monorepos</title>
      <dc:creator>Jorge Luis Calleja Alvarado</dc:creator>
      <pubDate>Fri, 01 Apr 2022 05:58:25 +0000</pubDate>
      <link>https://dev.to/wootsbot/turborepo-mejorando-la-experiencia-de-desarrollo-en-monorepos-3c2h</link>
      <guid>https://dev.to/wootsbot/turborepo-mejorando-la-experiencia-de-desarrollo-en-monorepos-3c2h</guid>
      <description>&lt;p&gt;&lt;a href="https://turborepo.org/" rel="noopener noreferrer"&gt;TurboRepo&lt;/a&gt; será una gran tendencia este año 2022, por lo que rápidamente me di a la tarea de escribir y tratar de explicar&lt;br&gt;
qué es, cómo usar TurboRepo y cómo reinventa las técnicas del sistema de compilación para mejorar la experiencia de desarrollo con monorepos.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué es TurboRepo?
&lt;/h2&gt;

&lt;p&gt;Como la &lt;a href="https://turborepo.org/" rel="noopener noreferrer"&gt;pagina oficial&lt;/a&gt; lo define: &lt;strong&gt;Turborepo es un sistema de compilación de alto rendimiento para bases de código JavaScript y TypeScript.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Turborepo reinventa las técnicas de sistemas de compilación utilizadas por Facebook y Google para eliminar la carga y los gastos generales de mantenimiento.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Este sistema de compilación podría mejorar las velocidades de compilación aproximadamente entre un 65 % y un 85 % de tus monorepositorios.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;En la siguiente imagen muestro la línea de tiempo de ejecución de tareas de un monorepo con turborepo y con 3 paquetes A, B, C tales que A y C dependen de B&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fturborepo-mejorando-la-experiencia-de-desarrollo-en-monorepos%252Fturborepo-line.png%26w%3D3840%26q%3D100" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fturborepo-mejorando-la-experiencia-de-desarrollo-en-monorepos%252Fturborepo-line.png%26w%3D3840%26q%3D100" alt="CSS Overview panel"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mismo ejemplo con &lt;a href="https://lerna.js.org/" rel="noopener noreferrer"&gt;lerna&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fturborepo-mejorando-la-experiencia-de-desarrollo-en-monorepos%252Flerna-line.png%26w%3D3840%26q%3D100" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fturborepo-mejorando-la-experiencia-de-desarrollo-en-monorepos%252Flerna-line.png%26w%3D3840%26q%3D100" alt="CSS Overview panel"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué hace TurboRepo?
&lt;/h2&gt;

&lt;p&gt;Sus principios de Turbo Repo es nunca volver a calcular el trabajo que se ha hecho antes.&lt;/p&gt;

&lt;p&gt;Para esto genera un gráfico de dependencia a partir de un pipeline de compilación, este se configura en el archivo &lt;code&gt;package.json&lt;/code&gt; o &lt;code&gt;turbo.json&lt;/code&gt;, ejecuta cada tarea y encuentra y toma huellas almacenadas en caché de los resultados generados por tareas ejecutadas previamente.&lt;/p&gt;

&lt;p&gt;¿Qué sucede cuando se inicia una tarea por segunda vez? Si turborepo encuentra una huella digital, la restaura desde la memoria caché y reproduce los registros.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turborepo gestionando tareas
&lt;/h2&gt;

&lt;p&gt;En este ejemplo tenemos la siguiente estructura de archivos.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;

basic
├─┬ node_modules
│ │├─┬ @turborepo
│
│ README.md
│ .gitignore
│ .eslintrc.js
│ package.json
│ turbo.json
│ yarn.lock
│
└───packages
│ ├───config
│ │ ├───eslint-preset.js
│ │ └───package.json
│ │
│ ├───tsconfig
│ │ ├───package.json
│ │ └───base.json
│ │ └───nextjs.js
│ │ └───react-library.json
│ │
│ ├───ui
│ │ └───package.json
│ │ ├───Button.tsx
│ │ └───index.tsx
│ │ └───tsconfig.json&lt;span class="sb"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Destacaremos &lt;code&gt;turbo.json&lt;/code&gt; con la siguientes tareas &lt;code&gt;build&lt;/code&gt;, &lt;code&gt;lint&lt;/code&gt;, &lt;code&gt;dev&lt;/code&gt;, &lt;code&gt;clean&lt;/code&gt;. Estas tareas se pueden actualizar con las requeridas por su proyecto y deben ser consistentes con los scripts &lt;code&gt;package.json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;En el archivo &lt;code&gt;turbo.json&lt;/code&gt; es donde se definen las relaciones topológicas entre las tareas de compilación&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;turbo.json&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 class="nl"&gt;"pipeline"&lt;/span&gt;&lt;span class="p"&gt;:&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 class="nl"&gt;"build"&lt;/span&gt;&lt;span class="p"&gt;:&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 class="nl"&gt;"dependsOn"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"^build"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"outputs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"dist/**"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;".next/**"&lt;/span&gt;&lt;span class="p"&gt;]&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 class="nl"&gt;"lint"&lt;/span&gt;&lt;span class="p"&gt;:&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 class="nl"&gt;"outputs"&lt;/span&gt;&lt;span class="p"&gt;:&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 class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dev"&lt;/span&gt;&lt;span class="p"&gt;:&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 class="nl"&gt;"cache"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&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 class="nl"&gt;"clean"&lt;/span&gt;&lt;span class="p"&gt;:&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 class="nl"&gt;"cache"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&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 class="p"&gt;}&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;En el archivo &lt;code&gt;package.json&lt;/code&gt; estan los scripts que turborepo gestionara&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;package.json&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 class="nl"&gt;"private"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"workspaces"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"apps/*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"packages/*"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&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 class="nl"&gt;"clean"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"turbo run clean"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"build"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"turbo run build"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dev"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"turbo run dev --parallel"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"lint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"turbo run lint"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"format"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"prettier --write &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;**/*.{ts,tsx,md}&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;"&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 class="nl"&gt;"devDependencies"&lt;/span&gt;&lt;span class="p"&gt;:&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 class="nl"&gt;"prettier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^2.5.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"turbo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"latest"&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 class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Ejecutaremos la tarea &lt;code&gt;build&lt;/code&gt;, por ser la primera vez turborepo escribió su primer cache.&lt;/p&gt;

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

$ yarn build


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fturborepo-mejorando-la-experiencia-de-desarrollo-en-monorepos%252Fturborepo_1.gif%26w%3D3840%26q%3D100" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fturborepo-mejorando-la-experiencia-de-desarrollo-en-monorepos%252Fturborepo_1.gif%26w%3D3840%26q%3D100" alt="CSS Overview panel"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si ejecutamos la tarea &lt;code&gt;build&lt;/code&gt; por segunda vez, turborepo no volverá a ejecutar el trabajo que ya se ha hecho, sino&lt;br&gt;
que lo tomará de la memoria caché.&lt;/p&gt;

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

$ yarn build


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fturborepo-mejorando-la-experiencia-de-desarrollo-en-monorepos%252Fturborepo_2.gif%26w%3D3840%26q%3D100" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fturborepo-mejorando-la-experiencia-de-desarrollo-en-monorepos%252Fturborepo_2.gif%26w%3D3840%26q%3D100" alt="CSS Overview panel"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusión
&lt;/h3&gt;

&lt;p&gt;He visto muchos proyectos open source de muchas empresas que desarrollan software, parecen estar migrando hacia monorepos para almacenar su código, algo ha considerar es que las herramientas que se utilizan para esta administración de compilación, especialmente para JavaScript/TypeScript, parecen ser demasiado lentas, es por eso que turborepo es algo que debería considerar agregar a su flujo de desarrollo.&lt;/p&gt;

&lt;p&gt;Turborepo está diseñado para adaptarse de forma incremental, por lo que puede agregarlo a sus proyectos de forma gradual y parcial en unos minutos.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://github.com/vercel/turborepo/tree/main/examples/basic" rel="noopener noreferrer"&gt;Ejemplos&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;links: &lt;a href="https://www.wootsbot.dev/blog/turborepo-mejorando-la-experiencia-de-desarrollo-en-monorepos" rel="noopener noreferrer"&gt;https://www.wootsbot.dev/blog/turborepo-mejorando-la-experiencia-de-desarrollo-en-monorepos&lt;/a&gt;&lt;/p&gt;

</description>
      <category>turborepo</category>
      <category>monorepos</category>
      <category>typescript</category>
      <category>vercel</category>
    </item>
    <item>
      <title>Identificar posibles mejoras de CSS en su sitio web</title>
      <dc:creator>Jorge Luis Calleja Alvarado</dc:creator>
      <pubDate>Thu, 10 Mar 2022 00:45:00 +0000</pubDate>
      <link>https://dev.to/wootsbot/identificar-posibles-mejoras-de-css-en-su-sitio-web-2c9c</link>
      <guid>https://dev.to/wootsbot/identificar-posibles-mejoras-de-css-en-su-sitio-web-2c9c</guid>
      <description>&lt;p&gt;Esta característica nos ofrece información detallada sobre colores, fuentes, media queries y declaraciones no utilizadas (Unused declarations).&lt;br&gt;
Esta función es útil cuando realiza modificaciones CSS en la interfaz de usuario y ya no necesita utilizar herramientas de terceros como el selector de color.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Se trata de una función en faces de pruebas de Chrome 96. El equipo de Google Chrome está trabajando activamente en esta función.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Activar CSS Overview
&lt;/h2&gt;

&lt;h3&gt;
  
  
  CSS Overview panel
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Abra cualquier página web&lt;/li&gt;
&lt;li&gt;Abra DevTools&lt;/li&gt;
&lt;li&gt;Haga clic en Más opciones&amp;gt; Más herramientas&amp;gt; CSS Overview.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fidentificar-posibles-mejoras-de-CSS-en-su-sitio-web%252Fstep-2.png%26w%3D3840%26q%3D100" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fidentificar-posibles-mejoras-de-CSS-en-su-sitio-web%252Fstep-2.png%26w%3D3840%26q%3D100" alt="CSS Overview panel"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Ejecutar CSS Overview report
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Haga clic en el botón Capturar descripción general (Capture overview) para generar un informe de descripción general CSS de su página.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fidentificar-posibles-mejoras-de-CSS-en-su-sitio-web%252Fstep-3.png%26w%3D3840%26q%3D100" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fidentificar-posibles-mejoras-de-CSS-en-su-sitio-web%252Fstep-3.png%26w%3D3840%26q%3D100" alt="Ejecutar CSS Overview report"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Overview summary
&lt;/h3&gt;

&lt;p&gt;Un resumen de alto nivel del CSS de su página.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fidentificar-posibles-mejoras-de-CSS-en-su-sitio-web%252Fstep-3.png%26w%3D3840%26q%3D100" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fidentificar-posibles-mejoras-de-CSS-en-su-sitio-web%252Fstep-3.png%26w%3D3840%26q%3D100" alt="Overview summary"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Colores
&lt;/h3&gt;

&lt;p&gt;Todos los colores de tu página. Los colores están agrupados por usos como colores de fondo, colores de texto, etc. También le muestra los textos que tienen problemas de bajo contraste.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fidentificar-posibles-mejoras-de-CSS-en-su-sitio-web%252Fstep-5.png%26w%3D3840%26q%3D100" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fidentificar-posibles-mejoras-de-CSS-en-su-sitio-web%252Fstep-5.png%26w%3D3840%26q%3D100" alt="Colores"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se puede hacer clic en cada uno de los colores. Por ejemplo, digamos que este color de borde &lt;code&gt;#52A9FF&lt;/code&gt; no coincide con el esquema de color de su sitio, haga clic en él para obtener una lista de los elementos que usan el color.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fidentificar-posibles-mejoras-de-CSS-en-su-sitio-web%252Fstep-6.png%26w%3D3840%26q%3D100" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.wootsbot.dev%2F_next%2Fimage%3Furl%3D%252Fstatic%252Fimages%252Fblog%252Fidentificar-posibles-mejoras-de-CSS-en-su-sitio-web%252Fstep-6.png%26w%3D3840%26q%3D100" alt="Colores"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Utilice el panel Descripción general de CSS (CSS Overview) para comprender mejor el CSS de su página, con esto puede identificar posibles mejoras ya aplicarlas en sus paginas.&lt;/p&gt;

&lt;p&gt;links: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.wootsbot.dev/blog/identificar-posibles-mejoras-de-CSS-en-su-sitio-web" rel="noopener noreferrer"&gt;https://www.wootsbot.dev/blog/identificar-posibles-mejoras-de-CSS-en-su-sitio-web&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>css</category>
      <category>developers</category>
      <category>chrome</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Embellecer importaciones absolutas con alias en nextjs</title>
      <dc:creator>Jorge Luis Calleja Alvarado</dc:creator>
      <pubDate>Tue, 08 Mar 2022 23:53:58 +0000</pubDate>
      <link>https://dev.to/wootsbot/embellecer-importaciones-absolutas-con-alias-en-nextjs-56gc</link>
      <guid>https://dev.to/wootsbot/embellecer-importaciones-absolutas-con-alias-en-nextjs-56gc</guid>
      <description>&lt;p&gt;Estas trabajando en un proyecto grande o pequeño y algunas de sus declaraciones de importación se ven algo asi &lt;code&gt;import Component from '../../../Component'&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Desde Next.js &lt;code&gt;v9.4.x&lt;/code&gt; y posteriores, hace que la configuración de importaciones absolutas sea muy simple para proyectos de JavaScript y TypeScript.&lt;br&gt;
Todo lo que necesita hacer es agregar la configuración &lt;code&gt;baseUrl&lt;/code&gt; a &lt;code&gt;jsconfig.json&lt;/code&gt; &lt;a href="https://code.visualstudio.com/docs/languages/jsconfig#_jsconfig-options"&gt;(proyectos JS)&lt;/a&gt; o &lt;code&gt;tsconfig.json&lt;/code&gt; &lt;a href="https://www.typescriptlang.org/docs/handbook/module-resolution.html#base-url"&gt;(proyectos TS)&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// tsconfig.json or jsconfig.json&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;compilerOptions&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;baseUrl&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esto permitirá importaciones absolutas desde &lt;code&gt;"."&lt;/code&gt; (el directorio raíz).&lt;/p&gt;

&lt;p&gt;Los editores como VSCode admiten automáticamente la configuración en jsconfig.json, por lo que &lt;code&gt;Command + Click&lt;/code&gt; para saltar al origen de un archivo funcionará como de costumbre.&lt;br&gt;
&lt;a href="https://github.com/tleunen/babel-plugin-module-resolver#editors-autocompletion"&gt;Atom e IntelliJ&lt;/a&gt; también tienen soporte para reescrituras.&lt;/p&gt;
&lt;h2&gt;
  
  
  Embellecer con Alias
&lt;/h2&gt;

&lt;p&gt;Además, Next.js &lt;code&gt;v9.4.x&lt;/code&gt; también admite la opción de rutas, que le permite crear alias de módulos personalizados.&lt;br&gt;
Por ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// tsconfig.json or jsconfig.json&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;compilerOptions&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;baseUrl&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;paths&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/*&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;components/*&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Luego puede usar su alias así:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// importacion absoluta 'components/button'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@/components/Button&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Entonces las importaciones absolutas en Next.js son muy fáciles de configurar, pueden ser muy útiles para proyectos grandes.&lt;br&gt;
Pero por que no simplemente tener una mejor &lt;strong&gt;DX&lt;/strong&gt; (Experiencia de Desarrollador).&lt;/p&gt;

&lt;p&gt;links: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.wootsbot.dev/blog/embellecer-importaciones-absolutas-con-alias-en-nextjs"&gt;https://www.wootsbot.dev/blog/embellecer-importaciones-absolutas-con-alias-en-nextjs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>nextjs</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
