<?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: Thiago Nunes Batista</title>
    <description>The latest articles on DEV Community by Thiago Nunes Batista (@thiagonunesbatista).</description>
    <link>https://dev.to/thiagonunesbatista</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%2F709344%2F49d0fc34-298c-4b91-8f60-e01bc56be8e4.jpg</url>
      <title>DEV Community: Thiago Nunes Batista</title>
      <link>https://dev.to/thiagonunesbatista</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thiagonunesbatista"/>
    <language>en</language>
    <item>
      <title>I Built a Free Web Tools Hub for Developers</title>
      <dc:creator>Thiago Nunes Batista</dc:creator>
      <pubDate>Wed, 07 Jan 2026 12:44:32 +0000</pubDate>
      <link>https://dev.to/codigoaoponto/i-built-a-free-web-tools-hub-for-developers-37p5</link>
      <guid>https://dev.to/codigoaoponto/i-built-a-free-web-tools-hub-for-developers-37p5</guid>
      <description>&lt;p&gt;You know that moment when you need to generate a CPF to test a form? Or when you need to validate a fake credit card in your development environment? Throughout my career as a developer, I always relied on different websites for these simple but essential daily tasks.&lt;/p&gt;

&lt;p&gt;Each site had different layouts and user experiences, some good, others not so much. Thinking about creating something that centralizes these different tools with a simple interface and excellent user experience, I created the &lt;strong&gt;&lt;a href="https://codigoaoponto.com/en/tools" rel="noopener noreferrer"&gt;Código ao Ponto Developer Tools Hub&lt;/a&gt;&lt;/strong&gt;, a completely free hub that brings together several tools in one place, which are straight to the point and work without the need to create an account.&lt;/p&gt;

&lt;h2&gt;
  
  
  What tools are available in the Hub?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Online Planning Poker
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://codigoaoponto.com/en/tools/planning-poker" rel="noopener noreferrer"&gt;The most complete tool in the hub&lt;/a&gt;. Create a room, share the link with your team (no registration required), and everyone can vote simultaneously on task estimates.&lt;/p&gt;

&lt;p&gt;The tool works in real-time with WebSocket - when someone votes, everyone sees it instantly. It has a session timer, participant list with status, and voting options beyond the traditional Fibonacci sequence.&lt;/p&gt;

&lt;p&gt;It's the type of tool that comes in handy when your team needs to do Sprint Planning and can't find a quality, free Planning Poker.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fjlsn14pwboql1o6ea4a4.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fjlsn14pwboql1o6ea4a4.webp" alt=" " width="768" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  CPF Generator and Validator
&lt;/h3&gt;

&lt;p&gt;One of the most popular tools in the hub. The &lt;strong&gt;&lt;a href="https://codigoaoponto.com/en/tools/cpf-generator" rel="noopener noreferrer"&gt;CPF Generator&lt;/a&gt;&lt;/strong&gt; creates valid numbers instantly for use in testing environments. This access success is due to its good position in Google search result pages for the term "CPF Generator", ranging between second and fourth position.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fuw3jlym5y40zwuugrvzn.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fuw3jlym5y40zwuugrvzn.webp" alt=" " width="768" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a complement, the &lt;strong&gt;&lt;a href="https://codigoaoponto.com/en/tools/cpf-validator" rel="noopener noreferrer"&gt;CPF Validator&lt;/a&gt;&lt;/strong&gt; was also created, which verifies if a number is structurally valid with immediate feedback.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F3jtxye56hg4iz8qa6bks.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F3jtxye56hg4iz8qa6bks.webp" alt=" " width="768" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Credit Card Generator and Validator
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href="https://codigoaoponto.com/en/tools/credit-card-generator" rel="noopener noreferrer"&gt;Credit Card Generator&lt;/a&gt;&lt;/strong&gt; allows you to select the brand (Visa, Mastercard, American Express, etc.) and creates complete fictitious data: card number, CVV, and expiration date. Each field has a quick copy button next to it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fjo6bkdzwpky8241xw62g.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fjo6bkdzwpky8241xw62g.webp" alt=" " width="768" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href="https://codigoaoponto.com/en/tools/credit-card-validator" rel="noopener noreferrer"&gt;Credit Card Validator&lt;/a&gt;&lt;/strong&gt; automatically identifies the brand and verifies if the number is structurally valid. Essential for testing payment flows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fnglok0okwjyyzmwk89x4.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fnglok0okwjyyzmwk89x4.webp" alt=" " width="768" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Character and Word Counter
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://codigoaoponto.com/en/tools/character-and-word-counter" rel="noopener noreferrer"&gt;Counts in real-time as you type or paste text&lt;/a&gt;. Shows total characters, characters without spaces, number of spaces, and total words. Useful for respecting character limits in APIs or validating form fields.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fvcm8w0xuqkjjzd5nqc2d.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fvcm8w0xuqkjjzd5nqc2d.webp" alt=" " width="768" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Date Format Converter
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://codigoaoponto.com/en/tools/date-format-converter" rel="noopener noreferrer"&gt;Converts dates to the most commonly used formats in development&lt;/a&gt;: ISO String, Timestamp, and UTC String. You can use the current date/time or enter a specific date, with a quick copy button in the result.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fifupdx0iaees3ko58jry.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fifupdx0iaees3ko58jry.webp" alt=" " width="768" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  WhatsApp Link Generator
&lt;/h3&gt;

&lt;p&gt;Enter the phone number (with country code selection) and the desired message. &lt;a href="https://codigoaoponto.com/en/tools/whatsapp-message-url-generator" rel="noopener noreferrer"&gt;The tool&lt;/a&gt; generates a direct link to open the conversation on WhatsApp, with &lt;strong&gt;real-time preview&lt;/strong&gt; showing exactly how the message will appear, including formatting and emojis. Very useful for testing texts that will be used in those tasks where the user clicks "Contact via WhatsApp".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fnmtv3pjxj6bf3rii6onj.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fnmtv3pjxj6bf3rii6onj.webp" alt=" " width="768" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Design and Usability Decisions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Frictionless, No Barriers
&lt;/h3&gt;

&lt;p&gt;The most important project decision was: &lt;strong&gt;no tool requires registration&lt;/strong&gt;. This was non-negotiable from the start. Access, use, done.&lt;/p&gt;

&lt;p&gt;For Planning Poker, which is collaborative, you can create rooms with shareable links. No login, no password, no hassle.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clean and Intuitive Interface
&lt;/h3&gt;

&lt;p&gt;Each tool follows a consistent visual pattern: input area on the left, result on the right, and clearly visible action buttons.&lt;/p&gt;

&lt;p&gt;Below each tool, there's an educational section explaining use cases, practical examples, and how that tool can help in daily work. The idea is that even someone who has never used it can quickly understand its value.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accessible in Portuguese and English
&lt;/h3&gt;

&lt;p&gt;From the beginning, I implemented internationalization. The system automatically detects the browser language, but you can manually switch whenever you want.&lt;/p&gt;

