<?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: Digital.zgld</title>
    <description>The latest articles on DEV Community by Digital.zgld (@digitalzgld).</description>
    <link>https://dev.to/digitalzgld</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4069196%2F529b9874-1d89-4be5-b3f5-ca6406910b10.png</url>
      <title>DEV Community: Digital.zgld</title>
      <link>https://dev.to/digitalzgld</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/digitalzgld"/>
    <language>en</language>
    <item>
      <title>Practical Guide &amp; Cheatsheet: Introduction to Apache Kafka for Messaging</title>
      <dc:creator>Digital.zgld</dc:creator>
      <pubDate>Thu, 13 Aug 2026 02:35:03 +0000</pubDate>
      <link>https://dev.to/digitalzgld/practical-guide-cheatsheet-introduction-to-apache-kafka-for-messaging-3h8j</link>
      <guid>https://dev.to/digitalzgld/practical-guide-cheatsheet-introduction-to-apache-kafka-for-messaging-3h8j</guid>
      <description>&lt;p&gt;Hello, community! 🚀&lt;/p&gt;

&lt;p&gt;I just produced a focused guide on &lt;strong&gt;Introduction to Apache Kafka for Messaging&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Here is a quick preview of the practical content:&lt;/p&gt;




&lt;h1&gt;
  
  
  Introduction to Apache Kafka for Messaging
&lt;/h1&gt;

&lt;p&gt;Apache Kafka is an open-source distributed event streaming platform designed for high-throughput, fault-tolerant, and real-time data processing. Unlike traditional message brokers that delete messages immediately after delivery, Kafka acts as a distributed commit log. This allows messages to be persisted, replayed, and consumed by multiple independent systems simultaneously.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Concepts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Producer:&lt;/strong&gt; Applications that send (write) data to Kafka topics.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Consumer:&lt;/strong&gt; Applications that read (subscribe to) data from topics.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Topic:&lt;/strong&gt; A logical category or feed name to which records are published.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Partition:&lt;/strong&gt; Topics are divided into partitions for scalability and parallelism.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Broker:&lt;/strong&gt; A single Kafka server within a cluster.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Offset:&lt;/strong&gt; A unique identifier assigned to each record within a partition.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  1. Setting Up a Local Environment with Docker
&lt;/h3&gt;

&lt;p&gt;The most efficient way to start working with Kafka is via Docker Compose. This setup includes a Kafka broker and a Zookeeper instance (used for cluster management).&lt;/p&gt;

&lt;p&gt;Create a &lt;code&gt;docker-compose.yml&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;3'&lt;/span&gt;
&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;zookeeper&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;confluentinc/cp-zookeeper:latest&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;ZOOKEEPER_CLIENT_PORT&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2181&lt;/span&gt;
      &lt;span class="na"&gt;ZOOKEEPER_TICK_TIME&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2000&lt;/span&gt;

  &lt;span class="na"&gt;kafka&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;confluentinc/cp-kafka:latest&lt;/span&gt;
    &lt;span class="na"&gt;depends_on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;zookeeper&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;9092:9092"&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;KAFKA_BROKER_ID&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
      &lt;span class="na"&gt;KAFKA_ZOOKEEPER_CONNECT&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;zookeeper:2181&lt;/span&gt;
      &lt;span class="na"&gt;KAFKA_ADVERTISED_LISTENERS&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;PLAINTEXT://localhost:9092&lt;/span&gt;
      &lt;span class="na"&gt;KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;To start the cluster:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;






&lt;p&gt;💡 &lt;strong&gt;Want the complete guide, beautifully formatted in PDF and ready for everyday use?&lt;/strong&gt;&lt;br&gt;
👉 &lt;a href="https://tetorique.gumroad.com/l/hrvaal" rel="noopener noreferrer"&gt;Download the Complete PDF here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Leave your comments below if you have extra tips!&lt;/p&gt;

