Pular para o conteúdo principal

Postagens

Desenvolvimento e Tecnologia da Informação · desde 2008

Programação, tecnologia e outras conversas.

Rate limiting em Minimal APIs com o middleware nativo do .NET

Toda API exposta na internet, mais cedo ou mais tarde, recebe um cliente que resolve chamar o mesmo endpoint mil vezes por segundo. Pode ser um bug num loop de retry, um script mal escrito ou alguém testando a sorte. Se você não tem nenhum limite, quem paga a conta é o banco, o CPU e os outros usuários. A boa notícia é que, desde o .NET 7, o rate limiting vem pronto no framework. Não precisa de pacote extra nem de biblioteca de terceiros. Neste post eu monto um exemplo pequeno com Minimal APIs, limite por IP, resposta 429 com Retry-After e testes de integração. A ideia central O middleware trabalha com dois conceitos: o limiter (o algoritmo: janela fixa, janela deslizante, token bucket ou concorrência) e a partição (quem está sendo limitado). Sem partição, o limite é global, e um cliente abusivo derruba o serviço para todo mundo. Particionando por IP, cada cliente tem o seu próprio balde. Você registra uma policy com nome e depois aplica nos endpoints que precisam. Endpoints...
Postagens recentes

Black October: a IA acelerou a caça às falhas, e a conta chegou

Outubro é, oficialmente, o Mês da Conscientização em Cibersegurança. Em 2026, ele ganhou um apelido bem menos simpático: Black October . Em poucos dias, a gente viu uma falha crítica no PHP descoberta com ajuda de IA, uma autoridade certificadora saindo do mercado por causa de chaves privadas que dava para adivinhar e uma biblioteca popular de IA distribuindo malware pelo PyPI. Se você trabalha com software e não precisou atualizar nada nas últimas semanas, ou teve muita sorte ou não olhou direito. O que aconteceu O episódio mais barulhento foi o PHP2Shell . Pesquisadores da Wiz, com apoio da OpenAI e da Calif, encontraram falhas de segurança de memória no núcleo do PHP, ligadas ao jeito como a linguagem lida com erros fatais, principalmente estouro de memória. Uma requisição que falha pode deixar um estado interno corrompido, que outra requisição reaproveita depois. O resultado é execução remota de código sem autenticação, com nota de severidade até 9.2. O detalhe que mais chama a...

Aplicação Flask usando Nginx e Gunicorn

Aplicação Flask usando Nginx e Gunicorn Se você já desenvolveu uma aplicação Flask básica, sabe que o servidor de desenvolvimento embutido não é ideal para produção. Ele não é projetado para lidar com altos volumes de tráfego ou conexões simultâneas. Para tornar sua aplicação Flask mais robusta e pronta para produção, podemos usar o Gunicorn como servidor de aplicação e o Nginx como proxy reverso. Neste artigo, vamos adaptar o exemplo anterior ( Criando uma Aplicação CRUD com Flask, PostgreSQL e Docker ) para incluir o Nginx e o Gunicorn. O que são Nginx e Gunicorn? Gunicorn O Gunicorn (Green Unicorn) é um servidor de aplicação WSGI que roda aplicações Python como o Flask. Ele é eficiente e simples de configurar, lidando com múltiplas requisições ao mesmo tempo, algo que o servidor embutido do Flask não faz bem. Nginx O Nginx é um servidor web que atua como um proxy reverso. Ele recebe requisições HTTP e as encaminha ao Gunicorn. Além disso, o Nginx pode: Servir arquivos ...

Criando uma Aplicação CRUD com Flask, PostgreSQL e Docker

Criando uma Aplicação CRUD com Flask, PostgreSQL e Docker Neste guia, vamos criar uma aplicação básica que acessa um banco de dados PostgreSQL e realiza operações CRUD (Create, Read, Update, Delete). Vamos usar Flask e executar tudo com Docker. Sem estilos ou extras, apenas o essencial. Estrutura do Projeto crud-app/ |-- app/ | |-- app.py | |-- templates/ | | |-- index.html | | |-- edit.html |-- Dockerfile |-- requirements.txt |-- docker-compose.yml Passo 1: Dependências Crie um arquivo requirements.txt com as seguintes linhas: Flask==2.2.2 Flask-SQLAlchemy==3.0.2 psycopg2-binary==2.9.3 Werkzeug==2.2.2 Passo 2: Aplicação Flask Arquivo app/app.py : from flask import Flask, render_template, request, redirect, url_for from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # Configuração do banco de dados app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:password@db:5432/crud_db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db...

Criando sua Primeira Aplicação Web com Python e Docker

  Criando sua Primeira Aplicação Web com Python e Docker Hoje vamos fazer algo prático: criar uma aplicação web simples em Python usando Flask e executá-la dentro de um contêiner Docker. Se você não sabe exatamente o que é Docker ou Flask, não se preocupe! Vou explicar tudo de forma simples para que você consiga acompanhar sem problemas. O que é Docker? Docker é uma ferramenta que permite empacotar aplicações e suas dependências em contêineres, garantindo que elas funcionem da mesma forma em qualquer ambiente. Em outras palavras, com o Docker, você cria um ambiente isolado e padronizado para rodar suas aplicações. Como instalar o Docker Acesse o site oficial do Docker . Baixe e instale a versão apropriada para o seu sistema operacional (Windows, macOS ou Linux). Após a instalação, verifique se está tudo funcionando abrindo um terminal e executando: docker --version Se o Docker estiver instalado corretamente, ele vai exibir a versão instalada. O que é Flask? Flask é um m...

Python: Guia Técnico para Iniciantes e Desenvolvedores

  Python: Guia Técnico para Iniciantes e Desenvolvedores Se você quer mergulhar de vez no mundo do Python com uma abordagem mais técnica, este post é para você! Vamos falar sobre como configurar seu ambiente de desenvolvimento usando VS Code, entender a sintaxe da linguagem, aprender a trabalhar com classes, variáveis, métodos e explorar as principais estruturas de dados. No final, você terá uma base sólida para criar aplicações Python. Configurando o Ambiente no VS Code Para programar em Python, o VS Code é uma ótima escolha por ser leve, versátil e oferecer diversos recursos. Siga os passos abaixo para configurar: Instale o VS Code : Baixe e instale a versão mais recente do VS Code . Instale o Python : Baixe e instale o Python se ainda não o tiver. Extensão Python : No VS Code, acesse a aba de extensões e instale a extensão oficial "Python" da Microsoft. Configuração de Linting e Formatação : Recomenda-se instalar o pylint para linting e o black para formatação ...

C# - Notação Big O

Falaremos hoje da notação "Big O", ela não é exclusiva do C#, muito pelo contrário, pode e deve ser aplicado a qualquer tipo de algoritmo, mas como nossos exemplos serão com essa linguagem o classificamos dessa forma. A notação big O é usada na análise de algoritmos para descrever a complexidade de um algoritmo. A ideia é fornecer uma maneira de comparar algoritmos permitindo que os desenvolvedores escolham o mais eficiente. É uma forma de descrever o limite superior da complexidade de tempo ou espaço de um algoritmo em relação ao tamanho da entrada. A notação big O é denotada por "O(f(n))", onde "f(n)" é uma função que descreve o comportamento do algoritmo. A função "f(n)" geralmente é uma expressão matemática que envolve a entrada "n" (por exemplo, "n^2" ou "2^n"). Se o tempo de execução de um algoritmo é proporcional ao quadrado do tamanho da entrada, podemos dizer que sua complexidade de tempo é O(n^2). Isso s...