&lt;p&gt;Portuguese to serve the Brazilian community, English to reach developers worldwide. The architecture is prepared to easily add new languages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Responsive and Fast
&lt;/h3&gt;

&lt;p&gt;All these tools have their &lt;a href="https://codigoaoponto.com/en/tools" rel="noopener noreferrer"&gt;English versions with I18N&lt;/a&gt; and are tested with &lt;a href="https://pagespeed.web.dev/" rel="noopener noreferrer"&gt;Lighthouse/PageSpeed Insights&lt;/a&gt; to ensure good loading performance and visual stability.&lt;/p&gt;

&lt;p&gt;The minimum score target was 90 points on PageSpeed Insights across all categories, which is a big challenge, especially when using third-party scripts like &lt;a href="https://developers.google.com/analytics" rel="noopener noreferrer"&gt;Google Analytics&lt;/a&gt; and &lt;a href="https://adsense.google.com/start" rel="noopener noreferrer"&gt;Google Adsense&lt;/a&gt;, but with proper optimizations, they deliver excellent loading speed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stack Behind It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Nuxt 4&lt;/strong&gt; was chosen for the frontend for its focus on performance and SEO, very important aspects for good Google ranking.&lt;/p&gt;

&lt;p&gt;For the backend, &lt;strong&gt;NestJS&lt;/strong&gt; was chosen for its modular architecture and native WebSocket support, necessary for Planning Poker. It's also JavaScript-based, facilitating Full Stack development of the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Coming Next
&lt;/h2&gt;

&lt;p&gt;The backlog has some interesting ideas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PWA version&lt;/strong&gt; for offline use&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sprint Retro&lt;/strong&gt; for retrospective ceremonies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More utilities&lt;/strong&gt; as the community suggests&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Want to Check It Out?
&lt;/h2&gt;

&lt;p&gt;The tool has been helping hundreds of users daily, you can also be one of them &lt;strong&gt;&lt;a href="https://codigoaoponto.com/en/tools" rel="noopener noreferrer"&gt;by clicking here&lt;/a&gt;&lt;/strong&gt;, I hope to help you, thank you very much 🙋🏻&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>tooling</category>
      <category>resources</category>
    </item>
    <item>
      <title>Como lidar com inveja de outros programadores na carreira</title>
      <dc:creator>Thiago Nunes Batista</dc:creator>
      <pubDate>Tue, 02 Sep 2025 14:32:55 +0000</pubDate>
      <link>https://dev.to/codigoaoponto/como-lidar-com-inveja-de-outros-programadores-na-carreira-28mp</link>
      <guid>https://dev.to/codigoaoponto/como-lidar-com-inveja-de-outros-programadores-na-carreira-28mp</guid>
      <description>&lt;h2&gt;
  
  
  Prego que se destaca é martelado: uma dura verdade na carreira de programação
&lt;/h2&gt;

&lt;p&gt;“&lt;strong&gt;Prego que se destaca é martelado&lt;/strong&gt;”. Se você já tem experiência na carreira, provavelmente já percebeu isso. Se está começando, essa é uma verdade que o tempo vai te ensinar, mas eu estou aqui para te falar antes disso acontecer, para que você esteja pronto.&lt;/p&gt;

&lt;p&gt;Neste artigo, vamos falar sobre os desafios que surgem ao longo da carreira de programação, e por que eles não estão apenas no &lt;strong&gt;código&lt;/strong&gt;, mas principalmente nas &lt;strong&gt;pessoas&lt;/strong&gt;. Se preferir, também gravei um &lt;a href="https://youtu.be/NJv-BcWelms" rel="noopener noreferrer"&gt;vídeo no Youtube falando sobre esse assunto&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  O início da carreira: foco em Hard Skills
&lt;/h2&gt;

&lt;p&gt;Quando você está começando, a maior parte do seu tempo é dedicada às &lt;strong&gt;hard skills&lt;/strong&gt;. Isso inclui aprender linguagens de programação, frameworks, bibliotecas e ferramentas que permitem que você entregue projetos de qualidade.&lt;/p&gt;

&lt;p&gt;Essa fase é natural e necessária, pois é ela que garante sua primeira oportunidade como desenvolvedor. É aqui que você constrói a base técnica que vai sustentar sua carreira.&lt;/p&gt;

&lt;h2&gt;
  
  
  A evolução: soft skills se tornam essenciais
&lt;/h2&gt;

&lt;p&gt;Conforme você cresce, percebe que o maior desafio não é mais técnico. As &lt;strong&gt;soft skills&lt;/strong&gt; passam a ser fundamentais:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Comunicar-se claramente com colegas e gestores&lt;/li&gt;
&lt;li&gt;Fazer alinhamentos e combinar como as tarefas serão realizadas&lt;/li&gt;
&lt;li&gt;Garantir que as coisas realmente funcionem no dia a dia&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Muitas vezes, o maior obstáculo não é o código em si, mas a capacidade de lidar com pessoas e situações complexas. É aqui que você aprende que &lt;strong&gt;entregar resultado envolve mais do que escrever linhas de programação&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quando você começa a se destacar
&lt;/h2&gt;

&lt;p&gt;Se você se dedica e entrega resultados consistentes, inevitavelmente vai começar a se destacar. É nesse ponto que podem surgir problemas inesperados: &lt;strong&gt;a inveja de colegas&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Programação envolve muito mais pessoas do que código. E pessoas têm sentimentos. Um deles é a inveja. Felizmente, a quantidade de profissionais que apresentam esse comportamento é pequena, mas é importante estar ciente disso e preparado para lidar quando acontecer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Estar preparado faz toda a diferença
&lt;/h2&gt;

&lt;p&gt;Saber que situações de inveja e críticas injustas podem surgir no ambiente de trabalho faz com que você &lt;strong&gt;não seja pego de surpresa&lt;/strong&gt;. Estar preparado significa mais do que simplesmente reconhecer que essas situações existem — é agir de forma estratégica para manter o foco no seu crescimento e proteger sua reputação.&lt;/p&gt;