</description>
      <category>developers</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>Practical Guide &amp; Cheatsheet: Introduction to Apache Kafka for Messaging</title>
      <dc:creator>Digital.zgld</dc:creator>
      <pubDate>Thu, 13 Aug 2026 02:18:57 +0000</pubDate>
      <link>https://dev.to/digitalzgld/practical-guide-cheatsheet-introduction-to-apache-kafka-for-messaging-4lc0</link>
      <guid>https://dev.to/digitalzgld/practical-guide-cheatsheet-introduction-to-apache-kafka-for-messaging-4lc0</guid>
      <description>&lt;p&gt;Hello, community! 🚀&lt;/p&gt;

&lt;p&gt;I just produced a focused guide on &lt;strong&gt;Introduction to Apache Kafka for Messaging&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Here is a quick preview of the practical content:&lt;/p&gt;




&lt;h1&gt;
  
  
  Introduction to Apache Kafka for Messaging
&lt;/h1&gt;

&lt;p&gt;Apache Kafka is an open-source, distributed event streaming platform designed for high-throughput, fault-tolerant, and scalable data handling. Unlike traditional message brokers that push messages to consumers, Kafka operates on a "distributed commit log" model where producers append messages to topics, and consumers pull messages from those topics at their own pace.&lt;/p&gt;

&lt;p&gt;Kafka is widely used for real-time data pipelines, stream processing, log aggregation, and decoupling microservices in high-scale distributed systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Environment Setup with Docker Compose
&lt;/h2&gt;

&lt;p&gt;The most efficient way to start exploring Kafka is via Docker. This setup uses a single-node Kafka cluster with Zookeeper (though modern Kafka versions are moving toward KRaft, Zookeeper remains the industry standard for many existing deployments).&lt;/p&gt;

&lt;p&gt;Create a file named &lt;code&gt;docker-compose.yml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;3'&lt;/span&gt;
&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;zookeeper&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;confluentinc/cp-zookeeper:latest&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;ZOOKEEPER_CLIENT_PORT&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2181&lt;/span&gt;
      &lt;span class="na"&gt;ZOOKEEPER_TICK_TIME&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2000&lt;/span&gt;

  &lt;span class="na"&gt;kafka&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;confluentinc/cp-kafka:latest&lt;/span&gt;
    &lt;span class="na"&gt;depends_on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;zookeeper&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;9092:9092"&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;KAFKA_BROKER_ID&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
      &lt;span class="na"&gt;KAFKA_ZOOKEEPER_CONNECT&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;zookeeper:2181&lt;/span&gt;
      &lt;span class="na"&gt;KAFKA_ADVERTISED_LISTENERS&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;PLAINTEXT://localhost:9092&lt;/span&gt;
      &lt;span class="na"&gt;KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;To launch the cluster:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;






&lt;h2&gt;
  
  
  2. Managing Topics and Messaging via CLI
&lt;/h2&gt;

&lt;p&gt;Once the cluster is running, you can interact with it using the built-in CLI tools provided by the Confluent images.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a Topic
&lt;/h3&gt;

&lt;p&gt;Topics are categories used to organize messages. A topic is divided into &lt;strong&gt;partitions&lt;/strong&gt; for scalability.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &amp;lt;kafka-container-id&amp;gt; kafka-topics &lt;span class="nt"&gt;--create&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;💡 &lt;strong&gt;Want the complete guide, beautifully formatted in PDF and ready for everyday use?&lt;/strong&gt;&lt;br&gt;
👉 &lt;a href="https://tetorique.gumroad.com/l/dxxdqw" rel="noopener noreferrer"&gt;Download the Complete PDF here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Leave your comments below if you have extra tips!&lt;/p&gt;

</description>
      <category>developers</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>Practical Guide &amp; Cheatsheet: Nginx Security Configurations</title>
      <dc:creator>Digital.zgld</dc:creator>
      <pubDate>Thu, 13 Aug 2026 02:10:09 +0000</pubDate>
      <link>https://dev.to/digitalzgld/practical-guide-cheatsheet-nginx-security-configurations-49k5</link>
      <guid>https://dev.to/digitalzgld/practical-guide-cheatsheet-nginx-security-configurations-49k5</guid>
      <description>&lt;p&gt;Hello, community! 🚀&lt;/p&gt;

&lt;p&gt;I just produced a focused guide on &lt;strong&gt;Nginx Security Configurations&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Here is a quick preview of the practical content:&lt;/p&gt;




&lt;h1&gt;
  
  
  Nginx Security Hardening Guide
