<?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>Forem: Weverton Souza</title>
    <description>The latest articles on Forem by Weverton Souza (@tom-log).</description>
    <link>https://forem.com/tom-log</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%2F918931%2F532fd881-97a1-4638-8d1c-8c5f29245fed.jpeg</url>
      <title>Forem: Weverton Souza</title>
      <link>https://forem.com/tom-log</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tom-log"/>
    <language>en</language>
    <item>
      <title>Configuração de MCP Server de Arquivos Locais com Claude Desktop</title>
      <dc:creator>Weverton Souza</dc:creator>
      <pubDate>Fri, 11 Apr 2025 18:06:11 +0000</pubDate>
      <link>https://forem.com/tom-log/configuracao-de-mcp-server-de-arquivos-locais-com-claude-desktop-4lg2</link>
      <guid>https://forem.com/tom-log/configuracao-de-mcp-server-de-arquivos-locais-com-claude-desktop-4lg2</guid>
      <description>&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;O Model Context Protocol (MCP) permite que aplicações de IA, como o Claude, interajam com arquivos locais em seu computador. Neste tutorial, vou mostrar como configurar o MCP Server para arquivos locais com o Claude Desktop, permitindo que a IA acesse, leia e manipule seus arquivos de forma eficiente.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é o MCP (Model Context Protocol)?
&lt;/h2&gt;

&lt;p&gt;Antes de começarmos, é importante entender o que é o MCP. O Model Context Protocol é um padrão aberto que permite que modelos de IA interajam com recursos externos, como arquivos locais, banco de dados, e muito mais. Isso expande significativamente as capacidades das IAs, permitindo que elas trabalhem com seus dados diretamente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pré-requisitos
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Node.js instalado em seu computador&lt;/li&gt;
&lt;li&gt;Claude Desktop instalado&lt;/li&gt;
&lt;li&gt;Conhecimento básico de como editar arquivos JSON&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Passo 1: Instalar o Claude Desktop
&lt;/h2&gt;

&lt;p&gt;O primeiro passo é instalar o aplicativo Claude Desktop em seu computador:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Acesse &lt;a href="https://claude.ai/download" rel="noopener noreferrer"&gt;https://claude.ai/download&lt;/a&gt; e baixe a versão do Claude Desktop compatível com seu sistema operacional (Windows, macOS ou Linux).&lt;/li&gt;
&lt;li&gt;Execute o instalador e siga as instruções padrão de instalação.&lt;/li&gt;
&lt;li&gt;Após a instalação, abra o Claude Desktop e faça login com sua conta Claude.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Passo 2: Preparar o MCP Server para Arquivos Locais
&lt;/h2&gt;

&lt;p&gt;O MCP Server para sistema de arquivos locais é uma implementação oficial disponível no GitHub:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Vamos utilizar o pacote NPX, que permite executar pacotes npm sem instalá-los globalmente.&lt;/li&gt;
&lt;li&gt;O servidor MCP de sistema de arquivos segue a documentação oficial: &lt;a href="https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem" rel="noopener noreferrer"&gt;https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A configuração que você precisará para o próximo passo segue este formato:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"filesystem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"@modelcontextprotocol/server-filesystem"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"/Users/username/Desktop"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"/path/to/other/allowed/dir"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Nota importante:&lt;/strong&gt; Substitua &lt;code&gt;/Users/username/Desktop&lt;/code&gt; e &lt;code&gt;/path/to/other/allowed/dir&lt;/code&gt; pelos diretórios reais do seu sistema de arquivos que você deseja permitir que o Claude acesse. Por exemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No Windows: &lt;code&gt;C:\\Users\\SeuUsuario\\Documents&lt;/code&gt; e &lt;code&gt;C:\\Projetos&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;No macOS ou Linux: &lt;code&gt;/Users/SeuUsuario/Documents&lt;/code&gt; e &lt;code&gt;/Users/SeuUsuario/Projetos&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Você pode adicionar quantos diretórios quiser como argumentos adicionais na lista &lt;code&gt;args&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 3: Configurar o Claude Desktop para usar o MCP Server
&lt;/h2&gt;