&lt;h3&gt;
  
  
  Como se preparar na prática
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mantenha a consistência no seu trabalho&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Entregue resultados de forma regular e documentada. Quando você faz isso, fica mais difícil para qualquer colega tentar diminuir ou desmerecer seu esforço.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Desenvolva suas soft skills constantemente&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Saber se comunicar, alinhar expectativas e lidar com conflitos de forma madura faz toda a diferença. Soft skills não são apenas “agradáveis de ter” — elas são essenciais para navegar pelas complexidades humanas do ambiente de trabalho.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Evite reagir emocionalmente&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
A inveja pode vir disfarçada de críticas ou comportamentos passivo-agressivos. Manter a calma e responder de forma profissional ajuda a evitar escaladas desnecessárias de conflito.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Foque no seu crescimento&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Não se compare de forma prejudicial aos outros. Concentre-se no que você pode controlar: sua evolução técnica, sua postura e seu aprendizado. Quanto mais você crescer de forma consistente, mais forte se torna diante de situações adversas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Aprenda a ler sinais&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Identificar comportamentos como críticas veladas ou tentativas de tirar mérito ajuda você a se antecipar e agir com inteligência, em vez de reagir por impulso.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Estar preparado significa, em última instância, &lt;strong&gt;não deixar que a inveja ou o comportamento negativo de colegas interfira no seu desenvolvimento&lt;/strong&gt;. É transformar situações potencialmente negativas em oportunidades de aprendizado e fortalecimento da carreira.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Crescer como programador vai muito além de aprender linguagens ou frameworks. É sobre se destacar, assumir responsabilidades e lidar com pessoas, sentimentos e desafios que não aparecem no código.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;prego que se destaca pode até ser martelado&lt;/strong&gt;, mas se você estiver pronto, ninguém vai conseguir te entortar no caminho. Preparação, foco e consistência são as chaves para uma carreira sólida e bem-sucedida.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Lembre-se: a inveja existe, mas ela não precisa ser um obstáculo se você souber como manter seu crescimento e reputação intactos.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>career</category>
      <category>programming</category>
      <category>discuss</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Vercel comprou a Nuxt Labs! E agora, o que muda para o Nuxt?</title>
      <dc:creator>Thiago Nunes Batista</dc:creator>
      <pubDate>Thu, 17 Jul 2025 11:00:00 +0000</pubDate>
      <link>https://dev.to/codigoaoponto/vercel-comprou-a-nuxt-labs-e-agora-o-que-muda-para-o-nuxt-26mk</link>
      <guid>https://dev.to/codigoaoponto/vercel-comprou-a-nuxt-labs-e-agora-o-que-muda-para-o-nuxt-26mk</guid>
      <description>&lt;p&gt;a última semana, a Vercel — empresa conhecida por estar por trás do Next.js — anunciou a aquisição da &lt;strong&gt;Nuxt Labs&lt;/strong&gt;, startup criada pelos próprios mantenedores do framework Nuxt.js. A notícia surpreendeu a comunidade, gerando dúvidas sobre o futuro do Nuxt e o impacto dessa aquisição para os desenvolvedores que apostam no ecossistema Vue.&lt;/p&gt;

&lt;p&gt;Neste artigo, vamos entender o que foi comprado, por que isso aconteceu, e o que muda na prática.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é a Nuxt Labs?
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;Nuxt Labs&lt;/strong&gt; é uma empresa criada por &lt;strong&gt;Sébastien Chopin&lt;/strong&gt; e parte do time core do Nuxt para viabilizar o desenvolvimento sustentável do framework. Como o Nuxt é open source e gratuito, a Labs surgiu com a proposta de criar produtos pagos que ajudassem a financiar o trabalho no core do Nuxt.&lt;/p&gt;

&lt;p&gt;Entre os principais produtos da Nuxt Labs, temos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nuxt Studio&lt;/strong&gt; — Interface visual para criação de conteúdo com Nuxt Content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nuxt UI Pro&lt;/strong&gt; — Biblioteca de componentes premium baseada em Tailwind CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esses produtos permitiram que o time core trabalhasse de forma mais dedicada no Nuxt, garantindo lançamentos relevantes como o Nuxt 3 e novos módulos oficiais.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que a Vercel comprou a Nuxt Labs?
&lt;/h2&gt;

&lt;p&gt;Segundo o anúncio oficial feito no blog da Vercel e em comunicado da própria Nuxt Labs, a motivação está em &lt;strong&gt;investir no ecossistema Vue&lt;/strong&gt; e garantir que o Nuxt tenha o suporte necessário para continuar crescendo.&lt;/p&gt;

&lt;p&gt;A aquisição também é parte de uma estratégia da Vercel de expandir seu suporte a diversos meta-frameworks — como já fez com Next.js, SvelteKit e Astro. A ideia é que &lt;strong&gt;a Vercel seja a melhor plataforma para hospedar qualquer projeto frontend moderno&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Em suas palavras no &lt;a href="https://vercel.com/blog/nuxtlabs-joins-vercel" rel="noopener noreferrer"&gt;anúncio oficial&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Queremos garantir que o Nuxt continue inovando e sendo uma opção poderosa para desenvolvedores Vue. Estamos animados em trazer Sébastien Chopin e parte do time Nuxt Labs para dentro da Vercel.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  O que muda na prática?
&lt;/h2&gt;

&lt;p&gt;A princípio, &lt;strong&gt;o Nuxt continuará sendo open source e independente&lt;/strong&gt;. O framework não foi comprado diretamente, e sim a empresa que o mantém e desenvolve produtos em torno dele. Mas o impacto é significativo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mais recursos&lt;/strong&gt; para o desenvolvimento do Nuxt&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time core contratado pela Vercel&lt;/strong&gt;, com mais estabilidade financeira&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maior integração com a plataforma da Vercel&lt;/strong&gt; (sem deixar de lado outras opções como Netlify ou auto-hospedagem)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Além disso, os produtos pagos como o Nuxt Studio e o Nuxt UI Pro devem continuar existindo e sendo oferecidos, com possíveis melhorias a partir do investimento da Vercel.&lt;/p&gt;

&lt;h2&gt;
  
  
  E a comunidade?
&lt;/h2&gt;

&lt;p&gt;Sébastien Chopin reforçou que a comunidade seguirá sendo parte fundamental do Nuxt. A governança do projeto continua aberta e o desenvolvimento permanecerá público no GitHub.&lt;/p&gt;

&lt;p&gt;Há uma promessa de que o foco no ecossistema Vue continuará forte — inclusive, a Vercel mencionou que pretende &lt;strong&gt;investir ainda mais em frameworks além do React&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Vue é um dos frameworks mais usados na Vercel. Queremos apoiar todos os frameworks modernos, e o Nuxt é uma peça chave nesse cenário.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;O fato é que o Nuxt como projeto open source &lt;strong&gt;não foi comprado&lt;/strong&gt;, mas sim sua principal mantenedora. Com a aquisição da Nuxt Labs, a Vercel demonstra estar disposta a investir na pluralidade de frameworks e não limitar sua atuação ao React.&lt;/p&gt;

&lt;p&gt;A curto prazo, a expectativa é de &lt;strong&gt;mais investimento, mais estabilidade e mais evolução para o Nuxt&lt;/strong&gt; — o que é excelente notícia para quem trabalha com Vue no dia a dia.&lt;/p&gt;

&lt;p&gt;Vamos acompanhar os próximos capítulos dessa nova fase.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>vue</category>
      <category>vercel</category>
      <category>nuxt</category>
    </item>
    <item>
      <title>Middlewares: O que são e como utilizar no Nuxt.JS</title>
      <dc:creator>Thiago Nunes Batista</dc:creator>
      <pubDate>Tue, 14 Jan 2025 14:12:02 +0000</pubDate>
      <link>https://dev.to/codigoaoponto/middlewares-o-que-sao-e-como-utilizar-no-nuxtjs-4aa5</link>
      <guid>https://dev.to/codigoaoponto/middlewares-o-que-sao-e-como-utilizar-no-nuxtjs-4aa5</guid>
      <description>&lt;h2&gt;
  
  
  O que são Middlewares?