&lt;/h1&gt;

&lt;p&gt;Securing an Nginx web server is a fundamental requirement for protecting web applications from various threats, including Man-in-the-Middle (MitM) attacks, Cross-Site Scripting (XSS), Clickjacking, and Denial of Service (DoS). This guide provides professional-grade configurations to harden your Nginx instance.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Information Obfuscation and Minimization
&lt;/h2&gt;

&lt;p&gt;By default, Nginx reveals its version number in error pages and HTTP response headers. This information helps attackers identify specific vulnerabilities associated with your Nginx version.&lt;/p&gt;

&lt;p&gt;To minimize the information leaked, modify your &lt;code&gt;nginx.conf&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Edit /etc/nginx/nginx.conf&lt;/span&gt;

&lt;span class="k"&gt;http&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;# Hide the Nginx version number from error pages and headers&lt;/span&gt;
    &lt;span class="kn"&gt;server_tokens&lt;/span&gt; &lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;# Prevent the server from displaying default error pages&lt;/span&gt;
    &lt;span class="c1"&gt;# (Requires custom error pages to be defined in server blocks)&lt;/span&gt;
    &lt;span class="kn"&gt;error_page&lt;/span&gt; &lt;span class="mi"&gt;404&lt;/span&gt; &lt;span class="n"&gt;/404.html&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;error_page&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt; &lt;span class="mi"&gt;502&lt;/span&gt; &lt;span class="mi"&gt;503&lt;/span&gt; &lt;span class="mi"&gt;504&lt;/span&gt; &lt;span class="n"&gt;/50x.html&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;# ... rest of configuration&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Strengthening SSL/TLS Configurations
&lt;/h2&gt;

&lt;p&gt;Encryption is non-negotiable. Beyond simply enabling SSL, you must enforce modern protocols and secure cipher suites to prevent downgrade attacks.&lt;/p&gt;

&lt;p&gt;The following configuration implements HTTP to HTTPS redirection, enforces TLS 1.2/1.3, and implements HTTP Strict Transport Security (HSTS).&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
nginx
# Example Server Block for example.com

# 1. Redirect all HTTP traffic to HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
---

