<?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: Douglas Toledo</title>
    <description>The latest articles on DEV Community by Douglas Toledo (@dwtoledo).</description>
    <link>https://dev.to/dwtoledo</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%2F485518%2F71e95753-06a9-4195-a19a-50ec3a6b6cad.jpeg</url>
      <title>DEV Community: Douglas Toledo</title>
      <link>https://dev.to/dwtoledo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dwtoledo"/>
    <language>en</language>
    <item>
      <title>DeepSeek R1 vs o3-mini for Developers: Which is the Best?</title>
      <dc:creator>Douglas Toledo</dc:creator>
      <pubDate>Fri, 07 Feb 2025 16:11:46 +0000</pubDate>
      <link>https://dev.to/dwtoledo/deepseek-r1-vs-o3-mini-for-developers-which-is-the-best-30k2</link>
      <guid>https://dev.to/dwtoledo/deepseek-r1-vs-o3-mini-for-developers-which-is-the-best-30k2</guid>
      <description>&lt;p&gt;Hello, everyone!&lt;/p&gt;

&lt;p&gt;Recently, &lt;em&gt;OpenAI&lt;/em&gt; launched its new model, the &lt;strong&gt;o3-mini&lt;/strong&gt;. With so many options emerging, the big question for every developer is: &lt;strong&gt;Which model should I use?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To answer this question, I spent the last few hours testing the o3-mini and the DeepSeek R1 on common tasks that we developers perform daily. These tasks are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Building&lt;/strong&gt; a program from scratch;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Adding a feature&lt;/strong&gt; to existing code;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Refactoring code&lt;/strong&gt; and generating tests.&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this article, I will share my recommendations and &lt;em&gt;insights&lt;/em&gt;. My goal is for all of us to become better developers by leveraging AI to our advantage.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Performance, Price, and Context Window&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Before diving into practical tests, it is essential to understand the specifications of each model, as they are crucial in determining which one aligns best with your project's needs.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. &lt;strong&gt;Performance&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;o3-mini&lt;/strong&gt; and &lt;strong&gt;DeepSeek R1&lt;/strong&gt; lead in the &lt;em&gt;&lt;em&gt;SWE Bench&lt;/em&gt;&lt;/em&gt; (a test that evaluates the ability to solve GitHub &lt;em&gt;issues&lt;/em&gt;), with scores above 49.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude 3.5 Sonnet&lt;/strong&gt; initially showed good scores, but as the tests below revealed, it demonstrated significant limitations in executing complex tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. &lt;strong&gt;Cost per Million Tokens&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek R1&lt;/strong&gt;: &lt;em&gt;input&lt;/em&gt;: $0.55 and &lt;em&gt;output&lt;/em&gt;: $2.19 (more economical),&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;o3-mini&lt;/strong&gt;: &lt;em&gt;input&lt;/em&gt;: $1.10 and &lt;em&gt;output&lt;/em&gt;: $4.40.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude 3.5 Sonnet&lt;/strong&gt;: &lt;em&gt;input&lt;/em&gt;: $3.00 and &lt;em&gt;output&lt;/em&gt;: $15.00.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. &lt;strong&gt;Context Window&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;o3-mini&lt;/strong&gt; and &lt;strong&gt;Claude 3.5&lt;/strong&gt;: Up to 200k tokens (better for larger and more complex requests).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek R1&lt;/strong&gt;: Up to 128k tokens.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Practical Test 1: Building a Project from Scratch&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; Create an interface to chat with local &lt;em&gt;LLMs&lt;/em&gt; via &lt;em&gt;Ollama&lt;/em&gt;, with chat functionalities, conversation history, and model selection.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Results:&lt;/strong&gt;
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Files Generated&lt;/th&gt;
&lt;th&gt;Functional Features&lt;/th&gt;
&lt;th&gt;Observations&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;o3-mini using Cursor&lt;/td&gt;
&lt;td&gt;3 (HTML, CSS, and JS separated)&lt;/td&gt;
&lt;td&gt;All&lt;/td&gt;
&lt;td&gt;Code organized, but UI and styling very basic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek R1 on the Web&lt;/td&gt;
&lt;td&gt;1 (HTML, CSS, and JS condensed)&lt;/td&gt;
&lt;td&gt;Chat and Model Selection&lt;/td&gt;
&lt;td&gt;No Conversation History, UI and styling were better&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek R1 using Cursor&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Failed to create multiple files, many manual adjustments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude 3.5 using Cursor&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Completely failed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Winner: o3-mini&lt;/strong&gt;, for its consistency and ability to generate complex projects in a single request.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Practical Test 2: Adding a Feature to Existing Code&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; Integrate a user interface (UI) into an existing CLI to interact with AI agents.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Results:&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;o3-mini using Cursor:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generated new files and added the feature after &lt;strong&gt;more than 20 iterations&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Had greater &lt;strong&gt;difficulty understanding&lt;/strong&gt; UI state management, requiring prompt adjustments and manual fixes after the generated result.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;DeepSeek R1 using Cursor:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generated new files and added the feature in just &lt;strong&gt;9 iterations&lt;/strong&gt;, with cleaner and more organized code than o3-mini.&lt;/li&gt;
&lt;li&gt;Needed &lt;strong&gt;guidance to adjust some integrations&lt;/strong&gt;, but was faster than o3-mini in understanding the requirements.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Winner: DeepSeek R1&lt;/strong&gt;, although o3-mini is more "autonomous," it struggled significantly in understanding key functionalities for integration. In contrast, while DeepSeek R1 required more "supervision," it better understood the needs and delivered the new feature quickly.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Practical Test 3: Refactoring Code and Generating Tests&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; Refactor functions in a React/TypeScript web application and add unit tests.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Results:&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;o3-mini using Cursor:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refactored the code, followed best practices, and generated functional tests (with minor adjustments needed).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;DeepSeek R1 using Cursor:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduced critical &lt;em&gt;bugs&lt;/em&gt; by removing essential functions.&lt;/li&gt;
&lt;li&gt;Generated valid tests but failed in refactoring.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Winner: o3-mini&lt;/strong&gt;, for its precision and lower risk of breaking existing code.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Final Recommendations&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;For New Projects:&lt;/strong&gt; Use &lt;strong&gt;o3-mini&lt;/strong&gt; in Cursor. Its ability to generate structured code in a single pass is unmatched.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For Complex Features:&lt;/strong&gt; Combine &lt;strong&gt;o3-mini&lt;/strong&gt; (for architecture) with &lt;strong&gt;DeepSeek R1&lt;/strong&gt; (for specific &lt;em&gt;snippets&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For Tight Budgets:&lt;/strong&gt; &lt;strong&gt;DeepSeek R1&lt;/strong&gt; is the most economical choice but requires more attention and supervision during development.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What About Claude 3.5?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;With a cost 7x higher and inferior performance already in the first practical test, &lt;strong&gt;Claude 3.5&lt;/strong&gt; is not a viable option for daily development. I recommend focusing on &lt;strong&gt;o3-mini&lt;/strong&gt; and &lt;strong&gt;DeepSeek R1&lt;/strong&gt;, which offer a better balance between cost and performance.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;How to Use Both Models Together&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Planning Phase:&lt;/strong&gt; Use &lt;strong&gt;o3-mini&lt;/strong&gt; to outline the overall project structure. Its ability to handle large context windows allows for comprehensive planning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimization and Final Adjustments:&lt;/strong&gt; After structuring the project, use &lt;strong&gt;DeepSeek R1&lt;/strong&gt; with continuous "supervision" to fine-tune specific functions, improve code efficiency, and reduce costs in specific tasks.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Final Considerations&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The integration of AI models like &lt;strong&gt;o3-mini&lt;/strong&gt; and &lt;strong&gt;DeepSeek R1&lt;/strong&gt; into the development workflow can completely transform the way we create and maintain projects.&lt;/p&gt;

&lt;p&gt;While o3-mini stands out for its consistency and ability to handle complex tasks, DeepSeek R1 offers an economical solution for fine-tuning and specific tasks.&lt;/p&gt;




&lt;p&gt;So, &lt;strong&gt;which model will you test first?&lt;/strong&gt; 👨‍💻&lt;br&gt;&lt;br&gt;
Did you like it? &lt;strong&gt;Share your experiences in the comments!&lt;/strong&gt; 🚀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>deepseek</category>
      <category>o3mini</category>
      <category>programming</category>
    </item>
    <item>
      <title>DeepSeek R1 vs o3-mini para Desenvolvedores: Qual é o melhor?</title>
      <dc:creator>Douglas Toledo</dc:creator>
      <pubDate>Fri, 07 Feb 2025 16:07:16 +0000</pubDate>
      <link>https://dev.to/dwtoledo/deepseek-r1-vs-o3-mini-para-desenvolvedores-qual-e-o-melhor-58h8</link>
      <guid>https://dev.to/dwtoledo/deepseek-r1-vs-o3-mini-para-desenvolvedores-qual-e-o-melhor-58h8</guid>
      <description>&lt;p&gt;Olá, pessoal!&lt;/p&gt;

&lt;p&gt;Recentemente a &lt;em&gt;OpenAI&lt;/em&gt; lançou o seu novo modelo, o &lt;strong&gt;o3-mini&lt;/strong&gt;. Com tantas opções surgindo, a grande pergunta de todo desenvolvedor é: &lt;strong&gt;Qual modelo devo usar?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para responder a essa dúvida, passei as últimas horas testando &lt;br&gt;
o o3-mini e o DeepSeek R1 em tarefas comuns que nós, desenvolvedores, realizamos diariamente. São elas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Construir&lt;/strong&gt; um programa do Zero;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Adicionar um recurso&lt;/strong&gt; a um código existente;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Refatorar código&lt;/strong&gt; e gerar testes.&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Neste artigo, vou compartilhar minhas recomendações e &lt;em&gt;insights&lt;/em&gt;. Meu objetivo é que todos nós possamos nos tornar melhores desenvolvedores, utilizando a IA a nosso favor.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Performance, Preço e Janela de Contexto&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Antes de mergulhar nos testes práticos, é fundamental entender as especificações de cada modelo, elas são cruciais para determinar qual se alinha melhor às necessidades do seu projeto.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. &lt;strong&gt;Desempenho&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;o3-mini&lt;/strong&gt; e &lt;strong&gt;DeepSeek R1&lt;/strong&gt; lideram no &lt;em&gt;&lt;em&gt;SWE Bench&lt;/em&gt;&lt;/em&gt; (teste que avalia a capacidade de resolver &lt;em&gt;issues&lt;/em&gt; do GitHub), com pontuações acima de 49.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude 3.5 Sonnet&lt;/strong&gt; inicialmente mostrou boas pontuações, mas conforme os testes abaixo, demonstrou limitações significativas na execução de tarefas complexas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. &lt;strong&gt;Custo por Milhão de Tokens&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek R1&lt;/strong&gt;: &lt;em&gt;input&lt;/em&gt;: $ 0,55 e &lt;em&gt;output&lt;/em&gt;: $ 2,19 (mais econômico),&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;o3-mini&lt;/strong&gt;: &lt;em&gt;input&lt;/em&gt;: $ 1,10 e &lt;em&gt;output&lt;/em&gt;: $ 4,40.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude 3.5 Sonnet&lt;/strong&gt;: &lt;em&gt;input&lt;/em&gt;: $ 3,00 e &lt;em&gt;output&lt;/em&gt;: $ 15,00.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. &lt;strong&gt;Janela de Contexto&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;o3-mini&lt;/strong&gt; e &lt;strong&gt;Claude 3.5&lt;/strong&gt;: Até 200k tokens (melhor para requisições maiores e mais complexas).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek R1&lt;/strong&gt;: Até 128k tokens.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Teste Prático 1: Construir um Projeto do Zero&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Tarefa:&lt;/strong&gt; Criar uma interface para conversar com &lt;em&gt;LLM&lt;/em&gt; locais via &lt;em&gt;Ollama&lt;/em&gt;, com funcionalidades de &lt;em&gt;chat&lt;/em&gt;, histórico de conversas e seleção de modelos.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Resultados:&lt;/strong&gt;
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Modelo&lt;/th&gt;
&lt;th&gt;Arquivos Gerados&lt;/th&gt;
&lt;th&gt;Funcionalidades Funcionais&lt;/th&gt;
&lt;th&gt;Observações&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;o3-mini usando Cursor&lt;/td&gt;
&lt;td&gt;3 (HTML, CSS e JS separados)&lt;/td&gt;
&lt;td&gt;Todas&lt;/td&gt;
&lt;td&gt;Código organizado, mas UI e estilização muito básicos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek R1 na Web&lt;/td&gt;
&lt;td&gt;1 (HTML, CSS e JS condensados)&lt;/td&gt;
&lt;td&gt;Chat e Escolha de modelos&lt;/td&gt;
&lt;td&gt;Sem Histórico de conversas, a UI e estilização estavam melhores&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek R1 usando Cursor&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Falhou ao criar múltiplos arquivos, muitos ajustes manuais&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude 3.5 usando Cursor&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Falhou completamente&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Vencedor: o3-mini&lt;/strong&gt;, pela consistência e capacidade de gerar projetos complexos em uma única requisição.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Teste Prático 2: Adicionar um Recurso a um Código Existente&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Tarefa:&lt;/strong&gt; Integrar uma interface de usuário (UI) a uma CLI existente para interagir com agentes de IA.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Resultados:&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;o3-mini usando Cursor:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gerou os novos arquivos e adicionou o recurso após &lt;strong&gt;mais de 20 iterações&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Teve maiores &lt;strong&gt;dificuldades para entender&lt;/strong&gt; o gerenciamento de estados da UI, precisando de ajustes nos prompts e correções manuais após o resultado gerado.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;DeepSeek R1 usando Cursor:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gerou os novos arquivos e adicionou o recurso em apenas &lt;strong&gt;9 iterações&lt;/strong&gt;, com código mais limpo e organizado do que o o3-mini.&lt;/li&gt;
&lt;li&gt;Precisou de &lt;strong&gt;orientação para ajustar algumas integrações&lt;/strong&gt;, mas foi mais rápido do que o o3-mini para entender as necessidades.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Vencedor: DeepSeek R1&lt;/strong&gt;, embora o o3-mini seja mais "autônomo", ele apresentou grandes dificuldades em entender as funcionalidades chave para realizar a integração. Em contraste, embora o DeepSeek R1 tenha exigido mais "supervisão", ele compreendeu melhor as necessidades e entregou o novo recurso rapidamente.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Teste Prático 3: Refatorar Código e Gerar Testes&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Tarefa:&lt;/strong&gt; Refatorar funções em uma aplicação web feito com React/TypeScript e adicionar testes unitários.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Resultados:&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;o3-mini usando Cursor:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refatorou o código, seguiu boas práticas e gerou testes funcionais (com pequenos ajustes necessários).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;DeepSeek R1 usando Cursor:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduziu &lt;em&gt;bugs&lt;/em&gt; críticos ao remover funções essenciais.&lt;/li&gt;
&lt;li&gt;Gerou testes válidos, mas falhou na refatoração.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Vencedor: o3-mini&lt;/strong&gt;, pela precisão e menor risco de quebrar o código existente.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Recomendações Finais&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Para Projetos Novos:&lt;/strong&gt; Use &lt;strong&gt;o3-mini&lt;/strong&gt; no Cursor. Sua capacidade de gerar código estruturado em uma única passagem é imbatível.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Para Features Complexas:&lt;/strong&gt; Combine &lt;strong&gt;o3-mini&lt;/strong&gt; (para arquitetura) com &lt;strong&gt;DeepSeek R1&lt;/strong&gt; (para &lt;em&gt;snippets&lt;/em&gt; específicos).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Para Orçamentos Apertados:&lt;/strong&gt; &lt;strong&gt;DeepSeek R1&lt;/strong&gt; é a escolha mais econômica, mas exige mais atenção e supervisão durante o desenvolvimento.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;E o Claude 3.5?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Com um custo 7x maior e desempenho inferior já no primeiro teste prático, o &lt;strong&gt;Claude 3.5&lt;/strong&gt; não se mostra uma opção viável para desenvolvimento diário. Recomendo focar no &lt;strong&gt;o3-mini&lt;/strong&gt; e no &lt;strong&gt;DeepSeek R1&lt;/strong&gt;, que oferecem um equilíbrio melhor entre custo e desempenho.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Como Usar os Dois Modelos Juntos&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fase de Planejamento:&lt;/strong&gt; Utilize &lt;strong&gt;o3-mini&lt;/strong&gt; para esboçar a estrutura geral do projeto. Sua capacidade de lidar com grandes janelas de contexto permite planejar de forma abrangente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Otimização e Ajustes Finais:&lt;/strong&gt; Após estruturar o projeto, utilize &lt;strong&gt;DeepSeek R1&lt;/strong&gt; com "supervisão" contínua para afinar funções específicas, melhorar a eficiência do código e reduzir custos em tarefas pontuais.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Considerações Finais&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A integração de modelos de IA como &lt;strong&gt;o3-mini&lt;/strong&gt; e &lt;strong&gt;DeepSeek R1&lt;/strong&gt; no fluxo de trabalho de desenvolvimento pode transformar completamente a maneira como criamos e mantemos projetos.&lt;/p&gt;

&lt;p&gt;Enquanto o o3-mini se destaca pela consistência e capacidade de lidar com tarefas complexas, o DeepSeek R1 oferece uma solução econômica para ajustes finos e tarefas específicas.&lt;/p&gt;




&lt;p&gt;E aí, &lt;strong&gt;qual modelo você vai testar primeiro?&lt;/strong&gt; 👨‍💻&lt;br&gt;
Gostou? &lt;strong&gt;Compartilhe suas experiências nos comentários!&lt;/strong&gt; 🚀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>o3mini</category>
      <category>deepseek</category>
      <category>programming</category>
    </item>
    <item>
      <title>n8n: The Automation Revolution in the Business World - 6 Examples</title>
      <dc:creator>Douglas Toledo</dc:creator>
      <pubDate>Fri, 07 Feb 2025 00:32:05 +0000</pubDate>
      <link>https://dev.to/dwtoledo/n8n-the-automation-revolution-in-the-business-world-6-examples-f27</link>
      <guid>https://dev.to/dwtoledo/n8n-the-automation-revolution-in-the-business-world-6-examples-f27</guid>
      <description>&lt;h4&gt;
  
  
  The Automation Landscape
&lt;/h4&gt;

&lt;p&gt;According to a &lt;a href="https://www.mckinsey.com/featured-insights/destaques/a-organizacao-do-futuro-habilitada-pela-ia-generativa-impulsionada-pelas-pessoas/pt" rel="noopener noreferrer"&gt;McKinsey&lt;/a&gt; study, by 2030 about 70% of activities for which people are paid could be automated using technologies. In a world where operational efficiency is crucial, automation has moved from being a differential to becoming a competitive necessity.&lt;/p&gt;

&lt;p&gt;Depending on the activity, an AI-implemented chatbot can outperform a team, converting more sales than the best human salesperson, for example. This is just one example of the transformative potential of intelligent automation in the business environment.&lt;/p&gt;

&lt;h4&gt;
  
  
  What is n8n?
&lt;/h4&gt;

&lt;p&gt;n8n (pronounced "n-eight-n") is a fair-code workflow automation platform that allows you to connect different systems and automate complex processes through an intuitive visual interface. Unlike other tools on the market, n8n offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Self-hosting capability&lt;/li&gt;
&lt;li&gt;More than 200 native integrations&lt;/li&gt;
&lt;li&gt;Node-based visual interface&lt;/li&gt;
&lt;li&gt;Flexibility for customizations via code (JavaScript/Python)&lt;/li&gt;
&lt;li&gt;More affordable prices compared to competitors&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Advantages of Self-hosting
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Total control over sensitive data&lt;/li&gt;
&lt;li&gt;Lower latency in operations&lt;/li&gt;
&lt;li&gt;Reduced costs at scale&lt;/li&gt;
&lt;li&gt;Compliance with data regulations&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  6 Practical Applications of n8n
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;1. Intelligent Chatbots&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;According to &lt;a href="https://news.microsoft.com/europe/features/ai-powering-customer-experience/" rel="noopener noreferrer"&gt;Servion Global Solutions&lt;/a&gt;, by 2025, 95% of customer interactions will be mediated by AI. n8n allows the creation of sophisticated chatbots that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrate natively with major messaging platforms&lt;/li&gt;
&lt;li&gt;Process natural language&lt;/li&gt;
&lt;li&gt;Maintain conversation context&lt;/li&gt;
&lt;li&gt;Scale automatically&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Detailed Flow:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Webhook receives user's message&lt;/li&gt;
&lt;li&gt;System checks the source and type of message&lt;/li&gt;
&lt;li&gt;Processes keywords and context&lt;/li&gt;
&lt;li&gt;Executes specific business logic&lt;/li&gt;
&lt;li&gt;Returns personalized response&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. AI Agents&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With the integration of the LangChain framework, n8n agents offer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Advanced natural language processing&lt;/li&gt;
&lt;li&gt;Contextual memory for more natural conversations&lt;/li&gt;
&lt;li&gt;Integration with multiple AI models (OpenAI, Google, Meta)&lt;/li&gt;
&lt;li&gt;Customizable knowledge base&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advantages over Traditional Chatbots:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Superior contextual understanding&lt;/li&gt;
&lt;li&gt;More natural and accurate responses&lt;/li&gt;
&lt;li&gt;Continuous learning capability&lt;/li&gt;
&lt;li&gt;Higher resolution rate on first contact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Web Scraping&lt;/strong&gt;&lt;br&gt;
In a market where data is the new oil, automated web scraping offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continuous price monitoring&lt;/li&gt;
&lt;li&gt;Competitive analysis&lt;/li&gt;
&lt;li&gt;Lead collection&lt;/li&gt;
&lt;li&gt;Automatic catalog updating&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Implementation Process:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data source definition&lt;/li&gt;
&lt;li&gt;Selector configuration&lt;/li&gt;
&lt;li&gt;Collection scheduling&lt;/li&gt;
&lt;li&gt;Processing and cleaning&lt;/li&gt;
&lt;li&gt;Structured storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Workload Units Optimization in Bubble&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is possible to create automations and integrations in n8n that help improve operational efficiency in platforms like Bubble. Some examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Efficiently process data before sending it to Bubble&lt;/li&gt;
&lt;li&gt;Automate data updates and process execution outside of Bubble, reducing the need for WUs in Bubble&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These strategies can help achieve greater stability, reduce operational costs, and improve overall performance, but the exact reduction in WUs will depend on how you configure and optimize your automations. Case studies show reductions of up to 95% in resource consumption:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From 10 WU to 0.5 WU in complex processing&lt;/li&gt;
&lt;li&gt;Greater stability during demand peaks&lt;/li&gt;
&lt;li&gt;Reduced operational costs&lt;/li&gt;
&lt;li&gt;Better overall performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Database Integration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;n8n supports virtually all major databases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQL: PostgreSQL, MySQL, SQL Server&lt;/li&gt;
&lt;li&gt;NoSQL: MongoDB, CouchDB&lt;/li&gt;
&lt;li&gt;Cloud Services: AWS, Google Cloud&lt;/li&gt;
&lt;li&gt;Low-code: Airtable, NocoDB&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. Facilitating External Integrations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Significant reduction in development time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From weeks to hours in complex integrations&lt;/li&gt;
&lt;li&gt;Elimination of boilerplate code&lt;/li&gt;
&lt;li&gt;Simplified maintenance&lt;/li&gt;
&lt;li&gt;Greater reliability&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Business Impact
&lt;/h4&gt;

&lt;p&gt;According to a &lt;a href="https://www.prnewswire.com/news-releases/deloitte-global-intelligent-automation-study-reveals-dramatic-acceleration-in-adoption-of-automation-technologies-301182581.html" rel="noopener noreferrer"&gt;Deloitte&lt;/a&gt; study, companies that implement intelligent automation report:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;40% reduction in operational costs&lt;/li&gt;
&lt;li&gt;35% increase in productivity&lt;/li&gt;
&lt;li&gt;60% improvement in customer satisfaction&lt;/li&gt;
&lt;li&gt;200% average ROI in 12 months&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  The Future of Automation
&lt;/h4&gt;

&lt;p&gt;The trend is that automations will become increasingly sophisticated and accessible. n8n positions itself as a fundamental tool in this transformation, offering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Democratization of automation&lt;/li&gt;
&lt;li&gt;Reduction of technical complexity&lt;/li&gt;
&lt;li&gt;Business scalability&lt;/li&gt;
&lt;li&gt;Integration with emerging technologies&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Final Considerations
&lt;/h4&gt;

&lt;p&gt;n8n is not just an automation tool, but a catalyst for digital transformation. In a world where operational efficiency is crucial, automating processes is no longer optional. Companies that adopt these technologies today will be better positioned for the challenges of tomorrow.&lt;/p&gt;

&lt;p&gt;The combination of ease of use, flexibility, and processing power makes n8n a strategic choice for companies of all sizes looking to modernize their operations and remain competitive in today's market.&lt;/p&gt;

</description>
      <category>n8n</category>
      <category>automation</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>n8n: A Revolução das Automações no Mundo Empresarial - 6 exemplos</title>
      <dc:creator>Douglas Toledo</dc:creator>
      <pubDate>Fri, 07 Feb 2025 00:28:28 +0000</pubDate>
      <link>https://dev.to/dwtoledo/n8n-a-revolucao-das-automacoes-no-mundo-empresarial-6-exemplos-1ie6</link>
      <guid>https://dev.to/dwtoledo/n8n-a-revolucao-das-automacoes-no-mundo-empresarial-6-exemplos-1ie6</guid>
      <description>&lt;h4&gt;
  
  
  O Cenário das Automações
&lt;/h4&gt;

&lt;p&gt;De acordo com um estudo da &lt;a href="https://www.mckinsey.com/featured-insights/destaques/a-organizacao-do-futuro-habilitada-pela-ia-generativa-impulsionada-pelas-pessoas/pt" rel="noopener noreferrer"&gt;McKinsey&lt;/a&gt;, até 2030 cerca de 70% das atividades pelas quais as pessoas são pagas poderão ser automatizadas usando tecnologias. Em um mundo onde a eficiência operacional é crucial, as automações deixaram de ser um diferencial para se tornar uma necessidade competitiva.&lt;/p&gt;

&lt;p&gt;Dependendo da atividade, um &lt;em&gt;chatbot&lt;/em&gt; implementado com IA pode superar o desempenho de uma equipe, convertendo mais vendas que o melhor vendedor humano por exemplo. Este é apenas um exemplo do potencial transformador das automações inteligentes no ambiente empresarial.&lt;/p&gt;

&lt;h4&gt;
  
  
  O que é o n8n?
&lt;/h4&gt;

&lt;p&gt;O n8n (pronuncia-se "n-eight-n") é uma plataforma de automação de fluxo de trabalho fair-code que permite conectar diferentes sistemas e automatizar processos complexos através de uma interface visual intuitiva. Diferente de outras ferramentas no mercado, &lt;strong&gt;o n8n oferece:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Possibilidade de self-hosting (hospedagem própria)&lt;/li&gt;
&lt;li&gt;Mais de 200 integrações nativas&lt;/li&gt;
&lt;li&gt;Interface visual baseada em nodes&lt;/li&gt;
&lt;li&gt;Flexibilidade para customizações via código (JavaScript/Python)&lt;/li&gt;
&lt;li&gt;Preços mais acessíveis comparados a concorrentes&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Vantagens do Self-hosting
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Controle total sobre dados sensíveis&lt;/li&gt;
&lt;li&gt;Menor latência em operações&lt;/li&gt;
&lt;li&gt;Custos reduzidos em grande escala&lt;/li&gt;
&lt;li&gt;Conformidade com regulamentações de dados&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  6 Exemplos de Aplicações Práticas do n8n
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;1. &lt;em&gt;Chatbots&lt;/em&gt; Inteligentes&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Segundo a &lt;a href="https://news.microsoft.com/europe/features/ai-powering-customer-experience/" rel="noopener noreferrer"&gt;Servion Global Solutions&lt;/a&gt;, até 2025, 95% das interações com clientes serão mediadas por IA. O n8n permite criar &lt;em&gt;chatbots&lt;/em&gt; sofisticados que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integram-se nativamente com principais plataformas de mensagem&lt;/li&gt;
&lt;li&gt;Processam linguagem natural&lt;/li&gt;
&lt;li&gt;Mantêm contexto das conversas&lt;/li&gt;
&lt;li&gt;Escalam automaticamente&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Fluxo Detalhado:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Webhook recebe mensagem do usuário&lt;/li&gt;
&lt;li&gt;Sistema verifica origem e tipo de mensagem&lt;/li&gt;
&lt;li&gt;Processa palavras-chave e contexto&lt;/li&gt;
&lt;li&gt;Executa lógica de negócio específica&lt;/li&gt;
&lt;li&gt;Retorna resposta personalizada&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;2. Agentes com IA&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Com a integração do framework LangChain, os agentes n8n oferecem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Processamento de linguagem natural avançado&lt;/li&gt;
&lt;li&gt;Memória contextual para conversas mais naturais&lt;/li&gt;
&lt;li&gt;Integração com múltiplos modelos de IA (OpenAI, Google, Meta)&lt;/li&gt;
&lt;li&gt;Base de conhecimento customizável&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Diferenciais vs &lt;em&gt;Chatbots&lt;/em&gt; Tradicionais:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compreensão contextual superior&lt;/li&gt;
&lt;li&gt;Respostas mais naturais e precisas&lt;/li&gt;
&lt;li&gt;Capacidade de aprendizado contínuo&lt;/li&gt;
&lt;li&gt;Maior taxa de resolução no primeiro contato&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Web Scraping&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Em um mercado onde dados são o novo petróleo, o web scraping automatizado oferece:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitoramento contínuo de preços&lt;/li&gt;
&lt;li&gt;Análise de concorrência&lt;/li&gt;
&lt;li&gt;Coleta de leads&lt;/li&gt;
&lt;li&gt;Atualização automática de catálogos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Processo de Implementação:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Definição de fonte de dados&lt;/li&gt;
&lt;li&gt;Configuração de seletores&lt;/li&gt;
&lt;li&gt;Agendamento de coletas&lt;/li&gt;
&lt;li&gt;Processamento e limpeza&lt;/li&gt;
&lt;li&gt;Armazenamento estruturado&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;4. Otimização de Workload Units no Bubble&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;É possível criar automações e integrações no n8n que ajudam a melhorar a eficiência operacional em plataformas como o Bubble. Alguns exemplos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Processar dados de maneira mais eficiente antes de enviá-los para o Bubble.&lt;/li&gt;
&lt;li&gt;Automatizar a atualização de dados e a execução de processos fora do Bubble, reduzindo a necessidade de utilização de WUs no Bubble.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essas estratégias podem ajudar a alcançar uma maior estabilidade, reduzir custos operacionais e melhorar a performance geral, mas a redução exata de WUs dependerá de como você configura e otimiza suas automações. Estudos de caso mostram reduções de até 95% no consumo de recursos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;De 10 WU para 0,5 WU em processamentos complexos&lt;/li&gt;
&lt;li&gt;Maior estabilidade em picos de demanda&lt;/li&gt;
&lt;li&gt;Custos operacionais reduzidos&lt;/li&gt;
&lt;li&gt;Melhor performance geral&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Integração com Bancos de Dados&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
O n8n suporta praticamente todos os principais bancos de dados:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SQL:&lt;/strong&gt; PostgreSQL, MySQL, SQL Server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NoSQL:&lt;/strong&gt; MongoDB, CouchDB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Serviços em nuvem:&lt;/strong&gt; AWS, Google Cloud&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low-code:&lt;/strong&gt; Airtable, NocoDB&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. Facilitação de Integrações Externas&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Redução significativa no tempo de desenvolvimento:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;De semanas para horas em integrações complexas&lt;/li&gt;
&lt;li&gt;Eliminação de código boilerplate&lt;/li&gt;
&lt;li&gt;Manutenção simplificada&lt;/li&gt;
&lt;li&gt;Maior confiabilidade&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Impacto nos Negócios
&lt;/h4&gt;

&lt;p&gt;De acordo com um estudo da &lt;a href="https://www.prnewswire.com/news-releases/deloitte-global-intelligent-automation-study-reveals-dramatic-acceleration-in-adoption-of-automation-technologies-301182581.html" rel="noopener noreferrer"&gt;Deloitte&lt;/a&gt;, empresas que implementam automações inteligentes reportam:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redução de 40% em custos operacionais&lt;/li&gt;
&lt;li&gt;Aumento de 35% na produtividade&lt;/li&gt;
&lt;li&gt;Melhoria de 60% na satisfação do cliente&lt;/li&gt;
&lt;li&gt;ROI médio de 200% em 12 meses&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  O Futuro das Automações
&lt;/h4&gt;

&lt;p&gt;A tendência é que as automações se tornem cada vez mais sofisticadas e acessíveis. O n8n se posiciona como uma ferramenta fundamental nessa transformação, oferecendo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Democratização da automação&lt;/li&gt;
&lt;li&gt;Redução da complexidade técnica&lt;/li&gt;
&lt;li&gt;Escalabilidade empresarial&lt;/li&gt;
&lt;li&gt;Integração com tecnologias emergentes&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Considerações Finais
&lt;/h4&gt;

&lt;p&gt;O n8n não é apenas uma ferramenta de automação, mas um catalisador de transformação digital. Em um mundo onde a eficiência operacional é crucial, automatizar processos deixou de ser opcional. As empresas que adotarem essas tecnologias hoje estarão melhor posicionadas para os desafios do amanhã.&lt;/p&gt;

&lt;p&gt;A combinação de facilidade de uso, flexibilidade e poder de processamento faz do n8n uma escolha estratégica para empresas de todos os tamanhos que buscam modernizar suas operações e manter-se competitivas no mercado atual.&lt;/p&gt;

</description>
      <category>n8n</category>
      <category>automation</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Integrating DeepSeek into n8n: Low-Cost AI Automations</title>
      <dc:creator>Douglas Toledo</dc:creator>
      <pubDate>Sun, 02 Feb 2025 05:37:14 +0000</pubDate>
      <link>https://dev.to/dwtoledo/integrating-deepseek-into-n8n-low-cost-ai-automations-11ge</link>
      <guid>https://dev.to/dwtoledo/integrating-deepseek-into-n8n-low-cost-ai-automations-11ge</guid>
      <description>&lt;p&gt;&lt;strong&gt;Upgrade your automations with AI without spending much&lt;/strong&gt;, integrate DeepSeek with n8n in your solution!&lt;/p&gt;




&lt;h2&gt;
  
  
  What is n8n?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;n8n&lt;/strong&gt; is a low-code/no-code automation platform that lets you connect apps, services, and APIs in a visual way. With it, you can create complex workflows without coding, integrating tools like WhatsApp, Google Sheets, and AI models. It's like a digital LEGO® for automations, offering flexibility and scalability.&lt;/p&gt;




&lt;h2&gt;
  
  
  Meet DeepSeek
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;DeepSeek is an open-source AI model&lt;/strong&gt; that stands out for offering performance comparable to GPT-4 and Claude 3.5 Sonnet, but at significantly lower costs.&lt;/p&gt;

&lt;h3&gt;
  
  
  DeepSeek Models:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek V3 (Chat):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Focus: Simple tasks like chatbots and virtual assistants.&lt;/li&gt;
&lt;li&gt;Performance: Quick responses, ideal for agile interactions.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;DeepSeek R1 (Reasoning):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Focus: Complex tasks requiring advanced reasoning.&lt;/li&gt;
&lt;li&gt;Performance: More elaborate responses but with longer response times (up to 50 seconds).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Price Comparison
&lt;/h2&gt;

&lt;p&gt;To better understand the &lt;strong&gt;cost-benefit of DeepSeek&lt;/strong&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  Comparison table (per million tokens):
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Input Tokens&lt;/th&gt;
&lt;th&gt;Output Tokens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V3 (Chat)&lt;/td&gt;
&lt;td&gt;$0.01&lt;/td&gt;
&lt;td&gt;$0.28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek R1 (Reasoning)&lt;/td&gt;
&lt;td&gt;$0.14&lt;/td&gt;
&lt;td&gt;$2.19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI GPT-4&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude 3.5 Sonnet&lt;/td&gt;
&lt;td&gt;$3.00&lt;/td&gt;
&lt;td&gt;$15.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The above values are approximate and based on information available until &lt;strong&gt;February 1, 2025&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  How to Integrate DeepSeek with n8n?
&lt;/h2&gt;

&lt;p&gt;First, you'll need to have n8n installed; follow the &lt;a href="https://docs.n8n.io/hosting/installation/npm/" rel="noopener noreferrer"&gt;official documentation&lt;/a&gt; for installation.&lt;/p&gt;




&lt;h3&gt;
  
  
  Integration Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install the n8n-nodes-deepseek Node:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;In n8n, go to &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Community Nodes&lt;/strong&gt; &amp;gt; &lt;strong&gt;Install a community node&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In npm Package Name, type &lt;strong&gt;"n8n-nodes-deepseek"&lt;/strong&gt;, select the &lt;strong&gt;checkbox&lt;/strong&gt; "I understand the risks of installing unverified code from a public source" and &lt;strong&gt;click the "Install" button&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&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%2Fxq4rcp0vnv3q60mmwxqg.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%2Fxq4rcp0vnv3q60mmwxqg.png" alt="Image demonstrating how to install deepseek node" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create the Credentials:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an account on the DeepSeek website and go to the &lt;a href="https://platform.deepseek.com" rel="noopener noreferrer"&gt;dashboard&lt;/a&gt; of your account.&lt;/li&gt;
&lt;li&gt;Add a balance (minimum of US$ 2) and &lt;strong&gt;generate your &lt;a href="https://platform.deepseek.com/api_keys" rel="noopener noreferrer"&gt;API Key&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Keep your API Key in a safe place.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure the Credentials:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create a workflow&lt;/strong&gt; by clicking "New Workflow" on the Overview tab;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&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%2Friwl135sfd178zjs237t.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%2Friwl135sfd178zjs237t.png" alt="Image demonstrating how to create a new workflow" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on "Add first step" in the center of the workflow and &lt;strong&gt;add a Trigger manually&lt;/strong&gt; to start the flow;&lt;/li&gt;
&lt;/ul&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%2Fkddr6nukkw7setj99dlt.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%2Fkddr6nukkw7setj99dlt.png" alt="Image demonstrating how to start the workflow" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click the "+" to &lt;strong&gt;add a service to the flow&lt;/strong&gt; and &lt;strong&gt;type "deepseek"&lt;/strong&gt; in the search and click on the node we installed;&lt;/li&gt;
&lt;/ul&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%2Fw1mqevhfmnjtmc4dutaw.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%2Fw1mqevhfmnjtmc4dutaw.png" alt="Image demonstrating how to add the installed node in the workflow" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Click on "Create chat completion"&lt;/strong&gt; to open the configuration screen;&lt;/li&gt;
&lt;/ul&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%2Fx5tytbhoyqop1mg563rc.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%2Fx5tytbhoyqop1mg563rc.png" alt="Image demonstrating the node settings" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Select Credential input, click the arrow to open the menu and &lt;strong&gt;click + Create a new credential&lt;/strong&gt;;&lt;/li&gt;
&lt;/ul&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%2F3hxibbmt9b9f831yj0pc.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%2F3hxibbmt9b9f831yj0pc.png" alt="Image demonstrating how to create a new credential" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Paste your API Key&lt;/strong&gt; and click the &lt;strong&gt;"Save" button&lt;/strong&gt;;&lt;/li&gt;
&lt;/ul&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%2Fdfiz8jotp6pd3v2i6dmg.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%2Fdfiz8jotp6pd3v2i6dmg.png" alt="Image demonstrating the credential settings" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Configure the desired model&lt;/strong&gt; (V3 or R1) in "Model" and &lt;strong&gt;set the messages&lt;/strong&gt; in "Prompt":

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;System Message:&lt;/strong&gt; type: "You are a helpful assistant";&lt;/li&gt;
&lt;li&gt;Click "Add Message";&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Message:&lt;/strong&gt; type: "Who are you?".&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&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%2Fq3fg6baqzc7tqm8eq2d3.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%2Fq3fg6baqzc7tqm8eq2d3.png" alt="Image demonstrating how to select the model and add test prompt messages" width="800" height="687"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Test the call:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Click the "Test step" button&lt;/strong&gt;, it will process and respond to the test request.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&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%2F64mcgoyi7cv1gyyegbx0.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%2F64mcgoyi7cv1gyyegbx0.png" alt="Image demonstrating the results" width="800" height="687"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Note: The V3 will provide a quick return, the R1 is ideal for detailed responses, but the processing time may not be suitable for real-time applications.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You did it, congratulations!&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Was it difficult? Leave a comment below.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  When to Use Each Model?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;DeepSeek V3:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ideal for: Chatbots, quick responses, and real-time interactions.&lt;/li&gt;
&lt;li&gt;Advantages: Low cost and high speed.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;DeepSeek R1:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ideal for: Tasks requiring complex reasoning and detailed responses.&lt;/li&gt;
&lt;li&gt;Advantages: In-depth analysis, though with longer response times.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Integrating DeepSeek with n8n is an &lt;strong&gt;effective and economical&lt;/strong&gt; way to implement AI in your automations. With &lt;strong&gt;significantly lower costs&lt;/strong&gt; compared to other models, you can expand your projects without breaking the bank.&lt;/p&gt;




&lt;h2&gt;
  
  
  Useful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://deepseek.com/docs" rel="noopener noreferrer"&gt;DeepSeek Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://n8n.io/integrations" rel="noopener noreferrer"&gt;n8n Nodes Repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>deepseek</category>
      <category>n8n</category>
      <category>ai</category>
      <category>automation</category>
    </item>
    <item>
      <title>Integrando o DeepSeek no n8n: Automações com IA de Baixo Custo</title>
      <dc:creator>Douglas Toledo</dc:creator>
      <pubDate>Sun, 02 Feb 2025 05:23:31 +0000</pubDate>
      <link>https://dev.to/dwtoledo/integrando-o-deepseek-no-n8n-automacoes-com-ia-de-baixo-custo-3317</link>
      <guid>https://dev.to/dwtoledo/integrando-o-deepseek-no-n8n-automacoes-com-ia-de-baixo-custo-3317</guid>
      <description>&lt;p&gt;&lt;strong&gt;Dê um upgrade nas suas automações com IA sem gastar muito&lt;/strong&gt;, integre o DeepSeek ao n8n na sua solução!&lt;/p&gt;




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

&lt;p&gt;O &lt;strong&gt;n8n&lt;/strong&gt; é uma plataforma de automação &lt;em&gt;low-code/no-code&lt;/em&gt; que permite você conectar aplicativos, serviços e APIs de uma forma visual. Com ele, você cria fluxos de trabalho complexos sem programar, integrando ferramentas como WhatsApp, Google Sheets e modelos de IA. É como um "&lt;em&gt;LEGO®&lt;/em&gt; digital" para automações, oferecendo flexibilidade e escalabilidade.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conheça o DeepSeek
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;DeepSeek é um modelo de AI &lt;em&gt;open-source&lt;/em&gt;&lt;/strong&gt; que se destaca por oferecer desempenho comparável ao GPT-4, o1 e Claude 3.5 Sonnet, mas com custos significativamente menores.&lt;/p&gt;

&lt;h3&gt;
  
  
  Modelos do DeepSeek:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek V3 (Chat):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Foco: Tarefas simples como chatbots e assistentes virtuais.&lt;/li&gt;
&lt;li&gt;Desempenho: Respostas rápidas, ideal para interações ágeis.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;DeepSeek R1 (Reasoning):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Foco: Tarefas complexas que exigem raciocínio avançado.&lt;/li&gt;
&lt;li&gt;Desempenho: Respostas mais elaboradas, porém com tempo de resposta maior (até 50 segundos).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Comparativo de Preços com OpenAI e Claude 3.5 Sonnet
&lt;/h2&gt;

&lt;p&gt;Para entender melhor o &lt;strong&gt;custo-benefício do DeepSeek&lt;/strong&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  Tabela de Comparação de Preços (por milhão de tokens):
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Modelo&lt;/th&gt;
&lt;th&gt;Tokens de Entrada&lt;/th&gt;
&lt;th&gt;Tokens de Saída&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V3 (Chat)&lt;/td&gt;
&lt;td&gt;US$ 0,01&lt;/td&gt;
&lt;td&gt;US$ 0,28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek R1 (Reasoning)&lt;/td&gt;
&lt;td&gt;US$ 0,14&lt;/td&gt;
&lt;td&gt;US$ 2,19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI GPT-4&lt;/td&gt;
&lt;td&gt;US$ 2,50&lt;/td&gt;
&lt;td&gt;US$ 10,00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude 3.5 Sonnet&lt;/td&gt;
&lt;td&gt;US$ 3,00&lt;/td&gt;
&lt;td&gt;US$ 15,00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Os valores acima são aproximados e baseados em informações disponíveis até &lt;strong&gt;01 de fevereiro de 2025&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Como Integrar o DeepSeek ao n8n?
&lt;/h2&gt;

&lt;p&gt;Primeiramente você vai precisar ter instalado o n8n, siga a &lt;a href="https://docs.n8n.io/hosting/installation/npm/" rel="noopener noreferrer"&gt;documentação oficial&lt;/a&gt; para realizar a instalação.&lt;/p&gt;




&lt;h3&gt;
  
  
  Passo a passo da integração:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Instale o Node n8n-nodes-deepseek:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;No n8n, acesse &lt;strong&gt;&lt;em&gt;Settings&lt;/em&gt;&lt;/strong&gt; &amp;gt; &lt;strong&gt;&lt;em&gt;Community Nodes&lt;/em&gt;&lt;/strong&gt; &amp;gt; &lt;strong&gt;&lt;em&gt;Install a community node&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Em &lt;em&gt;npm Package Name&lt;/em&gt; digite &lt;strong&gt;&lt;em&gt;"n8n-nodes-deepseek"&lt;/em&gt;&lt;/strong&gt;, selecione o &lt;strong&gt;&lt;em&gt;checkbox&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;I understand the risks of installing unverified code from a public source&lt;/em&gt; e &lt;strong&gt;clique no botão &lt;em&gt;Install&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&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%2Fxq4rcp0vnv3q60mmwxqg.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%2Fxq4rcp0vnv3q60mmwxqg.png" alt="Imagem mostrando o passo 1" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Crie as Credenciais:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Crie uma conta no site do DeepSeek e vá no &lt;em&gt;&lt;a href="https://platform.deepseek.com" rel="noopener noreferrer"&gt;dashboard&lt;/a&gt;&lt;/em&gt; da sua conta.&lt;/li&gt;
&lt;li&gt;Adicione um saldo (mínimo de &lt;em&gt;US$ 2&lt;/em&gt;) e &lt;strong&gt;gere sua &lt;em&gt;&lt;a href="https://platform.deepseek.com/api_keys" rel="noopener noreferrer"&gt;API Key&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Guarde a sua API Key em um local seguro.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configurar as Credenciais:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Crie um &lt;em&gt;workflow&lt;/em&gt;&lt;/strong&gt; clicando em &lt;em&gt;New Workflow&lt;/em&gt; na aba &lt;em&gt;Overview&lt;/em&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&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%2Friwl135sfd178zjs237t.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%2Friwl135sfd178zjs237t.png" alt="Imagem mostrando criação do workflow" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clique em &lt;em&gt;Add first step&lt;/em&gt; no centro do workflow e &lt;strong&gt;adicione um &lt;em&gt;Trigger manually&lt;/em&gt;&lt;/strong&gt; para iniciar o fluxo;&lt;/li&gt;
&lt;/ul&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%2Fkddr6nukkw7setj99dlt.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%2Fkddr6nukkw7setj99dlt.png" alt="Imagem mostrando o trigger manually sendo criado" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clique no &lt;em&gt;+&lt;/em&gt; para &lt;strong&gt;adicionar um serviço ao fluxo&lt;/strong&gt; e &lt;strong&gt;digite &lt;em&gt;"deepseek"&lt;/em&gt;&lt;/strong&gt; na pesquisa e clique no node que instalamos;&lt;/li&gt;
&lt;/ul&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%2Fw1mqevhfmnjtmc4dutaw.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%2Fw1mqevhfmnjtmc4dutaw.png" alt="Imagem mostrando a adição do node deepseek" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clique em &lt;em&gt;Create chat completion&lt;/em&gt;&lt;/strong&gt; para abrir a tela de configuração;&lt;/li&gt;
&lt;/ul&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%2Fx5tytbhoyqop1mg563rc.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%2Fx5tytbhoyqop1mg563rc.png" alt="Imagem mostrando a tela de configuração do node deepseek" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Em &lt;em&gt;Select Credential&lt;/em&gt;, clique na seta para abrir o menu e &lt;strong&gt;clique em &lt;em&gt;+ Create a new credential&lt;/em&gt;&lt;/strong&gt;;&lt;/li&gt;
&lt;/ul&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%2F3hxibbmt9b9f831yj0pc.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%2F3hxibbmt9b9f831yj0pc.png" alt="Imagem mostrando onde clicar para abrir a configuração da API Key" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cole a sua &lt;em&gt;API Key&lt;/em&gt;&lt;/strong&gt; e clique no botão &lt;strong&gt;&lt;em&gt;Save&lt;/em&gt;&lt;/strong&gt;;&lt;/li&gt;
&lt;/ul&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%2Fdfiz8jotp6pd3v2i6dmg.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%2Fdfiz8jotp6pd3v2i6dmg.png" alt="Imagem mostrando a configuração da API Key" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Configure o modelo&lt;/strong&gt; desejado (V3 ou R1) em &lt;em&gt;Model&lt;/em&gt; e &lt;strong&gt;defina as mensagens&lt;/strong&gt; no &lt;em&gt;Prompt&lt;/em&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;System Message:&lt;/strong&gt;&lt;/em&gt; digite: "Você é um assistente prestativo";&lt;/li&gt;
&lt;li&gt;Clique em &lt;em&gt;Add Message&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;User Message:&lt;/strong&gt;&lt;/em&gt; digite: "Quem é você?".&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&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%2Fq3fg6baqzc7tqm8eq2d3.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%2Fq3fg6baqzc7tqm8eq2d3.png" alt="Imagem mostrando a seleção de modelo e configuração de prompt para teste" width="800" height="687"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Teste a chamada:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clique no botão &lt;em&gt;Test step&lt;/em&gt;&lt;/strong&gt;, ele irá processar e responder a requisição de teste.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&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%2F64mcgoyi7cv1gyyegbx0.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%2F64mcgoyi7cv1gyyegbx0.png" alt="Imagem mostrando o resultado do teste" width="800" height="687"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Observações: O V3 fornecerá retorno rápido, o R1 é ideal para respostas detalhadas, mas o tempo de processamento pode não ser adequado para aplicações em tempo real.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Você conseguiu, parabéns!&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Foi difícil? Comenta aqui nos comentários.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Quando Usar Cada Modelo?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;DeepSeek V3:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ideal para: Chatbots, respostas rápidas e interações em tempo real.&lt;/li&gt;
&lt;li&gt;Vantagens: Baixo custo e alta velocidade.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;DeepSeek R1:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ideal para: Tarefas que exigem raciocínio complexo e respostas detalhadas.&lt;/li&gt;
&lt;li&gt;Vantagens: Análises aprofundadas, embora com tempo de resposta maior.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




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

&lt;p&gt;Integrar o DeepSeek ao n8n é uma maneira &lt;strong&gt;eficaz e econômica&lt;/strong&gt; de implementar IA nas suas automações. Com &lt;strong&gt;custos significativamente menores&lt;/strong&gt; que outros modelos, você pode expandir seus projetos sem sacrificar o orçamento.&lt;/p&gt;




&lt;h2&gt;
  
  
  Recursos Úteis
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://deepseek.com/docs" rel="noopener noreferrer"&gt;Documentação do DeepSeek&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://n8n.io/integrations" rel="noopener noreferrer"&gt;Repositório de Nodes do n8n&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>deepseek</category>
      <category>ai</category>
      <category>n8n</category>
      <category>automation</category>
    </item>
    <item>
      <title>How to Use DeepSeek R1 for Free in Visual Studio Code with Cline or Roo Code</title>
      <dc:creator>Douglas Toledo</dc:creator>
      <pubDate>Fri, 24 Jan 2025 19:45:29 +0000</pubDate>
      <link>https://dev.to/dwtoledo/how-to-use-deepseek-r1-for-free-in-visual-studio-code-with-cline-or-roo-code-3an9</link>
      <guid>https://dev.to/dwtoledo/how-to-use-deepseek-r1-for-free-in-visual-studio-code-with-cline-or-roo-code-3an9</guid>
      <description>&lt;p&gt;If you're looking for an AI that excels in reasoning and is also free because it's &lt;em&gt;open source&lt;/em&gt;, the newly launched &lt;strong&gt;DeepSeek R1&lt;/strong&gt; is a great choice. It competes with and outperforms models like GPT-4, o1-mini, Claude 3.5, among others. I tested it and have nothing but praise!&lt;/p&gt;

&lt;p&gt;If you want to run it directly in your &lt;strong&gt;Visual Studio Code&lt;/strong&gt; as a &lt;em&gt;code agent&lt;/em&gt; similar to GitHub Copilot, without spending a dime, come along as I show you how to do this using tools like &lt;strong&gt;LM Studio&lt;/strong&gt;, &lt;strong&gt;Ollama&lt;/strong&gt;, and &lt;strong&gt;Jan&lt;/strong&gt;.  &lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Why is DeepSeek R1 so talked about these days?&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It's free and &lt;em&gt;open source&lt;/em&gt;&lt;/strong&gt;: Unlike many models that charge a fortune, you can use it without paying anything. It's even available for chat at &lt;a href="https://chat.deepseek.com" rel="noopener noreferrer"&gt;https://chat.deepseek.com&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;: It competes with and outperforms other models in tasks involving logic, mathematics, and even code generation (which is my favorite part).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multiple versions&lt;/strong&gt;: To run it locally (LLM), there are models ranging from 1.5B to 70B parameters, so you can choose what works best on your PC depending on your hardware.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Easy to integrate&lt;/strong&gt;: You can connect it to VSCode using extensions like &lt;strong&gt;Cline&lt;/strong&gt; or &lt;strong&gt;Roo Code&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No costs&lt;/strong&gt;: If you run it locally, you don't pay for tokens or APIs. A graphics card is recommended, as running it solely on the CPU is slower.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Important Tips Before You Start&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Save resources&lt;/strong&gt;: If your PC isn't very powerful, stick with the smaller models (1.5B or 7B parameters) or quantized versions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;RAM Calculator&lt;/strong&gt;: Use &lt;a href="https://llm-calc.rayfernando.ai/?quant=fp16" rel="noopener noreferrer"&gt;LLM Calc&lt;/a&gt; to find out the minimum RAM you'll need.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Privacy&lt;/strong&gt;: Running it locally means your data stays on your PC and doesn't go to external servers.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No costs&lt;/strong&gt;: Running it locally is free, but if you want to use the DeepSeek API, you'll need to pay for tokens. The good news is that their price is much lower than competitors.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Which Model to Choose? It Depends on Your PC!&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;DeepSeek R1 has several versions, and the choice depends on your hardware:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;1.5B Parameters&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RAM required&lt;/strong&gt;: ~4 GB.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU&lt;/strong&gt;: Integrated (like NVIDIA GTX 1050) or a modern CPU.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What for?&lt;/strong&gt;: Simple tasks and modest PCs.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;7B Parameters&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RAM required&lt;/strong&gt;: ~8-10 GB.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU&lt;/strong&gt;: Dedicated (like NVIDIA GTX 1660 or better).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What for?&lt;/strong&gt;: Intermediate tasks and PCs with better hardware.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;70B Parameters&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RAM required&lt;/strong&gt;: ~40 GB.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU&lt;/strong&gt;: High-end (like NVIDIA RTX 3090 or higher).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What for?&lt;/strong&gt;: Complex tasks and super powerful PCs.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;How to Run DeepSeek R1 Locally&lt;/strong&gt;
&lt;/h3&gt;




&lt;h4&gt;
  
  
  &lt;strong&gt;1. Using LM Studio&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Download and install LM Studio&lt;/strong&gt;: Just go to the &lt;a href="https://lmstudio.ai/" rel="noopener noreferrer"&gt;LM Studio&lt;/a&gt; website and download the version for your system.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Download the DeepSeek R1 model&lt;/strong&gt;: In LM Studio, go to the &lt;strong&gt;Discover&lt;/strong&gt; tab, search for "DeepSeek R1," and select the version most compatible with your system. If you're using a MacBook with Apple processors, keep the &lt;strong&gt;MLX&lt;/strong&gt; option selected next to the search bar (these versions are optimized for Apple hardware). For Windows or Linux, choose the &lt;strong&gt;GGUF&lt;/strong&gt; option.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Load the model&lt;/strong&gt;: After downloading, go to &lt;strong&gt;Local Models&lt;/strong&gt;, select DeepSeek R1, and click &lt;strong&gt;Load&lt;/strong&gt;.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start the local server&lt;/strong&gt;: In the &lt;strong&gt;Developer&lt;/strong&gt; tab, enable &lt;strong&gt;Start Server&lt;/strong&gt;. It will start running the model at &lt;code&gt;http://localhost:1234&lt;/code&gt;.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Proceed to step 4 &lt;strong&gt;Integrating with VSCode&lt;/strong&gt;!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  &lt;strong&gt;2. Using Ollama&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Install Ollama&lt;/strong&gt;: Download it from the &lt;a href="https://ollama.ai/" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; website and install it.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Download the model&lt;/strong&gt;: In the terminal, run*:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   ollama pull deepseek-r1  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;*This is the main model; if you want smaller models, go to &lt;a href="https://ollama.com/library/deepseek-r1" rel="noopener noreferrer"&gt;https://ollama.com/library/deepseek-r1&lt;/a&gt; and see which command to run in the terminal.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start the server&lt;/strong&gt;: In the terminal, execute:
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;



&lt;p&gt;The command will start running the model at &lt;code&gt;http://localhost:11434&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Proceed to step 4 &lt;strong&gt;Integrating with VSCode&lt;/strong&gt;!&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  &lt;strong&gt;3. Using Jan&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Download and install Jan&lt;/strong&gt;: Choose the version for your system on the &lt;a href="https://jan.ai/" rel="noopener noreferrer"&gt;Jan&lt;/a&gt; website.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Download the model&lt;/strong&gt;: I couldn't find DeepSeek R1 directly in Jan. So, I went to the &lt;a href="https://huggingface.co/models?sort=trending&amp;amp;search=unsloth+gguf+deepseek+r1" rel="noopener noreferrer"&gt;Hugging Face&lt;/a&gt; website and manually searched for "unsloth gguf deepseek r1." I found the desired version, clicked the "Use this model" button, and selected Jan as the option. The model automatically opened in Jan, and I then downloaded it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Load the model&lt;/strong&gt;: After downloading, select the model and click &lt;strong&gt;Load&lt;/strong&gt;.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start the server&lt;/strong&gt;: Jan automatically starts the server, usually at &lt;code&gt;http://localhost:1337&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Proceed to step 4 &lt;strong&gt;Integrating with VSCode&lt;/strong&gt;!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  &lt;strong&gt;4. Integrating with VSCode&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Install the extension&lt;/strong&gt;: In VSCode, open the Extensions tab and install Cline or Roo Code. &lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure the extension for Jan or LM Studio&lt;/strong&gt;: The configuration for both &lt;strong&gt;Cline&lt;/strong&gt; and &lt;strong&gt;Roo Code&lt;/strong&gt; is practically identical. Follow the steps below:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on the extension and access &lt;strong&gt;"Settings"&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;API Provider&lt;/strong&gt;, select &lt;strong&gt;"LM Studio"&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;In the &lt;strong&gt;Base URL&lt;/strong&gt; field, enter the URL configured in Jan or LM Studio.
&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Model ID&lt;/strong&gt; field will be automatically filled if you only have one model available. Otherwise, manually select the &lt;strong&gt;DeepSeek&lt;/strong&gt; model you downloaded.
&lt;/li&gt;
&lt;li&gt;Finish by clicking &lt;strong&gt;"Done"&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure the extension for Ollama&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on the extension and access &lt;strong&gt;"Settings"&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;API Provider&lt;/strong&gt;, select &lt;strong&gt;"Ollama"&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;In the &lt;strong&gt;Base URL&lt;/strong&gt; field, enter the URL configured in Ollama.
&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Model ID&lt;/strong&gt; field will be automatically filled if you only have one model available. Otherwise, manually select the &lt;strong&gt;DeepSeek&lt;/strong&gt; model you downloaded.
&lt;/li&gt;
&lt;li&gt;Finish by clicking &lt;strong&gt;"Done"&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Integration complete, now just enjoy the functionalities of Cline or Roo Code.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;DeepSeek R1 is a lifesaver for those who want a powerful AI without spending anything. With &lt;strong&gt;LM Studio&lt;/strong&gt;, &lt;strong&gt;Ollama&lt;/strong&gt;, or &lt;strong&gt;Jan&lt;/strong&gt;, you can run it locally and integrate it directly into &lt;strong&gt;Visual Studio Code&lt;/strong&gt;. Choose the model that fits your PC and start using it today!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>vscode</category>
      <category>coding</category>
      <category>deepseekr1</category>
    </item>
    <item>
      <title>Como Usar o DeepSeek R1 de Graça no Visual Studio Code com Cline ou Roo Code</title>
      <dc:creator>Douglas Toledo</dc:creator>
      <pubDate>Fri, 24 Jan 2025 19:42:00 +0000</pubDate>
      <link>https://dev.to/dwtoledo/como-usar-o-deepseek-r1-de-graca-no-visual-studio-code-com-cline-ou-roo-code-3pi9</link>
      <guid>https://dev.to/dwtoledo/como-usar-o-deepseek-r1-de-graca-no-visual-studio-code-com-cline-ou-roo-code-3pi9</guid>
      <description>&lt;p&gt;Se você está procurando uma IA que seja boa de raciocínio e ainda por cima de graça, pois é &lt;em&gt;open source&lt;/em&gt;, o recém lançado &lt;strong&gt;DeepSeek R1&lt;/strong&gt; é uma ótima pedida. Ele compete e ganha de modelos como o GPT-4, o1-mini, Claude 3.5, ente outros. Eu testei e só tenho elogios! &lt;/p&gt;

&lt;p&gt;Se você quer rodar ele direto no seu &lt;strong&gt;Visual Studio Code&lt;/strong&gt;, como um &lt;em&gt;code agent&lt;/em&gt; similar ao GitHub Copilot, sem gastar nada, vem que eu te mostro como fazer isso usando ferramentas como &lt;strong&gt;LM Studio&lt;/strong&gt;, &lt;strong&gt;Ollama&lt;/strong&gt; e &lt;strong&gt;Jan&lt;/strong&gt;.  &lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Por que o DeepSeek R1 está tão falado nos últimos dias?&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;É de graça e &lt;em&gt;open source&lt;/em&gt;&lt;/strong&gt;: Diferente de muitos modelos que cobram uma fortuna, você pode usar ele sem pagar nada. Inclusive ele está disponível para chat em &lt;a href="https://chat.deepseek.com" rel="noopener noreferrer"&gt;https://chat.deepseek.com&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Desempenho&lt;/strong&gt;: Ele compete e ganha de outros modelos em tarefas de lógica, matemática e até geração de código (que é a minha parte preferida).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Várias versões&lt;/strong&gt;: Para rodá-lo localmente (LLM) há modelos de 1.5B a 70B parâmetros, então você escolhe o que roda melhor no seu PC dependendo do hardware.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fácil de integrar&lt;/strong&gt;: É possível conectá-lo ao VSCode com extensões como &lt;strong&gt;Cline&lt;/strong&gt; ou &lt;strong&gt;Roo Code&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sem custos&lt;/strong&gt;: Se você rodar localmente, você não paga por tokens ou APIs. Uma placa de vídeo é recomendada, pois rodando só pelo processador é mais lento.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Dicas Importantes antes de começar&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Economize recursos&lt;/strong&gt;: Se seu PC não é tão forte, fique com os modelos menores (1.5B ou 7B parâmetros) ou quantizados.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Calculadora de RAM&lt;/strong&gt;: Use o &lt;a href="https://llm-calc.rayfernando.ai/?quant=fp16" rel="noopener noreferrer"&gt;LLM Calc&lt;/a&gt; pra saber o mínimo de memória RAM você precisará.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Privacidade&lt;/strong&gt;: Rodando localmente, seus dados ficam só no seu PC, sem ir pra servidores externos.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sem custos&lt;/strong&gt;: Rodar localmente é de graça, mas se você quiser usar a API da DeepSeek, vai precisar pelo uso de tokens, a boa notícia é que o preço deles está muuuuito abaixo dos concorrentes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Qual Modelo Escolher? Depende do Seu PC!&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;O DeepSeek R1 tem várias versões, e a escolha depende do seu hardware:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;1.5B Parâmetros&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RAM necessária&lt;/strong&gt;: ~4 GB.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU&lt;/strong&gt;: Integrada (tipo NVIDIA GTX 1050) ou uma CPU moderna.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pra quê?&lt;/strong&gt;: Tarefas simples e PCs mais modestos.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;7B Parâmetros&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RAM necessária&lt;/strong&gt;: ~8-10 GB.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU&lt;/strong&gt;: Dedicada (tipo NVIDIA GTX 1660 ou melhor).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pra quê?&lt;/strong&gt;: Tarefas intermediárias e PCs com um hardware melhor.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;70B Parâmetros&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RAM necessária&lt;/strong&gt;: ~40 GB.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU&lt;/strong&gt;: High-end (tipo NVIDIA RTX 3090 ou superior).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pra quê?&lt;/strong&gt;: Tarefas complexas e PCs super potentes.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Como Rodar o DeepSeek R1 Localmente&lt;/strong&gt;
&lt;/h3&gt;




&lt;h4&gt;
  
  
  &lt;strong&gt;1. Usando o LM Studio&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Baixe e instale o LM Studio&lt;/strong&gt;: É só entrar no site do &lt;a href="https://lmstudio.ai/" rel="noopener noreferrer"&gt;LM Studio&lt;/a&gt; e baixar a versão pro seu sistema.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Baixe o modelo DeepSeek R1&lt;/strong&gt;: No LM Studio, acesse a aba &lt;strong&gt;Discover&lt;/strong&gt;, pesquise por "DeepSeek R1" e selecione a versão mais compatível com seu sistema. Se estiver usando um MacBook com processadores Apple, mantenha a opção &lt;strong&gt;MLX&lt;/strong&gt; selecionada ao lado da barra de pesquisa (essas versões são otimizadas para o hardware da Apple). Para Windows ou Linux, escolha a opção &lt;strong&gt;GGUF&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Carregue o modelo&lt;/strong&gt;: Depois de baixar, vá em &lt;strong&gt;Local Models&lt;/strong&gt;, selecione o DeepSeek R1 e clique em &lt;strong&gt;Load&lt;/strong&gt;.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Inicie o servidor local&lt;/strong&gt;: Na aba &lt;strong&gt;Developer&lt;/strong&gt;, habilite &lt;strong&gt;Start Server&lt;/strong&gt;. Ele vai começar a rodar o modelo no &lt;code&gt;http://localhost:1234&lt;/code&gt;.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Siga para a etapa 4 &lt;strong&gt;Integrando com o VSCode&lt;/strong&gt;!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  &lt;strong&gt;2. Usando o Ollama&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Instale o Ollama&lt;/strong&gt;: Baixe no site do &lt;a href="https://ollama.ai/" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; e instale.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Baixe o modelo&lt;/strong&gt;: No terminal, rode*:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   ollama pull deepseek-r1  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;*Esse é o modelo principal, se quiser modelos menores, vá em &lt;a href="https://ollama.com/library/deepseek-r1" rel="noopener noreferrer"&gt;https://ollama.com/library/deepseek-r1&lt;/a&gt; e veja qual comando executar no terminal.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Inicie o servidor&lt;/strong&gt;: No terminal, execute:
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;



&lt;p&gt;O comando vai começar a roda o modelo em &lt;code&gt;http://localhost:11434&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Siga para a etapa 4 &lt;strong&gt;Integrando com o VSCode&lt;/strong&gt;!&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  &lt;strong&gt;3. Usando o Jan&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Baixe e instale o Jan&lt;/strong&gt;: Escolha a versão para o seu sistema no site do &lt;a href="https://jan.ai/" rel="noopener noreferrer"&gt;Jan&lt;/a&gt;.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Baixe o modelo&lt;/strong&gt;: Não consegui encontrar o DeepSeek R1 diretamente no Jan. Por isso, acessei o site do &lt;a href="https://huggingface.co/models?sort=trending&amp;amp;search=unsloth+gguf+deepseek+r1" rel="noopener noreferrer"&gt;Hugging Face&lt;/a&gt; e pesquisei manualmente por "unsloth gguf deepseek r1". Encontrei a versão desejada, cliquei no botão "Use this model" e selecionei o Jan como opção. O modelo foi aberto automaticamente no Jan, e então realizei o download.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Carregue o modelo&lt;/strong&gt;: Depois de baixar, selecione o modelo e clique em &lt;strong&gt;Load&lt;/strong&gt;.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Inicie o servidor&lt;/strong&gt;: O Jan já inicia o servidor automaticamente, geralmente em &lt;code&gt;http://localhost:1337&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Siga para a etapa 4 &lt;strong&gt;Integrando com o VSCode&lt;/strong&gt;!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  &lt;strong&gt;4. Integrando com o VSCode&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Instale a extensão&lt;/strong&gt;: No VSCode abra a aba de Extensões e instale o Cline ou Roo Code. &lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure a extensão para Jan ou LM Studio&lt;/strong&gt;: Tanto a configuração do &lt;strong&gt;Cline&lt;/strong&gt; quanto do &lt;strong&gt;Roo Code&lt;/strong&gt; são praticamente idênticas. Siga os passos abaixo:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clique na extensão e acesse &lt;strong&gt;"Settings"&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Em &lt;strong&gt;API Provider&lt;/strong&gt;, selecione &lt;strong&gt;"LM Studio"&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;No campo &lt;strong&gt;Base URL&lt;/strong&gt;, insira a URL configurada no Jan ou no LM Studio.
&lt;/li&gt;
&lt;li&gt;O campo &lt;strong&gt;Model ID&lt;/strong&gt; será preenchido automaticamente se você tiver apenas um modelo disponível. Caso contrário, selecione manualmente o modelo &lt;strong&gt;DeepSeek&lt;/strong&gt; que você baixou.
&lt;/li&gt;
&lt;li&gt;Finalize clicando em &lt;strong&gt;"Done"&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure a extensão para Ollama&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clique na extensão e acesse &lt;strong&gt;"Settings"&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Em &lt;strong&gt;API Provider&lt;/strong&gt;, selecione &lt;strong&gt;"Ollama"&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;No campo &lt;strong&gt;Base URL&lt;/strong&gt;, insira a URL configurada no Ollama.
&lt;/li&gt;
&lt;li&gt;O campo &lt;strong&gt;Model ID&lt;/strong&gt; será preenchido automaticamente se você tiver apenas um modelo disponível. Caso contrário, selecione manualmente o modelo &lt;strong&gt;DeepSeek&lt;/strong&gt; que você baixou.
&lt;/li&gt;
&lt;li&gt;Finalize clicando em &lt;strong&gt;"Done"&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Integração concluída, agora é só desfrutar das funcionalidade do Cline ou do Roo Code.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;




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

&lt;p&gt;O DeepSeek R1 é uma mão na roda pra quem quer uma IA poderosa sem gastar nada. Com &lt;strong&gt;LM Studio&lt;/strong&gt;, &lt;strong&gt;Ollama&lt;/strong&gt; ou &lt;strong&gt;Jan&lt;/strong&gt;, você pode rodar ele localmente e integrar direto no &lt;strong&gt;Visual Studio Code&lt;/strong&gt;. Escolha o modelo que cabe no seu PC e comece a usar hoje mesmo!  &lt;/p&gt;

</description>
      <category>ai</category>
      <category>vscode</category>
      <category>deepseekr1</category>
      <category>coding</category>
    </item>
    <item>
      <title>Deploying a Vite app on GitHub Pages using GitHub Actions with GitHub Secrets</title>
      <dc:creator>Douglas Toledo</dc:creator>
      <pubDate>Wed, 22 Nov 2023 02:51:03 +0000</pubDate>
      <link>https://dev.to/dwtoledo/deploying-a-vite-app-on-github-pages-using-github-actions-with-github-secrets-1hn0</link>
      <guid>https://dev.to/dwtoledo/deploying-a-vite-app-on-github-pages-using-github-actions-with-github-secrets-1hn0</guid>
      <description>&lt;h3&gt;
  
  
  First of all --
&lt;/h3&gt;

&lt;p&gt;I'll assume that you already have a Vite React App created in a GitHub repository. In this article, I will use my portfolio as an example.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 --
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Set the correct base in vite.config.js file:
&lt;/h4&gt;

&lt;p&gt;Example: In my vite.config.js, I added my GitHub repository name (that is, "portfolio") as the base.&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%2F1vbtulhguqcnvhqtrhjo.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%2F1vbtulhguqcnvhqtrhjo.png" alt="Image description 1" width="584" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 --
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Create an .env file in your project root and add your secrets using the "VITE_" prefix:
&lt;/h4&gt;

&lt;p&gt;Example: If you need a secret "OPEN_AI_KEY", you should add the secret to the .env file as "VITE_OPEN_AI_KEY".&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%2Frlm7zswgc1ihexpzpquk.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%2Frlm7zswgc1ihexpzpquk.png" alt="Image description 2" width="584" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 --
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Add the secret to your code using "import.meta.env.":
&lt;/h4&gt;

&lt;p&gt;Example: If I need to add my "VITE_OPEN_AI_KEY" to my code, I'll add "import.meta.env.VITE_OPEN_AI_KEY" as in the example below:&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%2F8zgredakrw1a0dr0riaj.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%2F8zgredakrw1a0dr0riaj.png" alt="Image description 3" width="589" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 --
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Create a GitHub Actions Secret:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Access your GitHub project repository;&lt;/li&gt;
&lt;li&gt;Click "Settings" &amp;gt;&lt;/li&gt;
&lt;li&gt;Select "Actions" on "Secrets and variables" dropdown &amp;gt;&lt;/li&gt;
&lt;li&gt;Click "New repository secret".&lt;/li&gt;
&lt;/ul&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%2Fe2ghtkcj0k79uge24o7m.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%2Fe2ghtkcj0k79uge24o7m.png" alt="Image description 4" width="766" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Type the secret name &amp;gt;&lt;/li&gt;
&lt;li&gt;Type the secret value itself &amp;gt;&lt;/li&gt;
&lt;li&gt;Click "Add Secret".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In my case, the secret name is "VITE_OPEN_AI_KEY" and the value is "My OpenAI Key Value":&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%2F25mr8diouip7m29y2p0g.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%2F25mr8diouip7m29y2p0g.png" alt="Image description 5" width="766" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5 --
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Setup GitHub Pages:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Access your GitHub project repository;&lt;/li&gt;
&lt;li&gt;Click "Settings" &amp;gt;&lt;/li&gt;
&lt;li&gt;Click "Pages" on menu &amp;gt;&lt;/li&gt;
&lt;li&gt;Select GitHub Actions on Build and Deployment Source.&lt;/li&gt;
&lt;/ul&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%2Fl5fnbnv9gk92jsj7l50x.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%2Fl5fnbnv9gk92jsj7l50x.png" alt="Image description 6" width="766" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6 --
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Create your deploy.yml file on GitHub:
&lt;/h4&gt;

&lt;p&gt;⚠️ This file is important because it will trigger GitHub Actions to use GitHub Secrets, build, and deploy your project on GitHub Pages every time you commit a change to your repository.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access your GitHub project repository;&lt;/li&gt;
&lt;li&gt;Click "Pages" on menu &amp;gt;&lt;/li&gt;
&lt;li&gt;Click "create your own" link.&lt;/li&gt;
&lt;/ul&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%2Fkitbinqysk3zerji0dis.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%2Fkitbinqysk3zerji0dis.png" alt="Image description 7" width="766" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A page to create your own workflow will open. On this page...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name the new workflow as "deploy.yml".&lt;/li&gt;
&lt;li&gt;Remove all generic workflow content;&lt;/li&gt;
&lt;/ul&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%2F22q3nnwa2adeu4fih3ld.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%2F22q3nnwa2adeu4fih3ld.png" alt="Image description 8" width="766" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before proceeding, ensure your GitHub workflow is empty and named "deploy.yml":&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%2Fb6kya21g76iqfcjsqnpo.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%2Fb6kya21g76iqfcjsqnpo.png" alt="Image description 9" width="771" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open the "Deploying a Static Site" Vite Guide on &lt;a href="https://vitejs.dev/guide/static-deploy" rel="noopener noreferrer"&gt;https://vitejs.dev/guide/static-deploy&lt;/a&gt; and look for GitHub Pages session.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copy the workflow.&lt;/li&gt;
&lt;/ul&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%2Fjpzkmu0982hhywbu4bb7.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%2Fjpzkmu0982hhywbu4bb7.png" alt="Image description 10" width="771" height="579"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paste it on GitHub where we are creating our own workflow.&lt;/li&gt;
&lt;/ul&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%2F98goz540b21u9agjgn39.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%2F98goz540b21u9agjgn39.png" alt="Image description 11" width="775" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add all your secrets above "jobs" on the workflow, using the following template as a reference:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#Allow repo secrets
env:
  VITE_SECRET_1: ${{ secrets.VITE_SECRET_1 }}
  VITE_SECRET_3: ${{ secrets.VITE_SECRET_3 }}
  VITE_SECRET_3: ${{ secrets.VITE_SECRET_3 }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;In my portfolio, I only have the "VITE_OPEN_AI_API_KEY" secret, so I added the following code to my workflow:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#Allow repo secrets
env:
  VITE_OPEN_AI_API_KEY: ${{ secrets.VITE_OPEN_AI_API_KEY }}

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The result is shown in the image below;&lt;/li&gt;
&lt;li&gt;Click on "Commit changes"&lt;/li&gt;
&lt;/ul&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%2Fsmm0or2rdnm06smbtgm3.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%2Fsmm0or2rdnm06smbtgm3.png" alt="Image description 12" width="775" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you wish, you can modify the "Commit message", otherwise, leave it as it is;&lt;/li&gt;
&lt;li&gt;Click "Commit changes".&lt;/li&gt;
&lt;/ul&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%2Fp7vn28x0idkngh20act3.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%2Fp7vn28x0idkngh20act3.png" alt="Image description 13" width="351" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your workflow was successfully created!&lt;/li&gt;
&lt;/ul&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%2Fiqnciiw5q6wxhgrqgfjq.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%2Fiqnciiw5q6wxhgrqgfjq.png" alt="Image description 14" width="698" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 7 --
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Commit a change:
&lt;/h4&gt;

&lt;p&gt;As soon as you commit a change, GitHub Actions will automatically identify, build, and deploy your project with your secrets in your GitHub Pages.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can verify all deployments on the "Actions" tab in your GitHub repository:&lt;/li&gt;
&lt;/ul&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%2Ffxoyyjvr2mbady7uz3vj.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%2Ffxoyyjvr2mbady7uz3vj.png" alt="Image description 15" width="698" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🎉 Congratulations! --
&lt;/h3&gt;

&lt;p&gt;✉️ Feel free to contact me in case of questions!&lt;/p&gt;

</description>
      <category>vite</category>
      <category>githubactions</category>
      <category>github</category>
      <category>react</category>
    </item>
    <item>
      <title>'BEM' do CSS - Boas Práticas</title>
      <dc:creator>Douglas Toledo</dc:creator>
      <pubDate>Fri, 12 Feb 2021 17:37:35 +0000</pubDate>
      <link>https://dev.to/dwtoledo/bem-do-css-boas-praticas-p8m</link>
      <guid>https://dev.to/dwtoledo/bem-do-css-boas-praticas-p8m</guid>
      <description>&lt;h3&gt;
  
  
  O que é BEM?
&lt;/h3&gt;

&lt;p&gt;É uma metodologia de escrita de classes no CSS que ajuda na criação de componentes reutilizáveis e boas práticas no desenvolvimento front-end.&lt;/p&gt;




&lt;h3&gt;
  
  
  É fácil!
&lt;/h3&gt;

&lt;p&gt;Apenas uma convenção de nomes.&lt;/p&gt;

&lt;h3&gt;
  
  
  É modular!
&lt;/h3&gt;

&lt;p&gt;Código independente e reutilizável.&lt;/p&gt;

&lt;h3&gt;
  
  
  É flexível!
&lt;/h3&gt;

&lt;p&gt;Use da maneira que preferir.&lt;/p&gt;

&lt;h3&gt;
  
  
  É internacional!
&lt;/h3&gt;

&lt;p&gt;Entenda rapidamente o CSS do mundo todo.&lt;/p&gt;




&lt;h3&gt;
  
  
  'B' vem de Bloco (block)
&lt;/h3&gt;

&lt;h3&gt;
  
  
  'E' vem de Elemento (element)
&lt;/h3&gt;

&lt;h3&gt;
  
  
  'M' vem de Modificador (modifier)
&lt;/h3&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%2Fi%2Fbz12up8mp0wtzpgtx4d5.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%2Fi%2Fbz12up8mp0wtzpgtx4d5.png" alt="Alt Text" width="800" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blocos &amp;gt;&lt;/strong&gt; São entidades autônomas que são significativas por si só. Exemplos: Menu, Rodapé, Cabeçalho, Newsletter, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Elementos &amp;gt;&lt;/strong&gt; São partes de um bloco (elementos filhos, netos, etc), Exemplos: Items de um Menu, texto Copyright de um Rodapé, Logo de um Cabeçalho, Formulário de um Newsletter, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Modificadores &amp;gt;&lt;/strong&gt; Uma variante de um bloco ou elemento padrão. Exemplos: um Botão Verde (padrão é branco), um Item de Menu com Link Desabilitado (o padrão é habilitado), etc.&lt;/p&gt;




&lt;h3&gt;
  
  
  Nomeando classes conforme o 'BEM’:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Para os blocos&lt;/strong&gt; não há diferenças dos nomes que hoje você já escolhe no CSS (exemplo: &lt;strong&gt;"bloco"&lt;/strong&gt;), ou seja:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Se temos uma divisória para a newsletter podemos nomeá-la como "newsletter";&lt;/li&gt;
&lt;li&gt;Se temos um menu de navegação, podemos nomeá-lo como "menu" e assim por diante.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Para o(s) elemento(s)&lt;/strong&gt; de um bloco usamos por convenção 'BEM' o nome do bloco seguido de 2 &lt;em&gt;underlines&lt;/em&gt; e o nome do elemento (exemplo: &lt;strong&gt;"bloco__elemento"&lt;/strong&gt;), ou seja:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Se temos um bloco de &lt;em&gt;menu&lt;/em&gt; com vários elementos que são links de navegação, podemos nomeá-los como "menu__links";&lt;/li&gt;
&lt;li&gt;Se temos um bloco de sessão &lt;em&gt;newsletter&lt;/em&gt; com um elemento formulário de cadastro, podemos nomeá-lo como "newsletter__formulario" e assim por diante.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Para o(s) modificador(es)&lt;/strong&gt; de um elemento usamos por convenção 'BEM' o nome do elemento seguido de 2 &lt;em&gt;hífens&lt;/em&gt; e o nome do modificador (exemplo: &lt;strong&gt;"bloco__elemento--modificador"&lt;/strong&gt;), ou seja:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Se temos um botão de formulário que já possui uma formatação padrão, mas queremos que ele seja verde, podemos nomeá-lo como "formulario__bttn--red";&lt;/li&gt;
&lt;li&gt;Se temos um menu de links, mas um deles está desabilitado, podemos nomeá-lo como "menu__links--disabled" e assim por diante.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ‘BEM’ na prática:
&lt;/h3&gt;

&lt;p&gt;Observe a página abaixo:&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%2Fi%2Fa8f85rz4i7zupf7r7sbs.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%2Fi%2Fa8f85rz4i7zupf7r7sbs.png" alt="Alt Text" width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para os blocos (em verde), elementos (em azul) e modificadores (em vermelho) os nomes práticos seriam:&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%2Fi%2F9uycc91uibrpuzv9r0gf.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%2Fi%2F9uycc91uibrpuzv9r0gf.png" width="612" height="826"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Parabéns!!!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Fico muito feliz que chegou até o final dessa publicação.&lt;br&gt;
Espero que você tenha aprendido muito!&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Quer aprender mais?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Te convido a ver a Live sobre 'BEM - Boas Práticas em CSS' que fiz lá no meu canal da Twitch. O link da live é esse: &lt;a href="https://www.twitch.tv/videos/906196998?t=0h2m48s" rel="noopener noreferrer"&gt;https://www.twitch.tv/videos/906196998?t=0h2m48s&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Segue também a apresentação que foi preparada.&lt;br&gt;
Um grande abraço!&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/M53Y9XEMB92xj6" alt="M53Y9XEMB92xj6 on slideshare.net" width="100%" height="487"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>css</category>
      <category>codequality</category>
      <category>vscode</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Tags HTML que você precisa conhecer e Dicas do VS Code.</title>
      <dc:creator>Douglas Toledo</dc:creator>
      <pubDate>Mon, 25 Jan 2021 13:01:03 +0000</pubDate>
      <link>https://dev.to/dwtoledo/tags-html-que-voce-precisa-conhecer-e-dicas-do-vs-code-8f2</link>
      <guid>https://dev.to/dwtoledo/tags-html-que-voce-precisa-conhecer-e-dicas-do-vs-code-8f2</guid>
      <description>&lt;p&gt;Agora que você já viu [...]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;as principais tags e;&lt;/li&gt;
&lt;li&gt;tabelas e;&lt;/li&gt;
&lt;li&gt;formulários em HTML.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;[...] chegou a hora daquelas tags pouco conhecidas, mas que você precisa conhecer!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Tag &amp;lt;details&amp;gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Quando usada com a tag &amp;lt;summary&amp;gt; faz com que um conteúdo escondido seja exibido ao clicar no elemento &lt;em&gt;summary&lt;/em&gt;. Se clicar novamente, o conteúdo é escondido. E o melhor, sem precisar de JavaScript!&lt;/p&gt;

&lt;p&gt;Podemos criar &lt;em&gt;drop-menu&lt;/em&gt; com essa funcionalidade. Olha só que legal!&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;details&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;Menu&lt;span class="nt"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://google.com/"&lt;/span&gt; &lt;span class="na"&gt;target=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Google&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://bing.com/"&lt;/span&gt; &lt;span class="na"&gt;target=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Bing&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://duckduckgo.com/"&lt;/span&gt; &lt;span class="na"&gt;target=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;DuckDuckGo&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/details&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O resultado é um Menu que ao clicarmos exibe 3 links (Google, Bing e DuckDuckGo):&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%2Fi%2Fhc4jz3bsa9g5vey2wmaq.gif" 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%2Fi%2Fhc4jz3bsa9g5vey2wmaq.gif" alt="Alt Text" width="248" height="170"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se tivermos um conteúdo logo abaixo, ele será "empurrado" ou "puxado" quando clicarmos no Menu, veja um exemplo:&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%2Fi%2F9y4js7aa3a6uetybh54d.gif" 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%2Fi%2F9y4js7aa3a6uetybh54d.gif" alt="Alt Text" width="282" height="252"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Tag &amp;lt;source&amp;gt; com a tag &amp;lt;audio&amp;gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Você sabia que cada navegador tem preferência por um determinado tipo de audio? O navegador Safari da maça por exemplo, adora o audio ogg!&lt;/p&gt;

&lt;p&gt;Então vamos dar aos navegadores o que eles querem para evitar que seu conteúdo não fique disponível para o usuário, segue um 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;audio&lt;/span&gt; &lt;span class="na"&gt;controls&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
     &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"./sound.mp3"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"audio/mpeg"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
     &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"./sound.ogg"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"audio/ogg"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
     Seu navegador não suporta a tag de audio.
&lt;span class="nt"&gt;&amp;lt;/audio&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O resultado é:&lt;br&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%2Fi%2Ftpyubrxrlwajciwu94f2.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%2Fi%2Ftpyubrxrlwajciwu94f2.png" alt="Alt Text" width="305" height="60"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O navegador irá mostrar a mensagem "Seu navegador não suporta a tag de audio." caso não consiga carregar nenhuma opção de arquivo de áudio.&lt;/p&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;Tag &amp;lt;source&amp;gt; com a tag &amp;lt;video&amp;gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Semelhante ao audio:&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;video&lt;/span&gt; &lt;span class="na"&gt;controls&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"./video.mp4"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"video/mp4"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"./video.mov"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"video/mov"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Seu navegador não suporta a tag de vídeo.
&lt;span class="nt"&gt;&amp;lt;/video&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O resultado é um player de vídeo:&lt;br&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%2Fi%2Fg5y76dy8ns3mycqfvg78.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%2Fi%2Fg5y76dy8ns3mycqfvg78.png" alt="Alt Text" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O navegador irá mostrar a mensagem "Seu navegador não suporta a tag de vídeo." caso não consiga carregar nenhuma opção de arquivo de vídeo.&lt;/p&gt;

&lt;p&gt;Encontrei uma explicação mais detalhada sobre os formatos de audio e vídeos compatíveis nos navegadores, &lt;strong&gt;recomendo a leitura: &lt;a href="https://developer.mozilla.org/pt-BR/docs/Web/HTML/formatos_midia_suportados" rel="noopener noreferrer"&gt;MDN Web Docs - Formatos de mídia suportados por elementos HTML de áudio e vídeo&lt;br&gt;
&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;Tag &amp;lt;picture&amp;gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Você sabia que é possível deixar suas imagens mais responsivas* só com HTML e sem usar CSS? Usamos a tag picture da seguinte maneira:&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;picture&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;media=&lt;/span&gt;&lt;span class="s"&gt;"(min-width: 512px)"&lt;/span&gt; &lt;span class="na"&gt;srcset=&lt;/span&gt;&lt;span class="s"&gt;"./512.jpg"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;media=&lt;/span&gt;&lt;span class="s"&gt;"(min-width: 256px)"&lt;/span&gt; &lt;span class="na"&gt;srcset=&lt;/span&gt;&lt;span class="s"&gt;"./256.jpg"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"./150.jpg"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/picture&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  *carregar uma imagem de menor resolução para telas menores e carregar uma imagem com resolução maior para telas maiores.
&lt;/h6&gt;

&lt;p&gt;Explicando:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;se a tela é maior que 512px, o HTML irá carregar "512.jpg";&lt;/li&gt;
&lt;li&gt;se a tela é entre 256px e 512px, o HTML irá carregar "256.jpg";&lt;/li&gt;
&lt;li&gt;se a tela é menor que 256px, será carregado "150.jpg".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;a ordem é muito importante, sempre do maior tamanho de tela ao menor, caso contrário, não irá funcionar muito bem.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&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%2Fi%2Fgh1axt24vk8nu5n0zrnl.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%2Fi%2Fgh1axt24vk8nu5n0zrnl.png" alt="Alt Text" width="800" height="991"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O resultado é:&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%2Fi%2Fuurnbqbbfiexerqkeneq.gif" 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%2Fi%2Fuurnbqbbfiexerqkeneq.gif" alt="Alt Text" width="470" height="262"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Tag &amp;lt;dl&amp;gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Existem as listas ordenadas &lt;em&gt;&amp;lt;ol&amp;gt;&lt;/em&gt; e as listas não ordenadas &lt;em&gt;&amp;lt;ul&amp;gt;&lt;/em&gt;. Mas você sabia que existe uma lista de descrições &lt;em&gt;&amp;lt;dl&amp;gt;&lt;/em&gt;? Geralmente essa lista é usada em glossários. Vamos ao exemplo de código:&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;h2&amp;gt;&lt;/span&gt;Filmes do Harry Potter:&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;dl&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;dt&amp;gt;&lt;/span&gt;Harry Potter e a Pedra Filosofal (2001)&lt;span class="nt"&gt;&amp;lt;/dt&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;dd&amp;gt;&lt;/span&gt;Descrição do 1º filme.&lt;span class="nt"&gt;&amp;lt;/dd&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;dt&amp;gt;&lt;/span&gt;Harry Potter e a Câmara Secreta (2002)&lt;span class="nt"&gt;&amp;lt;/dt&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;dd&amp;gt;&lt;/span&gt;Descrição do 2º filme.&lt;span class="nt"&gt;&amp;lt;/dd&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;dt&amp;gt;&lt;/span&gt;Harry Potter e o Prisioneiro de Azkaban (2004)&lt;span class="nt"&gt;&amp;lt;/dt&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;dd&amp;gt;&lt;/span&gt;Descrição do 3º filme.&lt;span class="nt"&gt;&amp;lt;/dd&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;dt&amp;gt;&lt;/span&gt;Harry Potter e o Cálice de Fogo (2005)&lt;span class="nt"&gt;&amp;lt;/dt&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;dd&amp;gt;&lt;/span&gt;Descrição do 4º filme.&lt;span class="nt"&gt;&amp;lt;/dd&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;dt&amp;gt;&lt;/span&gt;Harry Potter e a Ordem da Fênix (2007)&lt;span class="nt"&gt;&amp;lt;/dt&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;dd&amp;gt;&lt;/span&gt;Descrição do 5º filme.&lt;span class="nt"&gt;&amp;lt;/dd&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;dt&amp;gt;&lt;/span&gt;arry Potter e o Enigma do Príncipe (2009)&lt;span class="nt"&gt;&amp;lt;/dt&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;dd&amp;gt;&lt;/span&gt;Descrição do 6º filme.&lt;span class="nt"&gt;&amp;lt;/dd&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;dt&amp;gt;&lt;/span&gt;Harry Potter e as Relíquias da Morte: Parte 1 (2010)&lt;span class="nt"&gt;&amp;lt;/dt&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;dd&amp;gt;&lt;/span&gt;Descrição do 7º filme.&lt;span class="nt"&gt;&amp;lt;/dd&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;dt&amp;gt;&lt;/span&gt;Harry Potter e as Relíquias da Morte: Parte 2 (2011)&lt;span class="nt"&gt;&amp;lt;/dt&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;dd&amp;gt;&lt;/span&gt;Descrição do 8º filme.&lt;span class="nt"&gt;&amp;lt;/dd&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/dl&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"./harry-potter-movies.png"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Capas de todos os filmes do Harry Potter"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No código acima, temos uma lista &lt;em&gt;&amp;lt;dl&amp;gt;&lt;/em&gt; envolvendo todos os filmes do Harry Potter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cada título de filme está na tag &lt;em&gt;&amp;lt;dt&amp;gt; description term&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;cada descrição do filme está na tag &lt;em&gt;&amp;lt;dd&amp;gt; descriptions&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O resultado é:&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%2Fi%2Foozao1frotvtfp3fxl8x.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%2Fi%2Foozao1frotvtfp3fxl8x.png" alt="Alt Text" width="520" height="649"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;O post já está ficando grande e ainda tenho tags interessantes para te mostrar! Então vamos chamar esse post de Parte 1 e vou fazer em breve a Parte 2 para vocês!&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Parabéns!!!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Fico muito feliz que chegou até o final dessa publicação.&lt;br&gt;
Espero que você tenha aprendido muito!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Quer aprender mais?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Te convido a visitar e seguir o meu canal lá na Twitch: &lt;a href="https://www.twitch.tv/dwtoledo" rel="noopener noreferrer"&gt;https://www.twitch.tv/dwtoledo&lt;/a&gt;.&lt;br&gt;
Lá a gente faz muitas lives de front-end e tem uma playlist muito legal sobre conceitos de HTML!&lt;/p&gt;

</description>
      <category>html</category>
      <category>vscode</category>
      <category>webdev</category>
      <category>codequality</category>
    </item>
    <item>
      <title>Tags HTML para Formulários e Dicas do VS Code.</title>
      <dc:creator>Douglas Toledo</dc:creator>
      <pubDate>Mon, 18 Jan 2021 13:26:43 +0000</pubDate>
      <link>https://dev.to/dwtoledo/tags-html-para-formularios-e-dicas-do-vs-code-43d1</link>
      <guid>https://dev.to/dwtoledo/tags-html-para-formularios-e-dicas-do-vs-code-43d1</guid>
      <description>&lt;p&gt;Agora que você já viu [...]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;as principais tags e;&lt;/li&gt;
&lt;li&gt;tabelas em HTML;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;[...] chegou a hora dos Formulários!&lt;/p&gt;

&lt;h2&gt;
  
  
  Vamos replicar o formulário abaixo?
&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%2Fi%2Fok062ze4v2413e5s2pcp.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%2Fi%2Fok062ze4v2413e5s2pcp.png" alt="Alt Text" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No formulário, temos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Duas entradas de texto ("Nome" e "Senha");&lt;/li&gt;
&lt;li&gt;Uma seleção através de botões radiais ("Selecione a tarefa");&lt;/li&gt;
&lt;li&gt;Uma seleção através de uma lista de dados ("Selecione o status da tarefa");&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Vamos por partes, se não vamos complicar as coisas!&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Usamos a &lt;em&gt;tag &amp;lt;input&amp;gt;&lt;/em&gt; para o usuário digitar os dados;&lt;/li&gt;
&lt;li&gt;Definimos qual é o tipo do dado usando o atributo &lt;em&gt;type=""&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;Definimos um nome para esse campo usando o atributo &lt;em&gt;name=""&lt;/em&gt;;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Exemplo em que o usuário irá digitar a sua idade:&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;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"idade"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Há mais de 20 tipos de dados! &lt;strong&gt;É muito importante você colocar o tipo correto&lt;/strong&gt; para que o navegador prepare a página para receber aquele tipo de dado específico.&lt;/p&gt;

&lt;p&gt;Exemplos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Se você colocar o &lt;em&gt;type="password"&lt;/em&gt;, o navegador irá entender que o dado é uma senha e ela não ficará visível durante a digitação.&lt;br&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%2Fi%2Fajsykqbzb0bsp28jxcm7.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%2Fi%2Fajsykqbzb0bsp28jxcm7.PNG" alt="Alt Text" width="361" height="91"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Se você colocar o &lt;em&gt;type=color&lt;/em&gt;, o navegador irá entender que o dado é uma cor e irá abrir uma seleção de paleta de cores.&lt;br&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%2Fi%2Fjzr1rekywcacoffkbl6j.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%2Fi%2Fjzr1rekywcacoffkbl6j.png" alt="Alt Text" width="472" height="565"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Se você colocar o &lt;em&gt;type=date&lt;/em&gt;, o navegador irá entender que o dado é uma data e irá formatar o campo para uma fácil digitação e ou seleção de data.&lt;br&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%2Fi%2Fl6t1po05ygfuiy5a0m8m.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%2Fi%2Fl6t1po05ygfuiy5a0m8m.png" alt="Alt Text" width="433" height="604"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Você pode ver a lista completa de todos os tipos de inputs no link &lt;a href="https://www.w3schools.com/html/html_form_input_types.asp" rel="noopener noreferrer"&gt;HTML Input Types - W3Schools&lt;/a&gt;!&lt;/p&gt;




&lt;h4&gt;
  
  
  No formulário inicial, para as duas entradas de texto ("Nome" e "Senha"):
&lt;/h4&gt;

&lt;p&gt;Nome é &lt;em&gt;type="text"&lt;/em&gt;, então vamos começar nosso formulário adicionando o campo &lt;em&gt;nome&lt;/em&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;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"nome"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Senha é &lt;em&gt;type="password"&lt;/em&gt;, então vamos adicionar o campo &lt;em&gt;senha&lt;/em&gt; após uma quebra de linha (&lt;em&gt;tag &amp;lt;br&amp;gt;&lt;/em&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;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"nome"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"password"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"senha"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O resultado do html é:&lt;br&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%2Fi%2Fwtsvy3gefvwi85a9h258.jpg" 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%2Fi%2Fwtsvy3gefvwi85a9h258.jpg" alt="Alt Text" width="397" height="111"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Mas Douglas, cadê a legenda ("Nome:" e "Senha:") e a descrição do campo ("Insira seu nome" e "Insira sua senha")?&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Para a legenda "Nome:", usamos a &lt;em&gt;tag &amp;lt;label&amp;gt;&lt;/em&gt;, no seu atributo &lt;em&gt;for=""&lt;/em&gt; colocamos o nome do campo usado na &lt;em&gt;tag &amp;lt;input&amp;gt;&lt;/em&gt; e entre a abertura e fechamento das &lt;em&gt;tags&lt;/em&gt; digitamos a legenda;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Para a descrição "Insira seu nome", usamos o atributo &lt;em&gt;placeholder=""&lt;/em&gt; da &lt;em&gt;tag &amp;lt;input&amp;gt;&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Colocando a legenda e descrição, temos:&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;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"nome"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Nome:&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"nome"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Insira seu nome"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"senha"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Senha:&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"password"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"senha"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="na"&gt;Insira&lt;/span&gt; &lt;span class="na"&gt;sua&lt;/span&gt; &lt;span class="na"&gt;senha&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Olha o resultado!&lt;br&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%2Fi%2F8hgwo0ucimcyu6z5sqi4.jpg" 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%2Fi%2F8hgwo0ucimcyu6z5sqi4.jpg" alt="Alt Text" width="514" height="115"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h4&gt;
  
  
  Voltando ao formulário inicial, vamos continuar com a seleção através de botões radiais e seleção através de uma lista de dados:
&lt;/h4&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%2Fi%2Fdl5koiucofdpc2j4w89b.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%2Fi%2Fdl5koiucofdpc2j4w89b.png" alt="Alt Text" width="800" height="237"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;Para a seleção através de botões radiais usamos &lt;em&gt;&amp;lt;input type="radio"&amp;gt;&lt;/em&gt;:
&lt;/li&gt;
&lt;/ul&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;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"tarefa"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Seleciona uma tarefa:&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tarefa"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"radio"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"varrer-a-casa"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; Varrer a casa
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tarefa"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"radio"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"lavar-a-louca"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; Lavar a louça
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tarefa"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"radio"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"arrumar-o-quarto"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; Arrumar o quarto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;em&gt;Note que usamos o mesmo nome "tarefa" para todas as opções.&lt;/em&gt; Isso faz com que consigamos selecionar somente uma tarefa entre as três. Se os nomes fossem diferentes, seriamos capaz de selecionar mais de um item.&lt;/p&gt;

&lt;p&gt;O resultado desse HTML é:&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%2Fi%2Fip8ngamn71rpolpw4i0a.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%2Fi%2Fip8ngamn71rpolpw4i0a.png" alt="Alt Text" width="754" height="96"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Para a seleção através uma lista de dados usamos a &lt;em&gt;tag &amp;lt;input&amp;gt;&lt;/em&gt; e colocamos o nome da lista no atributo &lt;em&gt;list=""&lt;/em&gt;, &lt;del&gt;não usamos o atributo &lt;em&gt;type=""&lt;/em&gt;&lt;/del&gt; nesse caso;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A lista de dados vai entre as &lt;em&gt;tags &amp;lt;datalist id="lista-status"&amp;gt;&amp;lt;/datalist&amp;gt;&lt;/em&gt;, onde &lt;em&gt;id&lt;/em&gt; é o mesmo nome dado no atributo &lt;em&gt;list=""&lt;/em&gt; da &lt;em&gt;tag &amp;lt;input&amp;gt;&lt;/em&gt; e;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cada dado da lista fica na &lt;em&gt;tag &amp;lt;option value=""&amp;gt;&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"status"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Selecione o status da tarefa&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"status"&lt;/span&gt; &lt;span class="na"&gt;list=&lt;/span&gt;&lt;span class="s"&gt;"lista-status"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"clique e selecione"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;datalist&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"lista-status"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
     &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Aguardando"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
     &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Em Processo"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
     &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Concluído"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/datalist&amp;gt;&lt;/span&gt;   
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;O resultado é:&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%2Fi%2Foy3pmxlb65hyaszcsttm.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%2Fi%2Foy3pmxlb65hyaszcsttm.png" alt="Alt Text" width="740" height="189"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h4&gt;
  
  
  O botão "Enviar" é muito simples, é uma &lt;em&gt;tag &amp;lt;input&amp;gt;&lt;/em&gt; do &lt;em&gt;type="submit"&lt;/em&gt; e o texto do botão fica no atributo &lt;em&gt;value=""&lt;/em&gt;.
&lt;/h4&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;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Enviar"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;O resultado é:&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%2Fi%2Fyn5lhg1912ntb4gzjxuo.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%2Fi%2Fyn5lhg1912ntb4gzjxuo.png" alt="Alt Text" width="191" height="67"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Juntando todos os HTML, temos:&lt;/strong&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;form&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"nome"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Nome:&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Insira seu nome"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"nome"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"senha"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Senha:&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"password"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Insira sua senha"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"senha"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"tarefa"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Seleciona uma tarefa:&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tarefa"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"radio"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"varrer-a-casa"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; Varrer a casa
        &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tarefa"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"radio"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"lavar-a-louca"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; Lavar a louça
        &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tarefa"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"radio"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"arrumar-o-quarto"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; Arrumar o quarto
        &lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"status"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Selecione o status da tarefa&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"status"&lt;/span&gt; &lt;span class="na"&gt;list=&lt;/span&gt;&lt;span class="s"&gt;"lista-status"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"clique e selecione"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;datalist&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"lista-status"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Aguardando"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Em Processo"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Concluído"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/datalist&amp;gt;&lt;/span&gt;         

        &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Enviar"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Como resultado:&lt;br&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%2Fi%2F7l2hdh0tb33qcrecy2kx.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%2Fi%2F7l2hdh0tb33qcrecy2kx.png" alt="Alt Text" width="800" height="295"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Reparou que está faltando algo ainda?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nos campos de seleção há uma divisória, agrupando todos esses campos do formulário (&lt;em&gt;radio&lt;/em&gt; e &lt;em&gt;datalist&lt;/em&gt;). Isso se chama &lt;em&gt;fieldset&lt;/em&gt;!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Usamos a &lt;em&gt;tag &amp;lt;fieldset&amp;gt;&lt;/em&gt; para agrupar e;&lt;/li&gt;
&lt;li&gt;Podemos dar um nome para o agrupamento usando &lt;em&gt;tag &amp;lt;legend&amp;gt;&lt;/em&gt;:
&lt;/li&gt;
&lt;/ul&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;fieldset&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;legend&amp;gt;&lt;/span&gt;Seleciona uma tarefa:&lt;span class="nt"&gt;&amp;lt;/legend&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tarefa"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"radio"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"varrer-a-casa"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; Varrer a casa
            &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tarefa"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"radio"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"lavar-a-louca"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; Lavar a louça
            &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tarefa"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"radio"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"arrumar-o-quarto"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; Arrumar o quarto

            &lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;

            &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"status"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Selecione o status da tarefa&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"status"&lt;/span&gt; &lt;span class="na"&gt;list=&lt;/span&gt;&lt;span class="s"&gt;"lista-status"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"clique e selecione"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;datalist&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"lista-status"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Aguardando"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Em Processo"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Concluído"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;/datalist&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/fieldset&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  O resultado final do HTML completo é:
&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%2Fi%2Fok062ze4v2413e5s2pcp.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%2Fi%2Fok062ze4v2413e5s2pcp.png" alt="Alt Text" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Parabéns!!!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Fico muito feliz que chegou até o final dessa publicação.&lt;br&gt;
Espero que você tenha aprendido muito!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Quer aprender mais?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Te convido a visitar e seguir o meu canal lá na Twitch: &lt;a href="https://www.twitch.tv/dwtoledo" rel="noopener noreferrer"&gt;https://www.twitch.tv/dwtoledo&lt;/a&gt;.&lt;br&gt;
Lá a gente faz muitas lives de front-end e tem uma playlist muito legal sobre conceitos de HTML!&lt;/p&gt;

</description>
      <category>html</category>
      <category>vscode</category>
      <category>webdev</category>
      <category>codequality</category>
    </item>
  </channel>
</rss>