&lt;/h2&gt;

&lt;p&gt;No Front-end, os &lt;strong&gt;Middlewares&lt;/strong&gt; são blocos de códigos que são executados &lt;strong&gt;antes que a navegação para uma nova página aconteça&lt;/strong&gt;, permitindo realizar diversos controles na nossa aplicação, como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Autenticação&lt;/strong&gt;: verifica se o usuário está logado, caso contrário, é redirecionado para a tela de login.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permissão&lt;/strong&gt;: verifica se o usuário tem as permissões de acessar aquela página, caso não tenha, ele é redirecionado para alguma página que tenha permissão.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logs&lt;/strong&gt;: salvar informações sobre informações da página.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Os Middlewares funcionam como uma camada intermediária, atuando desde o início do carregamento da página até a sua renderização completa.&lt;/p&gt;

&lt;p&gt;Essa funcionalidade de middlewares está presente em frameworks modernos do Front-end como &lt;a href="https://nextjs.org" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; e &lt;a href="https://nuxt.com" rel="noopener noreferrer"&gt;Nuxt.JS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Neste artigo, vou te ensinar como implementar os Middlewares de rota no Nuxt.JS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Middlewares de uma forma não tão técnica
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F8fiu5o9mbgcfsj8s39rz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F8fiu5o9mbgcfsj8s39rz.png" alt="Image description" width="640" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para explicar de forma mais simples, vou utilizar uma analogia:&lt;/p&gt;

&lt;p&gt;Imagine que você quer entrar em uma festa, e nesse processo você vai passar por três funcionários da segurança da festa, que são os "middlewares", e cada um vai ser responsável por fazer uma ação específica.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;O primeiro segurança vai verificar se você possui um ingresso e se é válido, semelhante a um middleware de autenticação, caso não possua o ingresso, você vai ser redirecionado para a bilheteria ou tela de login.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;O segundo segurança vai conferir se você é maior de idade, requisito essencial para acessar a festa, semelhante a um middleware de permissão. Se você não tiver a permissão necessária para entrar, será redirecionado para fora da fila da festa.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;O terceiro e último segurança vai te dar uma pulseira de identificação que sinaliza se você possui acesso à área vip da festa, semelhante aos middlewares que podem adicionar dados em requisições.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Por fim, após passar por todas as etapas anteriores, você estará livre para acessar o salão da festa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tipos de Middlewares
&lt;/h2&gt;

&lt;p&gt;No Nuxt.js temos os seguintes tipos de Middlewares:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Globais&lt;/li&gt;
&lt;li&gt;Inline ou Anônimos&lt;/li&gt;
&lt;li&gt;Nomeados&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Os Middlewares &lt;code&gt;globais&lt;/code&gt; são criados dentro da pasta &lt;code&gt;/middleware&lt;/code&gt; e são executados em todas as páginas. É necessário adicionar o sufixo &lt;code&gt;global&lt;/code&gt;.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/*
  Exemplo de middleware Global:
  Esse middleware verifica se a URL/rota buscada existe.
  Caso não exista o usuário é redirecionado para página de links.

  Nome e Diretório do arquivo:
  /middleware/notFound.global.js
*/&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineNuxtRouteMiddleware&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;hasFoundRoute&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;matched&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;hasFoundRoute&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;navigateTo&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/links&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Os Middlewares &lt;code&gt;inline&lt;/code&gt; ou &lt;code&gt;anônimos&lt;/code&gt; são middlewares específicos para uma página, definidos diretamente dentro do arquivo da página no Nuxt; Isso limita a reutilização do código, visto que ele não pode ser facilmente compartilhado com outras páginas.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/*
  Exemplo de middleware inline:
  Esse middleware verifica se os dados estão presentes na store.
  Caso não esteja, os dados serão requisitados.
*/&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;setup&lt;/span&gt; &lt;span class="nx"&gt;lang&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useStore&lt;/span&gt; &lt;span class="p"&gt;}&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;vuex&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;definePageMeta&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;middleware&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;store&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useStore&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;store&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;store&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dispatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fetchUser&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;span class="p"&gt;});&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Os Middlewares &lt;code&gt;nomeados&lt;/code&gt; são criados dentro da pasta &lt;code&gt;/middleware&lt;/code&gt;.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/*
  Exemplo de middleware Nomeado:
  Esse middleware verifica o usuário está logado.
  Caso não esteja logado, ele é redirecionado para página de login.

  Nome e Diretório do arquivo:
  /middleware/auth.js
*/&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineNuxtRouteMiddleware&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;$store&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useNuxtApp&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;$store&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;loggedIn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;navigateTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/login&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nos Middlewares nomeados, é necessário definir quais páginas utilizam determinado middleware, uma das formas de se fazer isso é alterando os arquivos das páginas que vão utilizar aquele middleware:&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;setup&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nf"&gt;definePageMeta&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;middleware&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;auth-admin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também importante dizer que mesmo que você nomeie os arquivos de middleware em padrões como &lt;code&gt;PascalCase&lt;/code&gt; ou &lt;code&gt;camelCase&lt;/code&gt;, os nomes dos arquivos são normalizados para o padrão &lt;code&gt;kebab-case&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusão
&lt;/h3&gt;

&lt;p&gt;Espero que com esse artigo eu tenha conseguido te explicar de forma simples e rápida os principais pontos de criação e utilização de Middlewares no Nuxt.JS 🙋🏻‍♂️.&lt;/p&gt;

&lt;p&gt;Se você precisar de mais informações sobre Middlewares no Nuxt.JS, você pode buscar na &lt;a href="https://nuxt.com/docs/guide/directory-structure/middleware" rel="noopener noreferrer"&gt;documentação oficial&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>vue</category>
      <category>frontend</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>SEO para Mídias Sociais: Como Fazer os Links do Seu Site Bombarem nas Mídias Sociais!</title>
      <dc:creator>Thiago Nunes Batista</dc:creator>
      <pubDate>Thu, 03 Oct 2024 16:01:00 +0000</pubDate>
      <link>https://dev.to/codigoaoponto/seo-para-midias-sociais-como-fazer-os-links-do-seu-site-bombarem-nas-midias-sociais-20c5</link>
      <guid>https://dev.to/codigoaoponto/seo-para-midias-sociais-como-fazer-os-links-do-seu-site-bombarem-nas-midias-sociais-20c5</guid>
      <description>&lt;p&gt;O &lt;a href="https://ogp.me/" rel="noopener noreferrer"&gt;Open Graph Protocol&lt;/a&gt; é um protocolo criado pelo Facebook em 2010 que define um padrão de metadados que devemos seguir e preencher para integrar um site com as mídias sociais, por exemplo, isso é utilizado para que ao compartilhar o link de um site, seja exibido o título, imagem e descrição do conteúdo.&lt;/p&gt;