💡 **Want the complete guide, beautifully formatted in PDF and ready for everyday use?**
👉 [Download the Complete PDF here](https://tetorique.gumroad.com/l/jmgsc)

Leave your comments below if you have extra tips!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>developers</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>Guia Prático e Cheatsheet: Boas Práticas de Autenticação com JWT</title>
      <dc:creator>Digital.zgld</dc:creator>
      <pubDate>Thu, 13 Aug 2026 02:02:19 +0000</pubDate>
      <link>https://dev.to/digitalzgld/guia-pratico-e-cheatsheet-boas-praticas-de-autenticacao-com-jwt-269</link>
      <guid>https://dev.to/digitalzgld/guia-pratico-e-cheatsheet-boas-praticas-de-autenticacao-com-jwt-269</guid>
      <description>&lt;p&gt;Olá, comunidade! 🚀&lt;/p&gt;

&lt;p&gt;Acabei de produzir um material focado em &lt;strong&gt;Boas Práticas de Autenticação com JWT&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Aqui está uma prévia do conteúdo prático:&lt;/p&gt;




&lt;h1&gt;
  
  
  Guia de Boas Práticas de Autenticação com JWT
&lt;/h1&gt;

&lt;p&gt;O JSON Web Token (JWT) é um padrão (RFC 7519) que define uma maneira compacta e segura de transmitir informações entre partes como um objeto JSON. Em arquiteturas de microserviços e APIs REST, o JWT é amplamente utilizado para autenticação &lt;em&gt;stateless&lt;/em&gt;, eliminando a necessidade de o servidor armazenar sessões em memória. No entanto, sua implementação incorreta pode comprometer severamente a segurança da aplicação.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Escolha de Algoritmos e Assinatura Segura
&lt;/h2&gt;

&lt;p&gt;A segurança do JWT reside na sua assinatura. Nunca utilize o algoritmo &lt;code&gt;none&lt;/code&gt; e evite algoritmos fracos. Existem dois caminhos principais:&lt;/p&gt;

&lt;h3&gt;
  
  
  Algoritmos Simétricos (HS256)
&lt;/h3&gt;

&lt;p&gt;Utilizam uma única chave secreta para assinar e verificar o token. É ideal para comunicações internas onde o emissor e o verificador são o mesmo serviço.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Exemplo em Node.js usando a biblioteca 'jsonwebtoken'&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;jwt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;jsonwebtoken&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SECRET_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;JWT_SECRET&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Deve ser uma string longa e aleatória&lt;/span&gt;

&lt;span class="c1"&gt;// Gerando o token&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;jwt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sign&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;123&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="nx"&gt;SECRET_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;algorithm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;HS256&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;expiresIn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;15m&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Algoritmos Assimétricos (RS256)
&lt;/h3&gt;

&lt;p&gt;Utilizam um par de chaves: uma &lt;strong&gt;chave privada&lt;/strong&gt; para assinar e uma &lt;strong&gt;chave pública&lt;/strong&gt; para verificar. É a prática recomendada para sistemas distribuídos, onde o serviço de autenticação assina o token, mas diversos outros serviços (microserviços) precisam apenas validá-lo sem ter poder para criar novos tokens.&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
javascript
// Assinatura com RS256 (Chave Privada)
const token = jwt.sign({ userId: 123 }, privateKey, { algorithm: 'RS256', expiresIn: '15m' });
---

💡 **Quer o guia completo, bem formatado em PDF e pronto para usar no dia a dia?**
👉 [Baixe aqui o PDF Completo](https://gumroad.com/)

Deixem seus comentários caso tenham dicas extras!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>developers</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>Guia Prático e Cheatsheet: Criando Aplicações Serverless na AWS com Python</title>
      <dc:creator>Digital.zgld</dc:creator>
      <pubDate>Thu, 13 Aug 2026 01:57:46 +0000</pubDate>
      <link>https://dev.to/digitalzgld/guia-pratico-e-cheatsheet-criando-aplicacoes-serverless-na-aws-com-python-111i</link>
      <guid>https://dev.to/digitalzgld/guia-pratico-e-cheatsheet-criando-aplicacoes-serverless-na-aws-com-python-111i</guid>
      <description>&lt;p&gt;Olá, comunidade! 🚀&lt;/p&gt;

&lt;p&gt;Acabei de produzir um material focado em &lt;strong&gt;Criando Aplicações Serverless na AWS com Python&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Aqui está uma prévia do conteúdo prático:&lt;/p&gt;




&lt;h1&gt;
  
  
  Guia Prático: Criando Aplicações Serverless na AWS com Python
&lt;/h1&gt;

&lt;p&gt;O modelo &lt;em&gt;serverless&lt;/em&gt; permite que desenvolvedores foquem exclusivamente no código, delegando a gestão de servidores, escalonamento e alta disponibilidade para o provedor de nuvem. Na AWS, o ecossistema Python é extremamente robusto, utilizando principalmente o &lt;strong&gt;AWS Lambda&lt;/strong&gt; para computação, &lt;strong&gt;Amazon API Gateway&lt;/strong&gt; para exposição de endpoints e &lt;strong&gt;Amazon DynamoDB&lt;/strong&gt; para persistência de dados.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Desenvolvimento da Lógica com AWS Lambda
&lt;/h2&gt;

&lt;p&gt;O AWS Lambda é o coração da arquitetura serverless. A função deve sempre seguir uma assinatura específica: &lt;code&gt;handler(event, context)&lt;/code&gt;. O &lt;code&gt;event&lt;/code&gt; contém os dados de entrada (como o corpo de uma requisição HTTP) e o &lt;code&gt;context&lt;/code&gt; fornece informações sobre o tempo de execução.&lt;/p&gt;

&lt;p&gt;Abaixo, um exemplo de uma função que processa um JSON e retorna uma resposta formatada:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;lambda_handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Handler padrão para AWS Lambda.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Extraindo dados do corpo da requisição (event)
&lt;/span&gt;        &lt;span class="c1"&gt;# Em APIs via API Gateway, o body costuma vir como string
&lt;/span&gt;        &lt;span class="n"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loads&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;body&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;{}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="n"&gt;nome&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;nome&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Visitante&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;mensagem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Olá, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;nome&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;! Sua aplicação serverless está funcionando.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;statusCode&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;body&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
                &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;message&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;mensagem&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;success&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
            &lt;span class="p"&gt;})&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;statusCode&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;body&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;error&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)})&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  2. Infraestrutura como Código (IaC) com AWS SAM