&lt;p&gt;Agora vamos configurar o Claude Desktop para usar o servidor MCP:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Abra o Claude Desktop&lt;/li&gt;
&lt;li&gt;No menu superior, vá para "Arquivo" &amp;gt; "Desenvolvedor" &amp;gt; "Editar Configuração"&lt;/li&gt;
&lt;li&gt;Isso abrirá o arquivo de configuração &lt;code&gt;claude_desktop_config.json&lt;/code&gt; em seu editor de texto padrão&lt;/li&gt;
&lt;li&gt;Por padrão, este arquivo estará vazio (você verá apenas &lt;code&gt;{}&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Cole o código JSON de configuração do MCP Server que você preparou no Passo 2&lt;/li&gt;
&lt;li&gt;Verifique se a sintaxe JSON está correta (chaves e vírgulas nos lugares certos)&lt;/li&gt;
&lt;li&gt;Salve o arquivo&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Exemplo de como o arquivo deve ficar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"filesystem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"@modelcontextprotocol/server-filesystem"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"/Users/SeuUsuario/Documents"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"/Users/SeuUsuario/Projetos"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Passo 4: Reiniciar o Claude Desktop
&lt;/h2&gt;

&lt;p&gt;Após salvar as configurações, é &lt;strong&gt;OBRIGATÓRIO&lt;/strong&gt; reiniciar o Claude Desktop para que as alterações sejam aplicadas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Feche completamente o aplicativo Claude Desktop&lt;/li&gt;
&lt;li&gt;Reabra o aplicativo&lt;/li&gt;
&lt;li&gt;O Claude Desktop vai iniciar com as novas configurações e carregará automaticamente o MCP Server configurado&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Passo 5: Testar a configuração do MCP Server
&lt;/h2&gt;

&lt;p&gt;Após reiniciar o Claude Desktop:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inicie uma nova conversa com o Claude&lt;/li&gt;
&lt;li&gt;Você verá que todos os MCPs configurados estarão disponíveis para uso&lt;/li&gt;
&lt;li&gt;Basta escrever qualquer mensagem, e a IA identificará automaticamente que você tem o MCP Server de arquivos configurado&lt;/li&gt;
&lt;li&gt;Agora o Claude poderá executar várias funções relacionadas a arquivos, como:

&lt;ul&gt;
&lt;li&gt;Listar diretórios&lt;/li&gt;
&lt;li&gt;Ler arquivos&lt;/li&gt;
&lt;li&gt;Criar novos arquivos&lt;/li&gt;
&lt;li&gt;Modificar arquivos existentes&lt;/li&gt;
&lt;li&gt;E outras operações de sistema de arquivos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Experimente diferentes comandos para explorar as capacidades do MCP Server!&lt;/p&gt;

&lt;h2&gt;
  
  
  Recursos Adicionais
&lt;/h2&gt;

&lt;p&gt;O MCP Server para sistema de arquivos oferece várias funcionalidades poderosas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Navegação de arquivos&lt;/strong&gt;: Permite que o Claude navegue pela estrutura de diretórios permitidos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leitura de arquivos&lt;/strong&gt;: O Claude pode ler o conteúdo de arquivos de texto, código, CSV, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manipulação de arquivos&lt;/strong&gt;: É possível criar, modificar e excluir arquivos (com sua permissão)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Análise de dados&lt;/strong&gt;: O Claude pode analisar arquivos CSV, JSON e outros formatos de dados&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Dicas de Segurança
&lt;/h2&gt;

&lt;p&gt;Ao configurar o MCP Server, tenha em mente algumas considerações de segurança:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Permita apenas os diretórios necessários&lt;/strong&gt;: Limite o acesso apenas aos diretórios que você realmente precisa que o Claude acesse&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evite diretórios sensíveis&lt;/strong&gt;: Não permita acesso a diretórios que contenham informações sensíveis ou confidenciais&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verifique as operações&lt;/strong&gt;: Sempre verifique as operações que o Claude está realizando em seus arquivos&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Solução de Problemas
&lt;/h2&gt;

&lt;p&gt;Se você encontrar problemas ao configurar o MCP Server:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Verifique a sintaxe JSON&lt;/strong&gt;: Certifique-se de que o arquivo de configuração está com a sintaxe JSON correta&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Caminhos de diretório&lt;/strong&gt;: Confirme se os caminhos dos diretórios estão corretos e existem no seu sistema&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js instalado&lt;/strong&gt;: Verifique se o Node.js está instalado corretamente no seu sistema&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reinicie o aplicativo&lt;/strong&gt;: Às vezes, simplesmente reiniciar o Claude Desktop resolve problemas de conexão&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;Com o MCP Server configurado para arquivos locais, você expandiu significativamente as capacidades do Claude Desktop. Agora ele pode interagir com seus arquivos locais, tornando-o muito mais útil para tarefas que envolvem dados armazenados em seu computador.&lt;/p&gt;

&lt;p&gt;Experimente diferentes comandos e veja como o Claude pode ajudá-lo a analisar, organizar e trabalhar com seus arquivos locais de forma inteligente!&lt;/p&gt;




&lt;p&gt;Você configurou com sucesso o MCP Server para arquivos locais no Claude Desktop? Compartilhe sua experiência nos comentários abaixo!&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>mcpserver</category>
    </item>
    <item>
      <title>Contextual Conversation Worker</title>
      <dc:creator>Weverton Souza</dc:creator>
      <pubDate>Sun, 14 Apr 2024 23:28:58 +0000</pubDate>
      <link>https://forem.com/tom-log/contextual-conversation-worker-19hj</link>
      <guid>https://forem.com/tom-log/contextual-conversation-worker-19hj</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/devteam/join-us-for-the-cloudflare-ai-challenge-3000-in-prizes-5f99"&gt;Cloudflare AI Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I created a conversational AI chatbot that uses Cloudflare Workers and KV storage to provide users with a persistent, intelligent conversational experience. By leveraging the power of Cloudflare's distributed network and serverless execution environment, the chatbot is highly available and responsive, ensuring a seamless interaction for users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Experience the AI chatbot in action here: &lt;a href="https://contextual-conversation-worker.pages.dev/" rel="noopener noreferrer"&gt;Deployed Chatbot&lt;/a&gt;&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%2Fuploads%2Farticles%2Fo9t4rhth97aze57omnna.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%2Fo9t4rhth97aze57omnna.png" alt="Chatbot image" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Code
&lt;/h2&gt;

&lt;p&gt;Explore the code repository here:&lt;br&gt;
&lt;a href="https://github.com/tom-log/contextual-conversation-worker" rel="noopener noreferrer"&gt;https://github.com/tom-log/contextual-conversation-worker&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;During the development process, I delved into the capabilities of Cloudflare Workers and AI models. I decided to focus on creating a chatbot that could store the context of a conversation, which introduced me to the use of Cloudflare KV storage system.&lt;/p&gt;

&lt;p&gt;The documentation provided by Cloudflare was instrumental in helping me understand how to integrate AI models with serverless functions. Throughout this project, I improved my understanding of asynchronous JavaScript and how to interact with external APIs in a serverless environment.&lt;/p&gt;

&lt;p&gt;What I'm particularly proud of is the chatbot's ability to maintain a conversation thread, which makes the interaction feel more natural and engaging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multiple Models and/or Triple Task Types&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For this project, I focused on a single task type, which is conversational AI. The model used was &lt;code&gt;@cf/meta/llama-2-7b-chat-int8&lt;/code&gt; for generating chatbot responses based on the conversation context stored in &lt;strong&gt;Cloudflare KV&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you'd like to share insights or pose any queries, the comments section awaits your valued input!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>cloudflarechallenge</category>
      <category>devchallenge</category>
      <category>ai</category>
    </item>
    <item>
      <title>Como configurar o n8n localmente com docker compose</title>
      <dc:creator>Weverton Souza</dc:creator>
      <pubDate>Thu, 05 Oct 2023 18:21:03 +0000</pubDate>
      <link>https://forem.com/tom-log/como-configurar-o-n8n-localmente-com-docker-compose-4n5h</link>
      <guid>https://forem.com/tom-log/como-configurar-o-n8n-localmente-com-docker-compose-4n5h</guid>
      <description>&lt;h2&gt;
  
  
  Clonar repositório n8n e configuração
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/n8n-io/n8n-docker-caddy.git

cd n8n-docker-caddy
docker volume create caddy_data
sudo docker volume create n8n_data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Editar arquivos de configuração
&lt;/h2&gt;

&lt;p&gt;nano .env&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Replace &amp;lt;directory-path&amp;gt; with the path where you created folders earlier
DATA_FOLDER=/home/weverton/Projetos/n8n-local2/n8n-docker-caddy

# The top level domain to serve from, this should be the same as the subdomain you created above
DOMAIN_NAME=localhost

# The subdomain to serve from
SUBDOMAIN=

# DOMAIN_NAME and SUBDOMAIN combined decide where n8n will be reachable from
# above example would result in: https://n8n.example.com

# Optional timezone to set which gets used by Cron-Node by default
# If not set New York time will be used
GENERIC_TIMEZONE=Europe/Berlin

# The email address to use for the SSL certificate creation
SSL_EMAIL=example@example.com

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

&lt;/div&gt;



&lt;p&gt;nano docker-compose.yml&lt;br&gt;
&lt;/p&gt;

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

services:
  caddy:
    image: caddy:latest
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - caddy_data:/data
      - ${DATA_FOLDER}/caddy_config:/config
      - ${DATA_FOLDER}/caddy_config/Caddyfile:/etc/caddy/Caddyfile

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - 5678:5678
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
      - NODE_ENV=production
      - WEBHOOK_URL=http://localhost/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    volumes:
      - n8n_data:/home/node/.n8n
      - ${DATA_FOLDER}/local_files:/files

volumes:
  caddy_data:
    external: true
  n8n_data:
    external: true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;nano caddy_config/Caddyfile&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localhost {
    reverse_proxy n8n:5678 {
      flush_interval -1
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configuração de pasta
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export DATA_FOLDER=/root/n8n-docker-caddy
mkdir -p /root/n8n-docker-caddy/.n8n
chown -R 1000:1000 /root/n8n-docker-caddy/.n8n
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Iniciar o Docker
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker compose up -d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;tutorial em vídeo: &lt;a href="https://youtu.be/fEP2r_V4Ehc?si=P46mNH-Jia61Drw8" rel="noopener noreferrer"&gt;https://youtu.be/fEP2r_V4Ehc?si=P46mNH-Jia61Drw8&lt;/a&gt;&lt;/p&gt;

</description>
      <category>n8n</category>
      <category>opensource</category>
      <category>docker</category>
    </item>
    <item>
      <title>Introdução ao CSS: Básico</title>
      <dc:creator>Weverton Souza</dc:creator>
      <pubDate>Fri, 23 Dec 2022 19:46:47 +0000</pubDate>
      <link>https://forem.com/tom-log/introducao-ao-css-basico-3344</link>
      <guid>https://forem.com/tom-log/introducao-ao-css-basico-3344</guid>
      <description>&lt;p&gt;O CSS é uma linguagem de estilo que é usada para definir como os elementos HTML são exibidos na página web. A sintaxe do CSS consiste em um seletor, seguido por um bloco de declaração. O seletor é usado para especificar qual elemento HTML deve receber o estilo e o bloco de declaração contém uma ou mais declarações que definem o estilo para o seletor. Por exemplo, se quisermos aplicar um estilo de fonte vermelha a todos os parágrafos em uma página web, nós usaríamos o seletor "p" e o bloco de declaração conteria a declaração "color: red". Isso faria com que todos os parágrafos na página ficassem vermelhos.&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%2Fuploads%2Farticles%2Fjzb9a4vh9vcon5l8v4wa.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%2Fjzb9a4vh9vcon5l8v4wa.png" alt="seletor de imagem CSS" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aqui está um exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O CSS oferece diversas maneiras de organizar e agrupar estilos. Uma dessas maneiras é usando seletores de classe e ID. Os seletores de classe permitem que você aplique estilos a elementos HTML que pertencem a uma determinada &lt;code&gt;classe&lt;/code&gt;, enquanto os seletores &lt;code&gt;ID&lt;/code&gt; permitem aplicar estilos a um elemento HTML específico.&lt;/p&gt;

&lt;p&gt;Para aplicar o estilo apenas a elementos HTML que tenham a classe "highlight", você poderia usar o seletor &lt;code&gt;.highlight&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.highlight&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este código irá aplicar a cor vermelha apenas a elementos HTML que tenham a classe "highlight".&lt;/p&gt;

&lt;p&gt;Você também pode usar um seletor de ID para aplicar o estilo apenas a um elemento HTML específico que tenha o ID especificado. Por exemplo, para aplicar o estilo apenas a um elemento HTML com o ID "header", você poderia usar o seletor &lt;code&gt;#header&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nf"&gt;#header&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este código irá aplicar a cor vermelha apenas ao elemento HTML com o ID "header".&lt;/p&gt;

&lt;p&gt;Agora para usar as classes ou ID, deve ser aplicada a qualquer elemento HTML usando o atributo class ou ID. Aqui está um exemplo de como usar a classe em um elemento HTML:&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;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"highlight"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Texto em vermelho&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para ID:&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;p&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"highlight"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Texto em vermelho&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para usar seletores aninhados, você precisará de elementos "pai" e "filho" correspondentes no HTML. Por exemplo, aqui está como o código HTML para uma div com a classe "container" que contém um parágrafo poderia ser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Este é um parágrafo dentro de um elemento div com a classe "container".&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E finalmente, aqui está como o código HTML para um link poderia ser:&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;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Este é um link.&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora falando sobre cores no CSS, podemos declarar de 3 formas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* cor azul */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ff0000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* hexadecimal */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;rgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c"&gt;/* RGB */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Esse trecho de código CSS contém três declarações que aplicam a cor a elementos HTML diferentes.&lt;/p&gt;

&lt;p&gt;A primeira declaração, &lt;code&gt;"p { color: blue; }"&lt;/code&gt;, aplica a cor azul a todos os elementos p (parágrafos) na página. A cor é especificada usando o nome da cor, "blue", que é um dos nomes de cores predefinidos pelo CSS.&lt;/p&gt;

&lt;p&gt;A segunda declaração, &lt;code&gt;"button { color: #ff0000; }"&lt;/code&gt;, aplica a cor vermelha a todos os elementos button (botões) na página. A cor é especificada usando um código hexadecimal, que é uma representação numérica da cor. Os códigos hexadecimais começam com um símbolo de hashtag (#) e são seguidos por três pares de dígitos hexadecimais que representam os valores de vermelho, verde e azul (RGB) da cor.&lt;/p&gt;

&lt;p&gt;A terceira declaração, "div { color: rgb(0, 255, 0); }", aplica a cor verde a todos os elementos div (divisões). A cor é especificada usando uma combinação de valores RGB (vermelho, verde e azul), que são usados para representar cores na web. O valor RGB (0, 255, 0) representa a cor verde.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sobre Margin, Padding e Bordas
&lt;/h2&gt;

&lt;p&gt;No CSS, as margens, o padding e as bordas são propriedades usadas para controlar o espaçamento e a aparência dos elementos HTML.&lt;/p&gt;

&lt;p&gt;As margens são o espaçamento externo em volta de um elemento, ou seja, o espaço entre o elemento e os elementos adjacentes. Elas podem ser controladas usando as propriedades margin-top, margin-right, margin-bottom e margin-left.&lt;/p&gt;

&lt;p&gt;O padding é o espaçamento interno em volta do conteúdo de um elemento, ou seja, o espaço entre o conteúdo e a borda do elemento. Ele pode ser controlado usando as propriedades padding-top, padding-right, padding-bottom e padding-left.&lt;/p&gt;

&lt;p&gt;As bordas são linhas que circundam um elemento e podem ser controladas usando as propriedades border-width, border-style e border-color.&lt;/p&gt;

&lt;p&gt;Essas propriedades permitem controlar o espaçamento e a aparência dos elementos de forma precisa e criar layouts mais atraentes e intuitivos.&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%2Ffm40yulf7qdbwyidzh6b.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%2Ffm40yulf7qdbwyidzh6b.png" alt="margin, padding e border no css" width="602" height="452"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Definindo margens */&lt;/span&gt;
&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;40px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* Definindo padding */&lt;/span&gt;
&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;padding-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;40px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* Definindo bordas */&lt;/span&gt;
&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;border-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste exemplo, as margens são definidas para um elemento p (parágrafo). A margem superior é definida como 10 pixels, a margem direita é definida como 20 pixels, a margem inferior é definida como 30 pixels e a margem esquerda é definida como 40 pixels. Isso cria um espaçamento externo em volta do elemento p.&lt;/p&gt;

&lt;p&gt;No segundo exemplo, o padding é definido para um elemento div (divisão). O padding superior é definido como 10 pixels, o padding direito é definido como 20 pixels, o padding inferior é definido como 30 pixels e o padding esquerdo é definido como 40 pixels. Isso cria um espaçamento interno em volta do conteúdo do elemento div.&lt;/p&gt;

&lt;p&gt;No terceiro exemplo, as bordas são definidas para um elemento button (botão). A largura da borda é definida como 2 pixels, o estilo da borda é definido como "solid" (sólido) e a cor da borda é definida como azul. Isso cria uma borda azul sólida em volta do elemento button.&lt;/p&gt;



&lt;h2&gt;
  
  
  Posicionando elementos na página
&lt;/h2&gt;

&lt;p&gt;No CSS, existem várias maneiras de controlar a posição de um elemento na página. As principais propriedades de posicionamento são:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;position:&lt;/code&gt; define se um elemento é posicionado de forma estática (o padrão), relativa, absoluta ou fixa.&lt;br&gt;
    top, right, bottom, left: usadas para posicionar um elemento em relação ao seu elemento pai, se a propriedade position for definida como relativa, absoluta ou fixa.&lt;br&gt;
&lt;code&gt;float:&lt;/code&gt;&lt;br&gt;
 faz com que um elemento flutue à esquerda ou à direita, permitindo que outros elementos ocorram ao seu redor.&lt;br&gt;
    &lt;code&gt;display:&lt;/code&gt; define como um elemento é exibido, por exemplo, como um bloco, uma linha ou uma tabela.&lt;/p&gt;

&lt;p&gt;Aqui estão alguns exemplos de código que mostram como usar as propriedades de posicionamento:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Posicionamento relativo */&lt;/span&gt;
&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* Posicionamento absoluto */&lt;/span&gt;
&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;40px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* Flutuação à esquerda */&lt;/span&gt;
&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;float&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;left&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* Exibição como bloco */&lt;/span&gt;
&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste exemplo, a propriedade position é definida como relativa para um elemento p (parágrafo). Isso significa que o elemento é posicionado de forma relativa ao seu posicionamento normal, ou seja, ele é deslocado 20 pixels para cima e 30 pixels para a esquerda em relação ao seu posicionamento normal.&lt;/p&gt;

&lt;p&gt;No segundo exemplo, a propriedade position é definida como absoluta para um elemento div (divisão). Isso significa que o elemento é posicionado de forma absoluta em relação ao elemento pai, ou seja, ele é posicionado 10 pixels a partir do topo, 20 pixels a partir da direita, 30 pixels a partir da parte inferior e 40 pixels a partir da esquerda do elemento pai.&lt;/p&gt;

&lt;p&gt;No terceiro exemplo, a propriedade float é definida como left para um elemento img (imagem). Isso faz com que a imagem flutue à esquerda, permitindo que outros elementos ocorram ao seu redor.&lt;/p&gt;

&lt;p&gt;No quarto exemplo, a propriedade display é definida como block para um elemento button (botão). Isso faz com que o botão seja exibido como um bloco, ocupando toda a largura disponível.&lt;/p&gt;

&lt;p&gt;Se você acha que minha ajuda foi útil, por favor, considere me ajudar com um valor simbólico. Qualquer valor será muito apreciado e me ajudará a continuar oferecendo ajuda, e-mail pix : &lt;code&gt;sec-code@proton.me&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/weverton" rel="noopener noreferrer"&gt;Se isso te ajudou de alguma forma, me ajude a tomar um café&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>css</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