&lt;p&gt;Inicialmente o Open Graph Protocol foi pensado e desenvolvido para uso no Facebook, mas atualmente, por exemplo, outras plataformas como LinkedIn e Discord realizam o uso das OG Tags.&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%2F31zuzucvl92yfur9zxj4.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%2F31zuzucvl92yfur9zxj4.png" alt="exemplo do resultado do uso das OG Tags no Linkedin"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Como adicionar OG Tags em um site?
&lt;/h2&gt;

&lt;p&gt;Para adicionar as OG Tags será necessário realizar a inclusão de novas meta tags no cabeçalho da página web, onde o atributo &lt;code&gt;property&lt;/code&gt; é o nome da OG Tag e o atributo &lt;code&gt;content&lt;/code&gt; define o valor, como o exemplo abaixo de um &lt;a href="https://codigoaoponto.com/blog/como-recuperar-arquivos-perdidos-no-git-pelo-vscode" rel="noopener noreferrer"&gt;artigo no Código ao Ponto&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt;
    &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:title"&lt;/span&gt;
    &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"Como recuperar arquivos perdidos no Git pelo VSCode - Código ao Ponto"&lt;/span&gt;
  &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt;
    &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:description"&lt;/span&gt;
    &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"Aprenda a recuperar alterações de código perdidas utilizando uma funcionalidade do Vscode chamada Local History que salva diferentes versões do seu código."&lt;/span&gt;
  &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt;
    &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:image"&lt;/span&gt;
    &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"/images/blog/como-recuperar-arquivos-perdido-no-git-pelo-vscode.png"&lt;/span&gt;
  &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:type"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"article"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt;
    &lt;span class="na"&gt;property=&lt;/span&gt;&lt;span class="s"&gt;"og:url"&lt;/span&gt;
    &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"https://codigoaoponto.com/blog/como-recuperar-arquivos-perdidos-no-git-pelo-vscode"&lt;/span&gt;
  &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Os diferentes tipos de OG Tags
&lt;/h2&gt;

&lt;p&gt;Existe uma grande variedade de OG Tags, algumas que são fundamentais de se utilizar e outras que são complementares. Abaixo segue as essenciais:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;og:title&lt;/code&gt; - define o título da página&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;og:type&lt;/code&gt; - define o tipo de conteúdo da página. Exemplos: artigo, site, vídeo, etc.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;og:image&lt;/code&gt; - define a imagem exibida, talvez a tag mais importante, que captura a atenção do usuário.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;og:url&lt;/code&gt; - define a URL canônica da página&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;og:description&lt;/code&gt; - define o texto de descrição que normalmente é exibido abaixo da imagem.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;E agora algumas das OG Tags complementares, que são úteis em casos específicos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;og:audio&lt;/code&gt; - define a URL de um arquivo de aúdio presente na página&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;og:video&lt;/code&gt; - define a URL de um arquivo de vídeo presente na página.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Como testar as OG Tags de um site?
&lt;/h2&gt;

&lt;p&gt;Vou te recomendar o site &lt;a href="https://www.opengraph.xyz/" rel="noopener noreferrer"&gt;Open Graph&lt;/a&gt;, nele basta você colocar a URL do site que você quer validar o correto funcionamento das OG tags e fazer essa verificação sem precisar compartilhar o link do seu site em cada uma das mídias sociais que você quer testar. O site traz previews das OG Tags para &lt;code&gt;Facebook&lt;/code&gt;, &lt;code&gt;Twitter&lt;/code&gt;, &lt;code&gt;LinkedIn&lt;/code&gt; e &lt;code&gt;Discord&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%2Fn5r50zjhecceb5lz4gdn.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%2Fn5r50zjhecceb5lz4gdn.png" alt="utilizando o site Open Graph para visualizar o preview do link do seu site nas mídias sociais com as OG Tags"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;As OG Tags realizam um papel essencial na integração do seu site com mídias sociais como Twitter, Tiktok e LinkedIn, melhorando a apresentação do conteúdo do site e aumentando a chance de usuários clicarem no link compartilhado e acessarem o seu site.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>seo</category>
      <category>html</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Como adicionar o Google Tag Manager no seu website com Nuxt 3</title>
      <dc:creator>Thiago Nunes Batista</dc:creator>
      <pubDate>Thu, 15 Aug 2024 16:00:00 +0000</pubDate>
      <link>https://dev.to/codigoaoponto/como-adicionar-o-google-tag-manager-no-seu-website-com-nuxt-3-pp7</link>
      <guid>https://dev.to/codigoaoponto/como-adicionar-o-google-tag-manager-no-seu-website-com-nuxt-3-pp7</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F73i8n5g3q1c3n1xq0977.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F73i8n5g3q1c3n1xq0977.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O Google Tag Manager é uma plataforma do Google que permite adicionar e gerenciar a integração do seu site ou aplicativo com diversos outros serviços como por exemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Analytics&lt;/li&gt;
&lt;li&gt;Google Ads&lt;/li&gt;
&lt;li&gt;Crazy Egg&lt;/li&gt;
&lt;li&gt;Hotjar Tracking Code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Neste artigo você vai aprender através de um passo a passo como adicionar o Google Tag Manager no seu website desenvolvido com Nuxt 3.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Instalar o módulo nuxt-gtag
&lt;/h2&gt;

&lt;p&gt;O Nuxt possui um módulo chamado &lt;a href="https://nuxt.com/modules/gtag" rel="noopener noreferrer"&gt;"nuxt-gtag" que possui mais de 100 mil downloads&lt;/a&gt; mensais e que vai nos ajudar a realizar a instalação do Google Tag Manager no Nuxt 3 de forma simplificada.&lt;/p&gt;

&lt;p&gt;O primeiro passo é executar o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx nuxi@latest module add gtag
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando será responsável por instalar o pacote no NPM do módulo &lt;strong&gt;nuxt-gtag&lt;/strong&gt; no projeto e também irá adicionar o &lt;strong&gt;nuxt-gtag&lt;/strong&gt; na seção de módulos do arquivo &lt;strong&gt;nuxt.config.ts&lt;/strong&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="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineNuxtConfig&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="c1"&gt;// Other Nuxt Settings&lt;/span&gt;
  &lt;span class="na"&gt;modules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="c1"&gt;// Other Nuxt Modules&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;nuxt-gtag&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;h2&gt;
  
  
  2. Configurar o Google Tag Manager no projeto.
&lt;/h2&gt;

&lt;p&gt;Dentro do arquivo &lt;strong&gt;nuxt.config.ts&lt;/strong&gt;, você deverá adicionar um novo campo chamado &lt;strong&gt;gtag&lt;/strong&gt; dentro do objeto de configuração do Nuxt e que possuirá um outro campo de &lt;strong&gt;id&lt;/strong&gt; que é valor referente ao &lt;strong&gt;id&lt;/strong&gt; da sua conta no Google Tag Manager:&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="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineNuxtConfig&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="c1"&gt;// Other Nuxt Settings&lt;/span&gt;
  &lt;span class="na"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;GTAG-ID&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;h2&gt;
  
  
  3. Adicionar o id do Google Tag Manager nas variáveis de ambiente