&lt;/h2&gt;




&lt;p&gt;💡 &lt;strong&gt;Quer o guia completo, bem formatado em PDF e pronto para usar no dia a dia?&lt;/strong&gt;&lt;br&gt;
👉 &lt;a href="https://gumroad.com/" rel="noopener noreferrer"&gt;Baixe aqui o PDF Completo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deixem seus comentários caso tenham dicas extras!&lt;/p&gt;

</description>
      <category>developers</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>Guia Prático e Cheatsheet: Desenvolvimento de APIs REST com Django Rest Framework</title>
      <dc:creator>Digital.zgld</dc:creator>
      <pubDate>Thu, 13 Aug 2026 01:47:09 +0000</pubDate>
      <link>https://dev.to/digitalzgld/guia-pratico-e-cheatsheet-desenvolvimento-de-apis-rest-com-django-rest-framework-6ih</link>
      <guid>https://dev.to/digitalzgld/guia-pratico-e-cheatsheet-desenvolvimento-de-apis-rest-com-django-rest-framework-6ih</guid>
      <description>&lt;p&gt;Olá, comunidade! 🚀&lt;/p&gt;

&lt;p&gt;Acabei de produzir um material focado em &lt;strong&gt;Desenvolvimento de APIs REST com Django Rest Framework&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Aqui está uma prévia do conteúdo prático:&lt;/p&gt;




&lt;h1&gt;
  
  
  Desenvolvimento de APIs REST com Django REST Framework (DRF)
&lt;/h1&gt;

&lt;p&gt;O Django REST Framework (DRF) é um toolkit poderoso construído sobre o Django, projetado para facilitar a criação de APIs Web robustas, flexíveis e escaláveis. Ele abstrai a complexidade da serialização de dados, autenticação e roteamento, permitindo que o desenvolvedor foque na lógica de negócio.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Configuração do Ambiente e Projeto
&lt;/h2&gt;

&lt;p&gt;Para iniciar um projeto com DRF, primeiro é necessário instalar o Django e o framework. Recomenda-se o uso de um ambiente virtual (&lt;code&gt;venv&lt;/code&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Instalação via Terminal
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Criar e ativar ambiente virtual&lt;/span&gt;
python &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
&lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate  &lt;span class="c"&gt;# Linux/macOS&lt;/span&gt;
&lt;span class="c"&gt;# venv\Scripts\activate  # Windows&lt;/span&gt;

&lt;span class="c"&gt;# Instalar dependências&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;django djangorestframework

&lt;span class="c"&gt;# Iniciar projeto e aplicação&lt;/span&gt;
django-admin startproject setup &lt;span class="nb"&gt;.&lt;/span&gt;
python manage.py startapp core
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Configuração no &lt;code&gt;settings.py&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Você deve registrar o &lt;code&gt;rest_framework&lt;/code&gt; e a sua nova aplicação na lista de &lt;code&gt;INSTALLED_APPS&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# setup/settings.py
&lt;/span&gt;
&lt;span class="n"&gt;INSTALLED_APPS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;django.contrib.admin&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;django.contrib.auth&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;django.contrib.contenttypes&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;django.contrib.sessions&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;django.contrib.messages&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;django.contrib.staticfiles&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

    &lt;span class="c1"&gt;# Bibliotecas e Apps locais
&lt;/span&gt;    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;rest_framework&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;core&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  2. O Fluxo Principal: Model, Serializer e Viewset
&lt;/h2&gt;




&lt;p&gt;💡 &lt;strong&gt;Quer o guia completo, bem formatado em PDF e pronto para usar no dia a dia?&lt;/strong&gt;&lt;br&gt;
👉 &lt;a href="https://gum.co/demo_url" rel="noopener noreferrer"&gt;Baixe aqui o PDF Completo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deixem seus comentários caso tenham dicas extras!&lt;/p&gt;

</description>
      <category>developers</category>
      <category>programming</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
