Pular para o conteúdo principal

Postagens

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...

C# - Primeiros passos com Docker

Hoje veremos como disponibilizar uma aplicação console criada com .Net a partir de um contêiner, mas antes vamos entender melhor o que é o Docker, o que exatamente estamos criando e ai sim criar nosso primeiro exemplo. O que é o Docker? " Docker é uma plataforma de software que permite criar, testar e implantar aplicativos em contêineres. Os contêineres são ambientes isolados que contêm todo o software necessário para executar um aplicativo, incluindo código, bibliotecas, dependências e configurações. Eles permitem que os aplicativos sejam executados de forma consistente em diferentes ambientes, como desenvolvimento, teste e produção. " Em resumo, com ele conseguimos empacotar aplicativos e dependências em contêineres portáteis e executá-los em qualquer máquina que possua o Docker instalado. Podemos dizer que temos os seguintes passos para esse processo: Criar uma imagem: possui um conjunto de informações para dizer como um container deve funcionar; Criar um contêiner: com ba...

PHP - Construtores e destrutores

Neste post, vamos mostrar como usar construtores e destrutores em scripts PHP para serem executados na linha de comando, incluindo exemplos práticos (você pode ver o que já publicamos sobre o PHP aqui ). Construtores em PHP Construtores são métodos especiais que são chamados automaticamente quando um objeto é criado. Eles geralmente são usados para inicializar as propriedades de um objeto. Por exemplo, a seguinte classe "Pessoa" tem um construtor que inicializa as propriedades "nome" e "idade": class Pessoa { public $nome; public $idade; public function __construct($nome, $idade) { $this->nome = $nome; $this->idade = $idade; } } Destrutores em PHP Destrutores são métodos especiais que são chamados automaticamente quando um objeto é destruído. Eles geralmente são usados para liberar recursos alocados pelo objeto, como conexões com banco de dados ou arquivos abertos. Por exemplo, a seguinte classe ...

C# - Design Patterns - Template Method

Olá! Seguindo a proposta de padrões de projeto com C#, falaremos hoje sobre o padrão comportamental Template Method.  Para ver outros padrões que já visitamos por aqui consulte esse link . Esse tema foi tratado de forma brilhante  aqui . Template Method Como dito anteriormente ele é um padrão comportamental que define etapas a serem seguidas, ou seja, com esse padrão podemos determinar etapas e a sequencia de execução delas, deixando a cargo de quem está implementantado como será a implementação dessas etapas. E que vantagem Maria leva? Bom, o grande diferencial aqui é poder ter um contrato que não só define o que deve ser feito mas também garante a sequencia a ser seguida, processos que seguem o mesmo roteiro porém de diferentes formas podem se beneficiar desse padrão: Frameworks fornecem métodos abstratos ou hooks para as subclasses personalizarem o comportamento; Algoritmos que têm uma estrutura comum mas detalhes diferentes, como ordenação, compilação ou  mesmo cripto...

PHP - Encapsulamento e modificadores de acesso