&lt;/h2&gt;

&lt;p&gt;Eu recomendo você não colocar o id do Google Tag Manager dessa forma no seu código, e sim colocar o valor no arquivo .env do projeto e utilizar essa variável de ambiente para fornecer o valor do id do Google Tag Manager na configuração do projeto:&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;# .env file&lt;/span&gt;
&lt;span class="nv"&gt;GTAG_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"GTAG-ID"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineNuxtConfig&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="c1"&gt;// Other Nuxt Settings&lt;/span&gt;
  &lt;span class="na"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GTAG_ID&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;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Após realizar as etapas acima, o Google Tag Manager estará configurado no seu projeto e você já vai poder começar a adicionar tags no seu website como por exemplo as tags do Google Analytics e Google Ads.&lt;/p&gt;

&lt;p&gt;Espero ter conseguido te ajudar nessa missão de configurar com sucesso o Google Tag Manager no seu projeto com Nuxt 3. 🙋🏻‍♂️&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nuxt</category>
      <category>vue</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Os principais erros de programadores em entrevistas de emprego</title>
      <dc:creator>Thiago Nunes Batista</dc:creator>
      <pubDate>Mon, 15 Jul 2024 22:14:57 +0000</pubDate>
      <link>https://dev.to/codigoaoponto/os-principais-erros-de-programadores-em-entrevistas-de-emprego-1ae9</link>
      <guid>https://dev.to/codigoaoponto/os-principais-erros-de-programadores-em-entrevistas-de-emprego-1ae9</guid>
      <description>&lt;p&gt;Comecei a trabalhar com o recrutamento de programadores no ano de 2024, participei de todo o processo de recrutamento: análise de currículos, análise de entrevistas gravadas, entrevista de programadores e também realizei desafios de Live Coding. Todos esses processos eu realizei com dezenas de candidatos, com toda essa experiência, neste artigo vou te trazer os principais erros que os programadores cometem nas suas entrevistas de emprego.&lt;/p&gt;

&lt;h2&gt;
  
  
  Falar muito tempo sobre o seu início de carreira
&lt;/h2&gt;

&lt;p&gt;O início de carreira é muito marcante para cada um de nós, fala sobre a nossa jornada, a nossa história e todo o nosso esforço para entrar na área da programação.&lt;br&gt;
Falar sobre isso é legal, mostra a sua jornada e ajuda a construir o seu perfil, no entanto, um erro que candidatos costumam realizar é de utilizar muito tempo da entrevista falando sobre isso. Normalmente as entrevistas possuem duração aproximada de 1 hora, pode parecer muito tempo, mas acredite, não é!&lt;br&gt;
De uma perspectiva do recrutador, ele está muito mais interessante em saber sobre as suas experiências recentes e os projetos que utilizam as tecnologias que estão descritas na vaga, o ideal é que você busque trazer a maior quantidade de detalhes possíveis sobre esses assuntos.&lt;br&gt;
Você pode falar sobre a sua história, o seu início de carreira, o importante é buscar com que isso não ocupe uma grande quantidade de tempo da entrevista.&lt;/p&gt;

&lt;h2&gt;
  
  
  Interromper o entrevistador com frequência
&lt;/h2&gt;

&lt;p&gt;Esse é um típico de deficiência de habilidades de Soft Skills, é um erro de quem ainda estudou sobre Escuta ativa, que é um conceito que define que o ouvinte deve se dedicar à ouvir e compreender o assunto do interlocutor.&lt;br&gt;
Quando esse fluxo é interrompido com o candidato interrompendo por muitas vezes o entrevistador, o fluxo da entrevista vai sendo prejudicado, diminuindo a qualidade da entrevista e a sua chance de ser aprovado.&lt;br&gt;
Busque ouvir e entender o que o interlocutor está querendo dizer, antes de querer interromper ele para acrescentar algum ponto ou observação que você achou importante.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mentir sobre o seu conhecimento técnico
&lt;/h2&gt;

&lt;p&gt;Em empresas de tecnologia, normalmente a primeira etapa do processo seletivo é uma entrevista com pessoas que não são da área da tecnologia, são do setor de pessoas.&lt;br&gt;
Nessa primeira etapa o candidato tem as suas Soft Skills e adaptabilidade à cultura da empresa avaliados, além de uma avaliação inicial das suas experiências.&lt;br&gt;
No entanto, se o candidato fala que possui uma determinada habilidade que ele mesmo sabe que não tem, mas fala isso apenas para aumentar a sua chance de passar para a próxima etapa, essa fraude pode ser detectada posteriormente nas etapas de entrevista técnica realizada por algum programador, e acredite, quando isso ocorre, a sua avaliação de candidato é muito penalizada.&lt;/p&gt;

&lt;h2&gt;
  
  
  Excesso de palavrões e gírias
&lt;/h2&gt;

&lt;p&gt;As entrevistas do processo de recrutamento são as suas primeiras interações com a empresa. Você não sabe a forma como a empresa se comunica, se esse tipo de comunicação é aceitável ou não. Na dúvida, eu te recomendaria buscar evitar esse estilo de comunicação, mesmo que você utilize ela no seu dia a dia, busque se comunicar de maneira mais sóbria durante o recrutamento.&lt;br&gt;
Após você entrar na empresa, você vai ser alocado em algum time, conforme você for se ambientando e conhecendo o seu time, você saberá se esse tipo de comunicação é permitido naquele ambiente. Visto que você é uma pessoa nova entrando na empresa, você tem que buscar se ambientar àquele ambiente e não o ambiente se adaptar a você.&lt;/p&gt;

&lt;h2&gt;
  
  
  Se atrasar para a entrevista
&lt;/h2&gt;

&lt;p&gt;Esse erro é bem óbvio, mas às vezes acaba acontecendo. Atrasos pequenos de até 3 minutos passam despercebidos, no entanto, atrasos maiores causam uma primeira má impressão, um sentimento de falta de compromisso com o processo, afinal a maioria das entrevistas de programador são realizadas de forma online, então não há desculpa de locomoção ou afins que justifiquem o seu atraso.&lt;br&gt;
Como dica, eu te aconselharia a entrar no convite da entrevista alguns minutos antes do horário agendado para que você tenha a maior pontualidade possível.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local de entrevista despreparado
&lt;/h2&gt;

&lt;p&gt;O home office é um privilégio enorme e nós devemos buscar que o local de trabalho escolhido na nossa casa seja o mais profissional possível, especialmente em um momento tão importante quanto a entrevista de emprego.&lt;br&gt;
A dica é que você prepare esse ambiente para estar 100% focado na entrevista e evite situações como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Animais de estimação passando no ambiente&lt;/li&gt;
&lt;li&gt;Outras pessoas conversando com você&lt;/li&gt;
&lt;li&gt;Notificações e ligações no telefone&lt;/li&gt;
&lt;li&gt;Ambiente bagunçado&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Situações como as citadas acima geram um sentimento de desorganização e despreparo, portanto, nessas etapas de recrutamento busque evitar isso.&lt;/p&gt;

