<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by gomflo on Medium]]></title>
        <description><![CDATA[Stories by gomflo on Medium]]></description>
        <link>https://medium.com/@gomflo?source=rss-2ef513419bd5------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/2*dpcSm2RyLS9CLDff7CnJ3A.jpeg</url>
            <title>Stories by gomflo on Medium</title>
            <link>https://medium.com/@gomflo?source=rss-2ef513419bd5------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 05 Jun 2026 03:34:11 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@gomflo/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Como me hice viral en TikTok … Sin Bailar]]></title>
            <link>https://gomflo.medium.com/como-me-hice-viral-en-tiktok-sin-bailar-d94a8da9f226?source=rss-2ef513419bd5------2</link>
            <guid isPermaLink="false">https://medium.com/p/d94a8da9f226</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[programmer]]></category>
            <category><![CDATA[tik-tok]]></category>
            <category><![CDATA[bots]]></category>
            <category><![CDATA[whatsapp]]></category>
            <dc:creator><![CDATA[gomflo]]></dc:creator>
            <pubDate>Tue, 25 May 2021 06:17:23 GMT</pubDate>
            <atom:updated>2021-05-25T06:17:23.630Z</atom:updated>
            <content:encoded><![CDATA[<h3>Como me hice viral en TikTok … Sin Bailar</h3><p>Desde hace rato que ando investigando el tema de bots en Whatsapp, encontré varias librerías, <em>whatsapp-web.js</em> y <em>open-wa</em> funcionan bien pero no me convencían ya que utilizan headless browser como puppeteer y es bien conocido que tragan un buen de recursos (es como si tuvieras abierto un Chrome). Tiempo después encontré <a href="https://github.com/adiwajshing/Baileys">https://github.com/adiwajshing/Baileys</a> me llamó bastante la atención ya que usa web sockets para hacer todas las conexiones y eso nos ahorra aproximadamente 1 GB de RAM.</p><p>Ya que había encontrado la librería lo primero que le agregue fue la funcionalidad de convertir una imagen a sticker usando un comando (!sticker).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/896/1*Yy9cEUc59zRTb6EeA4eR2w.png" /></figure><p>Esa fue la única funcionalidad que le puse 😂. Lo subí a <a href="http://zeet.co/">zeet.co</a> y estuvo jalando bastante bien 24x7 por varios días, hasta que se me ocurrió subir este TikTok:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.tiktok.com%2Fembed%2F6965871589158178054&amp;display_name=tiktok&amp;url=https%3A%2F%2Fwww.tiktok.com%2F%40gomflox%2Fvideo%2F6965871589158178054&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=tiktok" width="340" height="700" frameborder="0" scrolling="no"><a href="https://medium.com/media/9630b12ef2008632f1e9d19627f6afa0/href">https://medium.com/media/9630b12ef2008632f1e9d19627f6afa0/href</a></iframe><p>Al minuto que compartí el celular para que le pudieran escribir recibió cientos de mensajes y zaz! en ese mismo minuto ya me habían suspendido la cuenta Whatsapp.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/540/1*BCdtlJ6FNMdSRqZr55wZEA.png" /></figure><p>En poco tiempo se volvió muy viral, pero no creí que fuera alcanzar la cantidad de interacción que tiene hasta ahora (y sigue). Estuvo divertido el experimento, les dejo algunas estadísticas.</p><p>Seguidores ganados solo por ese TikTok: <br><strong>7,500</strong></p><p>Visualizaciones del TikTok: <br><strong>609,000 </strong>(hasta ahorita)</p><p>Likes:<br><strong>121,000</strong></p><p>Comentarios: <br><strong>8,360</strong></p><p>Lo mejor de todo es lo que hice SIN BAILAR 😂.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d94a8da9f226" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Usar emojis como favicon]]></title>
            <link>https://gomflo.medium.com/usar-emojis-como-favicon-c4d3cbcc9a95?source=rss-2ef513419bd5------2</link>
            <guid isPermaLink="false">https://medium.com/p/c4d3cbcc9a95</guid>
            <category><![CDATA[html]]></category>
            <category><![CDATA[emoji]]></category>
            <category><![CDATA[tips]]></category>
            <category><![CDATA[svg]]></category>
            <category><![CDATA[favicon]]></category>
            <dc:creator><![CDATA[gomflo]]></dc:creator>
            <pubDate>Tue, 27 Apr 2021 02:12:00 GMT</pubDate>
            <atom:updated>2021-04-27T02:12:00.807Z</atom:updated>
            <content:encoded><![CDATA[<p>Encontré una página bastante interesante con la cual vamos a poder utilizar emojis como ❤️ 🐵 ⚽️, etc como favicon, para los que no sepan, el <strong>favicon</strong> es el icono que aparece a lado del título en los exploradores como Google Chrome, Firefox, Safari, etc.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wqO9wwHjknDS5haYIwf9yQ.png" /><figcaption>Favicon de diferentes páginas</figcaption></figure><p>Para usar un <strong>emoji</strong> como <strong>favicon</strong> basta con entrar a <a href="https://emojifav.com/">https://emojifav.com/</a> seleccionar el emoji que deseamos y copiar lo que nos muestra.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RBBEbkp7V-x7oesYoz-Nfw.png" /></figure><p>Copiamos elemento html que nos muestra dentro de la etiqueta<strong> &lt;head&gt;</strong> de nuestro proyecto, y listo ya tenemos un favicon en forma de emoji en nuestro sitio.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/378/1*LMHQJmP3mCUOnawrh3ky0w.png" /><figcaption>Usando un emoji como favicon.</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c4d3cbcc9a95" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Super tip para VSCode Balance inward / outward]]></title>
            <link>https://gomflo.medium.com/super-tip-para-vscode-balance-inward-outward-aa9daa18f961?source=rss-2ef513419bd5------2</link>
            <guid isPermaLink="false">https://medium.com/p/aa9daa18f961</guid>
            <category><![CDATA[html]]></category>
            <category><![CDATA[jsx]]></category>
            <category><![CDATA[code]]></category>
            <category><![CDATA[shorcuts]]></category>
            <category><![CDATA[vscode]]></category>
            <dc:creator><![CDATA[gomflo]]></dc:creator>
            <pubDate>Sat, 24 Apr 2021 22:19:06 GMT</pubDate>
            <atom:updated>2021-04-24T22:19:06.785Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*InVQyfUo_2l1YwnXTF1Chw.png" /></figure><p>No puedo creer que hasta hoy haya descubierto este tip para seleccionar bloques html de forma <em>ultra efectiva</em> 🤯.</p><p>Es fácil, posiciona el cursor sobre el bloque de html que deseas seleccionar después cmd + shift + p busca Balance y te mostrara 2 opciones: <strong>Balance (Inward)</strong> y <strong>Balance (Outward)</strong> la primera hace la selección de bloque hacia adentro tal y como su nombre lo indica y la segunda, buena ya debes saber, hacia afuera del bloque.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1021/1*upBIQ434XPfDNwUCe7SGOg.gif" /></figure><p>Ahora, si queremos llevar al siguiente nivel esta característica solo es necesario vincularlo a una combinación de teclas, por ejemplo ctrl + shit b para balance outward y ctrl + shift + v para balance inward.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1021/1*Uo2Ey-P-NpqkTjcqkOdCmw.gif" /><figcaption>🤯</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=aa9daa18f961" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Agregar Google Analytics a un proyecto Next.js en menos tiempo de lo que canta un gallo]]></title>
            <link>https://gomflo.medium.com/agregar-google-analytics-a-un-proyecto-next-js-en-menos-tiempo-de-lo-que-canta-un-gallo-43a5eeecfb35?source=rss-2ef513419bd5------2</link>
            <guid isPermaLink="false">https://medium.com/p/43a5eeecfb35</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[google-analytics]]></category>
            <category><![CDATA[tracking]]></category>
            <dc:creator><![CDATA[gomflo]]></dc:creator>
            <pubDate>Tue, 09 Feb 2021 20:38:38 GMT</pubDate>
            <atom:updated>2021-02-09T20:38:38.615Z</atom:updated>
            <content:encoded><![CDATA[<p>Al grano, crear un nuevo archivo que se llame <strong>_document.js</strong> dentro de la carpeta <strong>pages/</strong> quedaría así <strong>pages/_document.js </strong>con el siguiente contenido:</p><pre>import Document, { Html, Head, Main, NextScript } from &#39;next/document&#39;</pre><pre>const GA_TRACKING_ID = &#39;&lt;&lt; AQUI_VA_EL_TRACKING_ID &gt;&gt;&#39;</pre><pre>export default class MyDocument extends Document {<br>  render() {<br>    return (<br>      &lt;Html&gt;<br>        &lt;Head&gt;<br>          &lt;script<br>            async<br>            src={`<a href="https://www.googletagmanager.com/gtag/js?id=${GA_TRACKING_ID}`">https://www.googletagmanager.com/gtag/js?id=${GA_TRACKING_ID}`</a>}<br>          /&gt;<br>          &lt;script<br>            dangerouslySetInnerHTML={{<br>              __html: `<br>            window.dataLayer = window.dataLayer || [];<br>            function gtag(){dataLayer.push(arguments);}<br>            gtag(&#39;js&#39;, new Date());<br>            gtag(&#39;config&#39;, &#39;${GA_TRACKING_ID}&#39;, {<br>              page_path: window.location.pathname,<br>            });<br>          `,<br>            }}<br>          /&gt;<br>        &lt;/Head&gt;<br>        &lt;body&gt;<br>          &lt;Main /&gt;<br>          &lt;NextScript /&gt;<br>        &lt;/body&gt;<br>      &lt;/Html&gt;<br>    )<br>  }<br>}</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7OoiiR15bTB8IKx9bNQiQQ.png" /></figure><p>Es todo, con esto todas las páginas de tu proyecto serán trackeadas por Google Analytics.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=43a5eeecfb35" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mi sistema ninja para organizar con códigos QR]]></title>
            <link>https://gomflo.medium.com/mi-sistema-ninja-para-organizar-con-c%C3%B3digos-qr-876ca2da13eb?source=rss-2ef513419bd5------2</link>
            <guid isPermaLink="false">https://medium.com/p/876ca2da13eb</guid>
            <category><![CDATA[vercel]]></category>
            <category><![CDATA[organizar]]></category>
            <category><![CDATA[qr]]></category>
            <category><![CDATA[supabase]]></category>
            <category><![CDATA[nextjs]]></category>
            <dc:creator><![CDATA[gomflo]]></dc:creator>
            <pubDate>Fri, 29 Jan 2021 01:28:11 GMT</pubDate>
            <atom:updated>2021-01-29T03:00:11.674Z</atom:updated>
            <content:encoded><![CDATA[<p>Todas las soluciones comienzan con un problema, y eso fue lo que me paso, tengo varias cajas de esas donde guardas todo tipo de cosas y recuerdo que un día mi mamá me pidió el cargador de pilas, y si, como se lo imaginan… termine por buscar en todas las cajas hasta que en la última apareció el mentado cargador.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*60ex8rAQWw9fRHLl" /></figure><p>Me dieron las ansias como buen millennial 🤣 así que me puse a pensar de que manera podría organizar mejor esas cajas, la solución mas lógica fue escribir en una hoja todas las cosas que tiene cada caja, pero como todo buen <em>monkey coder</em>, me gusta complicarme las cosas y decidí desarrollar mi propio <em>sistemita</em>.</p><p>Es bastante simple, generé e imprimí en adhesivo unos <strong>códigos QR </strong>los cuales están vinculados a mi cuenta en <a href="http://scanup.mx">scanup.mx</a> y al momento de leer el código me lleva de forma automática al documento relacionado y ahí poder ver el contenido o todo lo relacionado a ese código QR.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kJwufxckTcynzhaN6qGa7A.png" /></figure><h3>Stack tecnológico</h3><p>Soy un ávido, apasionado, y ferviente seguidor del termino <strong>DX</strong> (Developer Experience) es por eso que siempre ando en la búsqueda de las herramientas que mejor DX ofrezcan. El proyecto lo termine realizando con el siguiente stack.</p><p><strong>Reactjs</strong> y <a href="https://nextjs.org/"><strong>Nextjs</strong></a> 😍 como framework<br>Nextjs es una verdadera chulada, hace un año que lo descubrí y todo lo termino haciendo en este framework, out of the box ya te ofrece rutas, code splitting, i8n, server side rendering, static site generation, fast refresh, optimización de imágenes y chingo más de cosas.</p><p><a href="https://tailwindcss.com/"><strong>Tailwind CSS</strong></a> <br>Como librería de CSS, cambia por completo el paradigma a la hora de maquetar los sitios, pero ya que te acostumbras se vuelve bastante ágil el maquetado, es una librería “utility first” ademas de que ya viene con unos buenos defaults (paleta de colores, margenes, paddings, font size, etc).</p><p><a href="https://vercel.com/"><strong>Vercel</strong></a> <br>Para hosting y funciones serverless (el api pues…), ademas de que estos vatos son los creadores de Nextjs. Creanme los deploys se hacen ultra mega rápidos, literalmente es: <strong>vercel — prod</strong> aunque si te gustan los buenos estándares también puedes hacer los deploys a través de git, <strong>git push origin main </strong>y ya estás en producción.</p><p><a href="https://supabase.io/"><strong>Supabase</strong></a> <br>Para la base de datos y autenticación de usuarios, soporta magic link, es decir es una aplicación sin contraseñas, capturas tu correo, te llega un enlace, clic y ya estas registrado y con la sesión abierta. La base de datos es PostgreSQL, ahorita andan en beta, pero la neta es muy estable (y gratis por ahora 🤣).</p><p><a href="https://www.algolia.com/"><strong>Algolia</strong></a><br>Como soy muy flojo me pregunte ¿Y qué pasa si ahora quiero buscar entre los documentos? Pa’ eso está algolia que es un buscador tipo gugul aparte de que es rápido (y lo es) puedes ir tuneando acá bien nice de forma algorítmica como quieres que aparezcan los resultados, la neta no le invertí mucho tiempo solo puse el buscador y ya.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/824/1*jeDmGS7nn7SzS6iRM6YLnA.png" /><figcaption>Chequen como escribí mal la palabra “aspiradora” y algolia de igual forma encuentra resultados.</figcaption></figure><p>Igual creo que va ser algo que no vaya utilizar en muchos proyectos ya que si esta medio caro el <em>buscadorsito</em>.</p><p>Así que ya saben, el día que tengan p2 con algo y se pueda construir, pues háganlo, aparte se van a divertir.</p><p>Ah, se me olvidaba, el sitio es <a href="https://scanup.mx/"><strong>scanup.mx</strong></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=876ca2da13eb" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Variables de entorno en Vercel]]></title>
            <link>https://gomflo.medium.com/variables-de-entorno-en-vercel-d86a3214ce0b?source=rss-2ef513419bd5------2</link>
            <guid isPermaLink="false">https://medium.com/p/d86a3214ce0b</guid>
            <category><![CDATA[vercel]]></category>
            <category><![CDATA[hosting]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[devops]]></category>
            <dc:creator><![CDATA[gomflo]]></dc:creator>
            <pubDate>Fri, 11 Dec 2020 23:17:20 GMT</pubDate>
            <atom:updated>2020-12-11T23:18:05.214Z</atom:updated>
            <content:encoded><![CDATA[<p>Algo importante en cualquier proyecto que desarrollemos son las variables de entorno, esas que podemos acceder desde nuestro entorno de programación y que son de gran utilidad para poder abstraer el valor del código.</p><p>Por fortuna si tu proyecto esta desplegado en <strong>Vercel</strong> se vuelve bastante sencillo, solo basta ingresar al proyecto, configuración, variables de entorno y agregar el nombre y valor de las variables que vamos a necesitar.</p><p>En nuestra configuración del proyecto nos vamos a la sección de <strong>Settings </strong>después seleccionamos <strong>Environment Variables.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*y2EqbjhIQer_ifZK_tAEKg.png" /><figcaption>Existen 3 tipos de variables de entorno en Vercel, hoy solo nos enfocaremos en las que son tipo Plaintext.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GRXgiwpOaMRWR_0K9i0GCQ.png" /><figcaption>Agregamos el nombre y valor de la variable y guardamos (Save).</figcaption></figure><p>Como último paso ejecutamos el comando <strong><em>vercel env pull</em></strong> el cual nos va crear un archivo a nivel raíz llamado <strong><em>.env</em></strong> con el nombre y valor de las variables de entorno que hemos creado desde la plataforma.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UvTaJzONCsYvv1RE5iW6jA.png" /><figcaption>Al ejecutar ese comando nos crea de forma automática el archivo de entorno .env</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4fJURKLDo5yaCW75nC5bjw.png" /><figcaption>Archivo .env creado correctamente con las variables que hayamos definido en Vercel.</figcaption></figure><p>Y para consumir las variables es de la misma forma (al menos en nodejs) de siempre <strong><em>proccess.env.NOMBRE_VARIABLE</em></strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Cjk4VWga9GU537xYbP9kSA.png" /></figure><p>En la actualidad no encuentro plataforma con un DX (Developer Experience) tan bueno como Vercel.com (ademas porqué soy muy flojo y mas cuando se tata de Devops), por encima de Firebase, DigitalOcean ó Netlify. Ademas de que son los creadores y soporte principal de <strong>Nextjs</strong> 😍.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d86a3214ce0b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Shortcuts ó atajos para VS Code que más utilizo (GIF’s)]]></title>
            <link>https://gomflo.medium.com/shortcuts-%C3%B3-atajos-para-vs-code-que-m%C3%A1s-utilizo-gifs-90ce732ac668?source=rss-2ef513419bd5------2</link>
            <guid isPermaLink="false">https://medium.com/p/90ce732ac668</guid>
            <category><![CDATA[mac]]></category>
            <category><![CDATA[shortcuts]]></category>
            <category><![CDATA[vscode]]></category>
            <category><![CDATA[programación]]></category>
            <category><![CDATA[productividad]]></category>
            <dc:creator><![CDATA[gomflo]]></dc:creator>
            <pubDate>Tue, 07 Jan 2020 17:22:07 GMT</pubDate>
            <atom:updated>2020-01-07T17:22:07.484Z</atom:updated>
            <content:encoded><![CDATA[<p>Editores vienen y van, recordado desde <strong>TextMate</strong>, <strong>Sublime Text</strong> y ahora <strong>Visual Studio Code</strong> siendo el editor por excelencia para los desarrolladores, si bien algo que tienen en común los editores son las combinaciones de teclas para volvernos más productivos a la hora de programar.</p><p>A continuación les presento mi colección de shortcuts / atajos del teclado que más utilizo en mi día a día como desarrollador de software.</p><p><strong>⌘ + J</strong> = Abre la terminal integrada de <strong>VS Code</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*p3wMEMdqUfiC0Xy1P_HNPg.gif" /></figure><p><strong>⌘ + K</strong> = Limpia la terminal integrada de <strong>Visual Studio Code</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*GIWjXcqJunnGNlAAlhfORA.gif" /></figure><p><strong>⌘ + P</strong> = Buscar y abrir archivo</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*ygpeFDvmU2I1vpzTx8_SpQ.gif" /></figure><p><strong>⌘ + D</strong> = Para seleccionar concidencias</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*Kt0oVv6Isk-z_wLQYALpYw.gif" /></figure><p><strong>⌘ + B</strong> = Esconder / mostrar la barra lateral</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*gLD64uUnLN1HFXMlIffDYg.gif" /></figure><p><strong>⌘ + ,</strong> = Abrir las preferencias de VS Code</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*SdaOxZBVwoYe_UCxga10Rg.gif" /></figure><p><strong>⌘ + W</strong> = Cerrar pestaña de VS Code</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*ZgngxrhhjAotks6IGUO11w.gif" /><figcaption>Creo que este atajo es muy obvio, pero muy útil</figcaption></figure><p><strong>⌘ + ⇧ + K</strong> = Eliminar línea</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*2pQA73lLtkjBSuAG0Vgz0g.gif" /></figure><p><strong>⇧ + ⌥ + F</strong> = Dar formato al documento</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*qd4dEd6cQ_S3Gd8zdVRi2Q.gif" /></figure><p><strong>⌘ + K +R</strong> = Abrir archivo en el explorador del sistema</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*ncBC_8J24X5HKQZAwv-dpg.gif" /></figure><p><strong>Visual Studio Code</strong> tiene más atajos del teclado, pero esta es mi colección de los que más utilizo y me han servido bastante para aumentar mi productividad. 🤷🏾‍♂️</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=90ce732ac668" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Meta tag theme-color para dark y light mode]]></title>
            <link>https://gomflo.medium.com/meta-tag-theme-color-para-dark-y-light-mode-ea65c4c128ff?source=rss-2ef513419bd5------2</link>
            <guid isPermaLink="false">https://medium.com/p/ea65c4c128ff</guid>
            <category><![CDATA[css]]></category>
            <category><![CDATA[pwa]]></category>
            <category><![CDATA[html]]></category>
            <category><![CDATA[chrome]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[gomflo]]></dc:creator>
            <pubDate>Mon, 18 Nov 2019 21:42:24 GMT</pubDate>
            <atom:updated>2019-11-18T21:42:24.209Z</atom:updated>
            <content:encoded><![CDATA[<h3>Como cambiar el meta tag theme-color dinámico para PWA instaladas</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*UNxDAsF2v7TS2brffhsnSQ.gif" /><figcaption>PWA instalada</figcaption></figure><p>Si nuestro sitio web cumple con todos los requisitos de una PWA, Google Chrome nos va sugerir en la la barra de direcciones con un icono de + que la aplicación se puede instalar en nuestro ordenador.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/618/1*MUexjI1rvzoI_X9pUgAa1A.png" /><figcaption>El icono de + solo aparece cuando nuestro sitio web cumple con todos los requisitos de una PWA</figcaption></figure><p>Una vez instalada la aplicación veremos exactamente lo mismo de nuestro sitio web, con la diferencia que ahora nos aparece una barra de título la cual puede ser personalizada a tráves del meta tag theme-color</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Yr9AqKQe77yibCO-6OJ79A.png" /><figcaption>Con esta línea de código podemos personalizar el color de la barra de título</figcaption></figure><p>Si nuestro sitio web solo cuenta con un tema y no ofrece personalización de colores definir el color color directamente en el html será más que suficiente.</p><p>Uno de mis sitios ofrece la versión <strong>dark </strong>y <strong>light</strong> de acuerdo a la configuración de su sistema operativo, por lo que theme-color debe ser dinámico.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ylZNQHnqXUuNpKVBfvGynQ.png" /></figure><ol><li>Identificamos si el usuario tiene el modo oscuro activado</li><li>Asignamos a una variable para obtener el meta tag theme-color</li><li>Validamos y asignamos el color dependiendo la configuración del usuario</li></ol><p>Pueden realizar la prueba entrando a <a href="http://futbolfeed.com">futbolfeed.com</a> instalar el sitio como aplicación y cambiar el tema de su sistema operativo.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ea65c4c128ff" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Actas de nacimiento digitales y un GRAN hoyo de seguridad]]></title>
            <link>https://gomflo.medium.com/actas-de-nacimiento-digitales-y-un-gran-hoyo-de-seguridad-17e0a1da65c3?source=rss-2ef513419bd5------2</link>
            <guid isPermaLink="false">https://medium.com/p/17e0a1da65c3</guid>
            <category><![CDATA[mexico]]></category>
            <category><![CDATA[programación]]></category>
            <category><![CDATA[gobierno]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[acta-de-nacimiento]]></category>
            <dc:creator><![CDATA[gomflo]]></dc:creator>
            <pubDate>Thu, 07 Nov 2019 02:40:04 GMT</pubDate>
            <atom:updated>2019-11-07T02:40:04.433Z</atom:updated>
            <content:encoded><![CDATA[<p>Sin entrar mucho en detalles actualmente en México ya se puede obtener el acta de nacimiento digital y certificada, hasta ahí todo bien, un paso más hacia el progreso y volvernos paperless.</p><p>La <a href="https://www.gob.mx/ActaNacimiento/validacionActa/">página del gobierno mexicano</a> permite verificar si una acta es valida ó no, con tan solo ingresar el <strong>identificador electrónico</strong>, el cual es un número que sirve para tener control de las impresiones de cada formato único y está compuesto por la entidad, municipio y oficialía de registro, año de expedición y <strong>número consecutivo</strong> de cada copia certificada expedida.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/866/1*MkHioaXzXaPgk3tuq1Cokg.png" /><figcaption>Identificador electrónico del acta de nacimiento</figcaption></figure><p>Actualmente la página para poder validar el acta solamente solicita el número de identificador electrónico y pasar la medida de seguridad del captcha.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Z2bY3YKX2Nk3EUs0SKgy7Q.png" /></figure><p>Después de capturar los datos necesarios nos dirige a la pantalla donde nos informa si el acta es valida, con datos personales como <strong>nombre, nombre de los padres, CURP y anotaciones marginales.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FOTlqANff91d7Br6Abwx6w.png" /></figure><h3>La parte tecnica de la historia</h3><p>Ya sabemos cómo se forma el número identificador electrónico, si, la última parte se compone por números consecutivos. <em>¿Qué pasa si modificamos el último dígito?</em> <em>¿Qué pasa si modificamos los últimos 2 dígitos?</em> … Bueno, creo que ya entendieron, es correcto, <strong>obtenemos información de otra persona.</strong></p><p>Lo peor del asunto es que la parte de seguridad del <strong>captcha</strong> no se valida, es decir realizando un pequeño script se pueden realizar consultas constantes para obtener <strong>información sensible sobre los mexicanos.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*R37Lohzr114VQ0e9BzK5Qw.png" /><figcaption>Con este simple script hecho en NodeJS podemos obtener información de actas que no nos pertenecen.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/990/1*5pSovtMYGy7a0bqpT08vZQ.png" /><figcaption>😔</figcaption></figure><p>Espero que este problema de seguridad sea resuelto lo antes posible, ya que nuestra información puede caer en manos equivocadas, realizar fraudes, suplantación de identidad, etc.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=17e0a1da65c3" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>