Neste post, vamos mostrar como usar encapsulamento e modificadores de acesso em PHP, incluindo exemplos práticos (você pode ver o que já publicamos sobre o PHP aqui ). Encapsulamento em PHP Encapsulamento é a prática de esconder o estado e comportamento interno de um objeto do mundo externo e fornecer uma interface pública para interagir com o objeto. Isso pode ser alcançado usando modificadores de acesso, como "public", "private" e "protected". Por exemplo, a seguinte classe "ContaBancaria" encapsula a propriedade "saldo": class ContaBancaria { private $saldo; public function __construct($saldoInicial) { $this->saldo = $saldoInicial; } public function depositar($valor) { $this->saldo += $valor; } public function sacar($valor) { ...

C# - Design Patterns - Chain of Responsibility

Olá a  todos! Seguindo a proposta de padrões de projeto com C#, falaremos hoje sobre o padrão comportamental  Chain of Responsibility . Para ver outros padrões que já visitamos por aqui consulte esse link . Esse tema foi tratado de forma brilhante  aqui . Chain of Responsibility O padrão de projeto Chain of Responsibility é um padrão de design comportamental que permite passar uma solicitação ao longo de uma cadeia de objetos até que um deles a trate. Cada objeto na cadeia tem a chance de tratar a solicitação. É útil quando há múltiplos objetos que podem responder a uma solicitação e você não sabe antecipadamente qual objeto será o responsável. No C#, a implementação deste padrão envolve a definição de uma interface para as solicitações, criação de classes concretas para tratar as solicitações e definição de uma lógica de encadeamento entre essas classes. Ao receber uma solicitação, cada objeto na cadeia verifica se pode tratá-la e, s...

PHP - Herança e polimorfismo

Neste post, vamos mostrar como usar herança e polimorfismo em PHP, incluindo exemplos práticos (você pode ver o que já publicamos sobre o PHP aqui ). Esses dois elementos que iremos tratar hoje dizem respeito a base do paradigma de orientação a objetos, entende-los é fundamental para criar boas aplicações com recursos reutilizáveis e também compreender recursos e complementos externos a nossa aplicação, sejam das linguagens de programação com as quais estamos lidando como também o uso de plugins e extensões de terceiros. Herança em PHP A herança é um mecanismo que permite que uma classe herde as propriedades e métodos de outra classe. Isso permite a reutilização de código e a organização hierárquica de classes. Por exemplo, a seguinte classe "Estudante" herda da classe "Pessoa" e adiciona a propriedade "matricula": class Estudante extends Pessoa {     public $matricula; } Polim...

C# - Design Patterns - Strategy

Olá! Seguindo a proposta de padrões de projeto com C#, falaremos hoje sobre o padrão comportamental Strategy. Para ver outros padrões que já visitamos por aqui consulte esse link . Esse tema foi tratado de forma brilhante aqui . Introdução É muito comum no dia dia nos depararmos com necessidades que executam ações de formas diferentes, ou seja, apesar do trabalho ser o mesmo a forma de execução é distinta, exemplos clássicos são a cobrança de impostos (ICMS e ISS são impostos porém cada um tem seu próprio cálculo), cálculos de descontos entre outros.  Nos exemplos citados anteriormente o que temos é uma mesma tarefa que, em determinado fluxo da aplicação deverá ter um comportamento com um resultado e em outro fluxo teremos comportamentos e resultados diferentes. Uma situação muito comum é simplesmente separar o fluxo em "ifs" e em cada bloco codificar o que precisamos, no exemplo dos impostos bastaria um:  if (...

C# - Design Patterns

Olá meus queridos! Hoje daremos inicio a uma série de postagens falando sobre Design Patterns e utilizaremos o C# para demonstra-los. Essa (e as próximas postagens) são uma iniciativa após o meu ingresso nos excelentes cursos da Alura sobre essa temática, porém lá a linguagem utilizada é Java. Minha intenção aqui é passar por cada padrão mostrando na prática como resolver problemas cotidianos que já foram pensados e resolvidos. Mas do que se trata "Design Patterns"? Segundo a Wikipédia "padrão de projeto (do inglês design pattern) é uma solução geral para um problema que ocorre com frequência dentro de um determinado contexto no projeto de software", ou seja, para a maioria dos "problemas" mais comuns que enfrentamos no dia a dia já existem soluções propostas, testadas e amplamente utilizadas. Desse modo evitamos "reinventar" a roda para problemas comuns e melhor, escrevemos código padronizado que qualquer pessoa que também conheça os padrões ir...

PHP - Classes e objetos

Seguindo nosso aprendizado sobre PHP hoje veremos um pouco sobre classes e objetos. Neste post, vamos mostrar como usar classes e objetos no PHP incluindo exemplos práticos (você pode ver o que já publicamos sobre o PHP aqui ). Classes e objetos foram introduzidos no PHP a partir da versão 4, lançada em 2000, sendo isso um dos principais motivos para sua popularidade crescente como linguagem de programação para desenvolvimento web. Antes disso, o PHP era principalmente utilizado como linguagem de script para a criação de páginas dinâmicas. Classes em PHP Uma classe é um modelo para a criação de objetos. Ela define as propriedades (estado) e métodos (comportamento) dos objetos criados a partir dela. Por exemplo, a seguinte classe "Pessoa" define as propriedades "nome" e "idade" e o método "imprimirDados": class Pessoa {     public $nome;     public $idade;     public func...

PHP - Variáveis e funções

Seguindo nossos primeiros passos com o PHP, neste post vamos mostrar como usar variáveis e funções em scripts PHP para serem executados na linha de comando, incluindo exemplos práticos (você pode ver o que já publicamos sobre o PHP aqui ). Variáveis em PHP As variáveis em PHP são declaradas usando o símbolo "$" seguido pelo nome da variável. O tipo de variável não precisa ser especificado, já que o PHP é uma linguagem de tipagem dinâmica. Por exemplo, o seguinte script atribui o valor "Hello World!" à variável $mensagem e realiza a impressão na tela: <?php     $mensagem = "Hello World!";     echo $mensagem; ?> Funções em PHP As funções em PHP são declaradas usando a palavra-chave "function" seguida pelo nome da função e parênteses. O corpo da função é escrito entre chaves. Por exemplo, o seguinte script define uma função chamada "imprimirMensagem" que impri...

C# - Tipos genéricos

A linguagem C# introduziu a funcionalidade de tipos genéricos com a versão 2.0, permitindo que desenvolvedores escrevam código mais flexível e reutilizável. Os tipos genéricos permitem que você escreva uma classe ou método que funciona com qualquer tipo de dados, em vez de estar preso a um tipo específico. Isso permite que o código seja escrito de forma mais genérica, o que aumenta a sua reutilização. Para entender melhor, vamos dar um exemplo de uma classe simples para gerenciar uma lista de objetos. Sem o uso de tipos genéricos, seria necessário escrever uma classe para cada tipo de objeto que desejássemos gerenciar. Por exemplo, uma classe "ListaDeInteiros", outra "ListaDeStrings", e assim por diante. Com o uso de tipos genéricos, é possível escrever uma única classe "Lista<T>" onde T é o tipo genérico. Isso significa que a classe pode ser usada para gerenciar uma lista de qualquer tipo de objeto, sem precisar escreve...

PHP - Criando scripts e os executando pela linha de comando

O PHP é uma linguagem de programação popular usada para desenvolvimento web, mas também pode ser usada para criar scripts que podem ser executados diretamente na linha de comando. Neste post, vamos mostrar como criar scripts PHP e como executá-los na linha de comando (você pode ver o que já publicamos sobre o PHP aqui ). Criando scripts PHP Para criar um script PHP, você precisa criar um arquivo com a extensão ".php". Isso pode ser feito com qualquer editor de texto, como o Bloco de Notas ou o Sublime Text. Dentro do arquivo, você pode escrever o código PHP desejado. Por exemplo, o seguinte script imprime "Hello World!" na tela: <?php     echo "Hello World!"; ?> Executando scripts PHP na linha de comando Para executar um script PHP na linha de comando, você precisa usar o interpretador PHP. No Linux e macOS, o interpretador PHP geralmente vem instalado por padrão e pode ser executado ...

PHP - Como instalar

PHP é uma linguagem de programação popular usada para desenvolvimento web. Neste post, vamos mostrar como instalar o PHP em sistemas operacionais Linux, macOS e Windows, além de como testar a instalação. Instalação no Linux A maneira mais fácil de instalar o PHP no Linux é usando o gerenciador de pacotes do sistema. Para fazer isso no Ubuntu, por exemplo, você pode usar o seguinte comando: sudo apt-get install php Isso instalará a versão mais recente do PHP disponível no repositório do Ubuntu. Se você deseja instalar uma versão específica, pode especificá-la no comando, como por exemplo: sudo apt-get install php7.4 Instalação no macOS Para instalar o PHP no macOS, você pode usar o gerenciador de pacotes Homebrew. Primeiro, você precisa instalar o Homebrew seguindo as instruções no site oficial. Em seguida, você pode usar o seguinte comando para instalar o PHP: brew install php Assim como no Linux, isso instalará a versão mais recente do PHP di...

Hangfire - processamento em background fácil no .NET

A necessidade de realizar uma tarefa em segundo plano é muito comum, seja para gravar um arquivo, enviar um e-mail, executar um processo de banco pesado, enfim, qualquer coisa que não deve "bloquear" o usuário no thread principal, e é aí que o Hangfire entra, ele recebe tarefas e as trata em filas realizando a execução em background e mais: As tarefas entram em uma fila e a execução ocorre na sequência; Uma execução só é considerada "falha" quando as tentativas já se esgotaram (por padrão são 10); Dá para criar uma tarefa simplesmente a colocando na fila; Dá para criar um fluxo de execução de tarefas constante dentro de um intervalo; Dá para agendar a execução de tarefas; Dá para condicionar a execução de tarefas após o sucesso de outra tarefa; Todo o fluxo é tratado em tabelas do próprio Hangfire, podendo ser gerido em vários bancos de dados (relacionais ou não); Os registros referentes as tarefas possuem um tempo limitado de vida, depois de concluidos são apagados...