&lt;p&gt;No dia a dia do trabalho eventualmente isso vai acontecer, afinal, estamos trabalhando, mas ainda estamos em casa e essas interações com Pets ou outras pessoas vão ocorrer, o importante é buscar que isso ocorra nesses momentos críticos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Não pesquisar sobre a empresa
&lt;/h2&gt;

&lt;p&gt;Enquanto programador, é normal se candidatar em muitas vagas e ser chamado para as próximas etapas apenas em algumas dessas vagas. Não é possível e nem faz sentido estudar toda a história, produto e tecnologias que todas as empresas que você se candidatou utilizam, sendo que você nem sabe se vai avançar no processo seletivo.&lt;/p&gt;

&lt;p&gt;Do lado do recrutador, já entrevistei candidatos que nem sequer sabiam corretamente as tecnologias que a empresa utilizava e que estavam descritas na vaga, o que gera uma impressão de totalmente desinteresse na vaga em questão&lt;/p&gt;

&lt;p&gt;Pensando em um meio termo, eu diria que o melhor caminho seria alguns minutos antes da entrevista você olhar novamente as tecnologias descritas na vaga e o produto que a empresa desenvolve, dessa forma, na entrevista você pode conectar o assunto com as informações que você buscou, demonstrando que está engajado com o recrutamento.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusão
&lt;/h3&gt;

&lt;p&gt;Lembre-se que conseguir a sua próxima oportunidade de trabalho exige preparação e atenção aos detalhes, busque evitar os erros mencionados neste artigo e implemente as dicas sugeridas, dessa forma acredito que você vai melhorar a sua performance nas entrevistas e conseguir a tão desejada nova oportunidade de trabalho.&lt;/p&gt;

&lt;p&gt;Boa Sorte!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Como recuperar arquivos perdidos no Git utilizando o VSCode</title>
      <dc:creator>Thiago Nunes Batista</dc:creator>
      <pubDate>Fri, 14 Jun 2024 14:00:00 +0000</pubDate>
      <link>https://dev.to/codigoaoponto/como-recuperar-arquivos-perdidos-no-git-utilizando-o-vscode-2ec3</link>
      <guid>https://dev.to/codigoaoponto/como-recuperar-arquivos-perdidos-no-git-utilizando-o-vscode-2ec3</guid>
      <description>&lt;p&gt;O git é o sistema de controle de versão de código mais utilizado no mercado, normalmente nós programadores apenas arranhamos a superfície do que essa ferramenta é capaz. No cotidiano, costumamos apenas realizar ações simples como pull, commit, merge e push.&lt;/p&gt;

&lt;p&gt;No entanto, o git é uma ferramenta complexa, a sua incorreta utilização pode resultar em danos como perdas de código nos quais você ainda não tivesse "commitado" no seu repositório, se isso aconteceu com você, provavelmente você ficou muito preocupado que todo o tempo investido naquele código tivesse sido jogado fora.&lt;/p&gt;

&lt;p&gt;Se você utiliza o VScode que é um dos editores de texto mais populares entre programadores, eu fico muito feliz de te dizer que você não perdeu o seu código, nesse artigo vou te mostrar como utilizar o &lt;a href="https://code.visualstudio.com" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt; para recuperar o seu código perdido no Git.&lt;/p&gt;

&lt;p&gt;A funcionalidade que vamos utilizar se chama "Local History", foi adicionada na versão &lt;a href="https://code.visualstudio.com/updates/v1_66#_local-history" rel="noopener noreferrer"&gt;1.66 do VsCode em Março de 2022&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Se você prefere o aprendizado de forma visual, você pode assistir o vídeo abaixo que foi publicado no canal do &lt;strong&gt;Código ao Ponto&lt;/strong&gt; no Youtube.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/xTo9turfbF0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  A solução
&lt;/h2&gt;

&lt;p&gt;Para resolver esse problema realize os seguintes passos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Digitar f1 para abrir a paleta de comandos do Vscode&lt;/li&gt;
&lt;li&gt;Pesquisar pela funcionalidade: “Local History: Find Entry to Restore”&lt;/li&gt;
&lt;li&gt;Após selecionar, você deverá procurar e selecionar o nome do arquivo que você perdeu, o VsCode irá te mostrar todas as versões do seu arquivo que ele tem salvo e os horários de alterações no seu arquivo.&lt;/li&gt;
&lt;li&gt;Após encontrar, basta clicar e o seu código será restaurado para a versão selecionada.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Conclusão
&lt;/h3&gt;

&lt;p&gt;O Vscode é um editor de texto sensacional, possui tantas funções e atalhos que é impossível saber tudo que essa ferramenta pode te entregar. Fiquei muito surpreso ao descobrir que o VsCode guarda o histórico de alterações dos arquivos que foram editados nele, mas que bom que ele faz isso, porque vai ajudar muito quando aquelas alterações que fizemos e não "commitamos" foram acidentalmente desfeitas.&lt;/p&gt;

</description>
      <category>git</category>
      <category>programming</category>
      <category>webdev</category>
      <category>vscode</category>
    </item>
    <item>
      <title>A maneira correta de utilizar a nomenclatura BEM</title>
      <dc:creator>Thiago Nunes Batista</dc:creator>
      <pubDate>Thu, 06 Jun 2024 19:17:00 +0000</pubDate>
      <link>https://dev.to/codigoaoponto/a-maneira-correta-de-utilizar-a-nomenclatura-bem-40l6</link>
      <guid>https://dev.to/codigoaoponto/a-maneira-correta-de-utilizar-a-nomenclatura-bem-40l6</guid>
      <description>&lt;p&gt;Ter padrões de desenvolvimento é essencial para que códigos sejam escritos de forma organizada e estruturada, especialmente quando trabalhando com outros programadores em projetos, pois cada programador tem a sua forma específica de programar, estruturar o código e nomear as suas classes e variáveis, e sem um padrão, o código do projeto possui a tendência de ficar muito bagunçado, visto que diferentes pessoas estarão escrevendo códigos de maneiras diferentes.&lt;/p&gt;

&lt;p&gt;A nomenclatura ou metodologia BEM (Block Element Modifier) define o padrão que devemos utilizar para nomear as nossas classes CSS, separando as classes do layout em três partes: blocos, elementos e modificadores.&lt;/p&gt;

&lt;p&gt;Dessa forma, se todos os programadores de um projeto conhecerem e utilizarem esse padrão, as classes CSS do código sempre terão o mesmo formato, tornando o código muito mais organizado.&lt;/p&gt;

&lt;p&gt;Nesse artigo você vai aprender como utilizar a nomenclatura BEM corretamente e também conhecer os principais erros que programadores cometem utilizando a nomenclatura BEM para que você possa evitá-los.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block__element"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block__element"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block__another-element"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block__element block__element--modifider"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  O que é o Bloco?
&lt;/h2&gt;

&lt;p&gt;É como se fosse o container em volta do seu código, o bloco pode ter vários elementos dentro dele, o seu nome deve trazer muito significado, visto que o bloco será o "elemento pai" de várias elementos que serão os "elementos filho".&lt;/p&gt;

&lt;p&gt;📖 Sintaxe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  ...
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"second-block"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    ...
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"third-block"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    ...
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  ...
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✍🏻 Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"gallery"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"accordion"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  O que é o Elemento?
&lt;/h2&gt;

&lt;p&gt;É a parte interna do bloco, são pedaços de código que são amarrados e possuem o seu significado atrelado ao seu bloco.&lt;/p&gt;

&lt;p&gt;Para nomear um elemento, deve se fazer da seguinte forma: &lt;code&gt;block__element&lt;/code&gt;, ou seja, é utilizado o nome da classe de bloco, após é acrescentado &lt;strong&gt;2 caracteres de underline&lt;/strong&gt; e por fim se adiciona o nome da classe de elemento.&lt;/p&gt;

&lt;p&gt;📖 Sintaxe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block__element"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✍🏻 Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"media-gallery"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"media-gallery__tabs"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"media-gallery__posts"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"media-gallery__pagination"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card__header"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card__content"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card__footer"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  O que é o Modificador?
&lt;/h2&gt;

&lt;p&gt;Seu nome é auto explicativo, ele é responsável por modificar os estilos de blocos ou elementos, dessa forma, representando diferentes variações de estilização de blocos e estilos, como por exemplo: &lt;code&gt;active&lt;/code&gt;, &lt;code&gt;disabled&lt;/code&gt;, &lt;code&gt;open&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt; e &lt;code&gt;small&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Para nomear um modificador de bloco, se deve fazer da seguinte forma: &lt;code&gt;block--modifier&lt;/code&gt;, ou seja, é utilizado o nome da classe de bloco seguido de &lt;strong&gt;2 caracteres de hífen&lt;/strong&gt;, e após é adicionado o nome do modificador.&lt;/p&gt;

&lt;p&gt;Para criar o modificador de elemento é a mesma "receita": &lt;code&gt;block__element--modifier&lt;/code&gt;, basicamente, é utilizado a classe de elemento acrescido de &lt;strong&gt;2 caracteres de hífen&lt;/strong&gt;, com o nome do modificador ao final da classe.&lt;/p&gt;

&lt;p&gt;📖 Sintaxe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block--modifier"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block__element--other-modifier"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✍🏻 Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"alert alert--error"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"media-gallery"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"media-gallery__tabs--disabled"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"media-gallery__posts--empty"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card card--large"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card__header"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card__content card__content--open"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card__footer"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Os principais erros ao utilizar a nomenclatura BEM
&lt;/h2&gt;

&lt;p&gt;Agora você aprendeu os princípios da nomenclatura BEM e o melhor caminho para fixar todo esse conteúdo é praticar, visto que "é praticando, que se aprende", no entanto, durante essa prática podem surgir muitas dúvidas e erros na utilização do BEM podem acontecer.&lt;/p&gt;

&lt;p&gt;Abaixo trago os principais erros que eu cometi e que também vi outros programadores errarem na utilização do BEM, espero que isso te ajude na sua jornada de aprendizado. 🙋🏻‍♂️&lt;/p&gt;

&lt;h3&gt;
  
  
  Posso ter elementos dentro de elementos?
&lt;/h3&gt;

&lt;p&gt;Não, os elementos devem se referenciar à um bloco e não à outros elementos.&lt;/p&gt;

&lt;p&gt;❌ Incorreto&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block__element"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block__element__other-element"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;✅ Correto&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block__element"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block__other-element"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Posso ter blocos dentro de blocos?
&lt;/h3&gt;

&lt;p&gt;Sim, isso normalmente faz sentido quando um elemento se tornou muito grande ou complexo, nesse caso, você pode tornar esse elemento em um bloco, que não precisa ter relação com o seu "bloco pai".&lt;/p&gt;

&lt;p&gt;✅ Correto&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    ...
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"second-block"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"second-block__element"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;..&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"second-block__second-element"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"second-block__third-element"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    ...
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Posso aplicar modificadores de classe também em blocos?
&lt;/h3&gt;

&lt;p&gt;Sim, você pode utilizar modificadores nas suas classes de bloco, no entanto, é necessário que a classe de bloco também esteja presente na tag HTML.&lt;/p&gt;

&lt;p&gt;✅ Correto&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block block--modifier"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;❌ Incorreto&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"block--modifier"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Conclusão
&lt;/h4&gt;

&lt;p&gt;A nomenclatura BEM é uma das metodologias mais utilizadas para padronização de classes CSS, espero ter conseguido te ensinar a forma correta de utilizá-la ela e te passar a importância de sua utilização.&lt;/p&gt;

</description>
      <category>css</category>
      <category>frontend</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Install and Use Fira Code Font - VSCode on Ubuntu</title>
      <dc:creator>Thiago Nunes Batista</dc:creator>
      <pubDate>Mon, 20 Sep 2021 14:24:52 +0000</pubDate>
      <link>https://dev.to/roadevmap/how-to-install-and-use-fira-code-font-vscode-on-ubuntu-jcd</link>
      <guid>https://dev.to/roadevmap/how-to-install-and-use-fira-code-font-vscode-on-ubuntu-jcd</guid>
      <description>&lt;p&gt;But what are &lt;strong&gt;font ligatures&lt;/strong&gt;?  Developers use a lot of sequencial symbols in programming, for example: &lt;strong&gt;=&amp;gt;&lt;/strong&gt; , &lt;strong&gt;&amp;lt;=&lt;/strong&gt;  and &lt;strong&gt;!==&lt;/strong&gt;. The font ligatures will basically transform visuallly this multiple characteres into just one, they will have a different look, maybe more beautiful than the normal look of the separated symbols.&lt;/p&gt;

&lt;p&gt;If you prefer a video tutorial, I created that on Youtube, this is the &lt;a href="https://www.youtube.com/watch?v=_Y2Yy7YYIsA"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing the Font
&lt;/h2&gt;

&lt;p&gt;In the most recent Ubuntu versions the Fira Code font is included in the official repository, you can just install using the command below:&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="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;fonts-firacode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Follow the Next 4 Steps To Set Fira Code on VSCode
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the command pallet with the shortcut “&lt;strong&gt;ctrl + shift + p&lt;/strong&gt;”.&lt;/li&gt;
&lt;li&gt;Search for “&lt;strong&gt;Preferences: Open Settings (JSON)”&lt;/strong&gt; and open it.&lt;/li&gt;
&lt;li&gt;Add the following properties in the JSON file:
&lt;/li&gt;
&lt;/ol&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="nl"&gt;"editor.fontFamily"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"'Fira Code'"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"editor.fontLigatures"&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart the editor. Now, your VSCode is using the Fira Code font.&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>ubuntu</category>
      <category>firacode</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
