Tecnologia e desenvolvimento

Autor: admin

A digitalização da economia brasileira

Nos últimos anos o Banco Central conseguiu criar um verdadeiro ambiente de evolução digital no país. Além do PIX, o Open Finance conseguiu transformar um ambiente fechado e antigo em algo novo, que consegue oferecer mais opções de ação e investimento aos clientes bancários brasileiros.

A Pandemia de longe ajudou a acelerar o processo, quando o Governo decidiu distribuir o auxilio emergencial a milhões de pessoas e com isso se viu obrigado a criar milhares de contas digitais no ambiente da Caixa para aqueles que não tinha renda no período de reclusão. Com isso, viu milhões de pessoas que nunca tiveram uma conta bancária com acesso a algo novo, que poderia ser revolucionário.

Com isso, o Governo implementou ideias. Criou um ambiente de empréstimo para MEIs, distribuiu o próprio auxilio em uma nova rodada e fez com o Auxilio Brasil se implementasse no processo, deixando ainda mais digital o ambiente de pessoas que não tem noção do que é o ambiente digital.

Somado a isso, o BC tem falado sobre o Real Digital, que seria uma moeda virtual baseada no conceito de blockchain, o que seria ainda mais revolucionário para a economia brasileira. Imagine um mundo onde o governo consegue mapear quem ganha mais e deve pagar mais impostos, quem ganha menos e deve pagar menos impostos e quem ganha médio e deve pagar impostos médios? Parece um sonho, mas nunca esteve tão perto de ser real.

No último dia 20/08 de 2022 no Macro Day 2022, o presidente do BC Roberto Campos Neto realizou uma palestra onde citou além do Real Digital e Pix sobre o que seria uma ideia de app único de consulta, abaixo uma imagem da ideia:

Quando vi a notícia no Facebook notei uma série de comentários que falava sobre “monopólio”, “controle financeiro” entre outras barbaridades de quem não entende nada de tecnologia e muito menos de como a sociedad tem evoluído nas últimas décadas. O processo que vem acontecendo no Brasil não é novo, nem é único. Querendo ou não, estamos evoluindo para não ter uma moeda física, o que pode ser o fim da inflação gerada por impressão de moeda e uma série de desvios e corrupção em sociedades ao redor do mundo. Ao mesmo tempo, a China tem demonstrado como esse processo é complexo.

O governo Chines tem impedido pessoas de comprar alguns itens, acessar sua carteira digital e até mesmo sair de casa nos últimos dias, visando um controle da pandemia em 2022, mesmo após vacinações em massa, deixando claro que o Governo Chines ve o processo de mudança no mundo como algo radical e que deve ser controlado até o último minuto, um verdadeiro exagero.

Mas como fugir do mundo digital? O Blockchain é de longe o conceito mais claro e limpo que a tecnologia nos forneceu e ao mesmo tempo pode ser o mais complexo. Ao mesmo tempo em que o Real digital pode te controlar, visto que o governo terá acesso a todo o seu dinheiro, pode ser também a revolução que falta para mudarmos algumas questões.

Imagine um mundo onde as pessoas podem se comunicar financeiramente em tempo real, onde o governo entende quem deve pagar mais impostos ou até mesmo um mundo onde corrupção seja algo controlado, quem fez é pego e paga por isso? Pode parecer um sonho, mas é a grande questão do Real digital. Por mais que gere controle, é de longe uma grande questão a ser analisada.

A ideia aqui é que você busque entender o que é blockchain, o que é o real digital e como o PIX é importante para o nosso futuro. Abaixo a palestra de Roberto Campos Neto no Macro Day 2022 da BTG Pactual, vale muito a pena assistir:

Abraços e até a próxima.

O que é HTTP?

Entenda o que é o protocolo HTTP que permite que as pessoas possam navegar na internet nos dias atuais.

A sigla HTTP significa: Hypertext Transfer Protocol, que basicamente possibilita que as pessoas posam inserir uma URL no navegador e então receber os dados trafegados na internet. Olhando de maneira mais simples, podemos dizer que é a comunicação entre uma URL e o servidor web que dispõe de uma resposta em relação a solicitação do usuário.

Os servidores web estão prontos para processar requisições desse tipo, logo o navegador que você está usando para acessar essa postagem tem essa característica, ou seja, para acessar esse site você solicitou o conteúdo ao servidor web pela URL do blog e então como resposta teve acesso a esse artigo.

Origem:

O termo nasceu em 1965, por Ted Nelson no Projeto Xanadu. Mas somente em 1995 Tim Berners-Lee e sua equipe realizou o cunho do que seria e é o HTTP em nossas vidas nos dias atuais. Em 1996 nascia a ideia do HTTP apenas com o método GET, ao longo dos anos e décadas a equipe de Tim melhorou o protocolo, criou novas regras e documentações.

O HTTP 1.1 foi atualizado em 1997, 199, 2007 e mais recentemente em 2014, destaque para a equipe que nasceu em 2007 para revisar e esclarecer o protocolo, formada por membros do HTTPbis.

Como funciona?

HTTP é um protocolo baseado em texto puro, que realiza processamento de informações de um lado de acordo com a resposta do servidor web. Digamos que você decide acessar um site, ao inserir a URL no navegador está solicitando ao servidor web daquela url o conteúdo do mesmo, como resposta você terá os dados do site, mas lembre-se que após a finalização dos dados existe uma desconexão onde o servidor web não está mais atrelado ao seu navegador, caso você queria ver outra página ou mesmo atualizar a atual terá que solicitar novamente um conteúdo via HTTP.

Abaixo um desenho da Mozilla sobre o conceito:

Diagrama de funcionamento do HTTP (Imagem: Reprodução/Mozilla)

Perceba que a internet está no meio do caminho entre o seu navegador e as diversas opções de servidores web do mercado. Isto porque a internet é apenas um meio fim para o conteúdo que consumimos diariamente, seja ele um site de noticias ou uma rede social.

Neste conceito, existe ainda o TCP/IP que é o conjunto de resposta que o servidor web devolve para a solicitação de uma URL. Logo, quando você abre um site pela URL, o sistema irá processar e receber através desse protocolo os dados e o IP contendo todo o conteúdo que será consumido.

Entenda que ao solicitar um conteúdo seu site deve estar preparado para oferecer a resposta de maneira rápida e eficiente, esse quesito envolve além de uma infraestrutura de qualidade, um site de qualidade que possa processar e consumir de mais rápida a resposta que o servidor web irá processar.

Em suma esse é o HTTP, neste artigo analisamos o que é esse protocolo e como ele processa informações diariamente em nossas vidas, dando a sensação de que estamos sempre nos comunicando entre grupo de amigos, mas na verdade estamos processando requisições em milhares de servidores webs e aguardando suas respostas.

Fontes:

Entenda o que é HTTP e o quão importante esse protocolo é para o seu site

Significado de HTTP

O que é HTTP

Usando RabbitMq com o plugin Mass Transit no .net 5 – Parte 2

Na primeira parte deste artigo criamos um producer capaz de enviar um produto para uma fila do RabbitMq usando o Mass Transit em .NET 5. Agora, vamos criar uma segunda aplicação que será responsável por consumir os dados enviados a essa fila.

Primeiro, é necessário que já tenhamos o docker rodando na máquina com a imagem do RabbitMq, caso não tenha essas informações, clique aqui e faça essa parte.

Após isso, vamos criar uma nova aplicação no Visual Studio 2019. Ela será igual a aplicação da parte 1.

Primeiro, vamos instalar os plugins:

  • Install-Package MassTransit -Version 7.2.1
  • Install-Package MassTransit.RabbitMQ -Version 7.2.1
  • Install-Package MassTransit.AspNetCore -Version 7.2.1

No Startup, vamos criar a configuração do RabbitMq:

services.AddMassTransit(cfg =>
{
     cfg.UsingRabbitMq((context, config) =>
     {
           config.Host("localhost", "/", h =>
           {
               h.Username("guest");
               h.Password("guest");
           });
         });
});

services.AddMassTransitHostedService();

Nesse passo, configuramos apenas os dados de acesso e host do RabbitMq. Precisamos criar o Consumer, que será responsável por consumir a fila e realizar alguma ação do nosso sistema. Vamos criar agora o ProductConsumer

public class ProductConsumer : IConsumer<Product>
    {
        private readonly ILogger<ProductConsumer> _logger;

        public ProductConsumer(ILogger<ProductConsumer> logger)
        {
            _logger = logger;
        }

        public Task Consume(ConsumeContext<Product> context)
        {
            try
            {
                var product = context.Message;
                product.DateUpdatePrice = DateTime.Now;
                _logger.LogInformation($"Product received: {product.Id}");
            }
            catch (Exception ex) { _logger.LogError("Error on try to consume product", ex); }
            return Task.CompletedTask;
        }
    }

Vamos analisar o que foi feito aqui. Primeiro, a classe criada herda de IConsumer, que é uma interface do Mass Transit. Ela será responsável por falar que as mensagens da fila são do objeto Product que criamos na aplicação de consumer. Neste ponto, precisamos criar a classe de Product nessa aplicação, mas detalhe ela precisa ter o mesmo namespace do outro projeto. Porque? O mass transit envia o arquivo com o namespace completo, logo se não tivermos o mesmo valor a mensagem irá se perder no RabbitMq.

Nossa Task Consume nada mais é do que um método que recebe uma mensagem ConsumeContext que tem um product enviado pelo Producer. Dentro do método podemos implementar nossa lógica de negócio, seja ela chamando outra aplicação ou até mesmo realizando um update no banco, fica a seu critério.

Após criar o nosso Consumer, precisamos voltar no Startup para inserir esse consumer no nosso ambiente:

 services.AddMassTransit(cfg =>
            {
                cfg.AddConsumer<ProductConsumer>();
                cfg.UsingRabbitMq((context, config) =>
                {
                    config.ReceiveEndpoint("product_queue", e =>
                    {
                        e.ConfigureConsumer<ProductConsumer>(context);
                    });

                    config.Host("localhost", "/", h =>
                    {
                        h.Username("guest");
                        h.Password("guest");
                    });
                });
});

Repare que criamos uma nova chamada para AddConsumer, informando nossa classe recém criada. Além disso, informamos o nome do Endpoint que está recebendo os dados e chamamos a classe de Consumer recebendo o context, que são as mensagens da Fila.

Pronto, temos nosso consumer pronto para receber os dados em tempo real. Essa solução atende a necessidade de criar um método assíncrono onde o usuário recebe algum produto, crédito ou até mesmo compra depois de um tempo.

Código completo no github: wenderdalber/MassTransit-RabbitMq-Consumer: A sample consumer queue RabbitMq using mass transit (github.com)

Usando RabbitMq com o plugin Mass Transit no .net 5 – Parte 1

Neste tutorial vamos criar uma aplicação em .net 5 que irá realizar o envio de um produto para uma fila no RabbitMq. Para isso, iremos utilizar um plugin chamado Mass Transit, que será capaz de enviar para o endpoint da fila os dados.

Ferramentas utilizadas:

  • Docker
  • RabbitMq
  • Visual Studio 2019
  • .Net 5

Primeiro, precisamos ter configurado em nossa máquina o docker. Caso você não tenha, clique neste link e acesse um tutorial completo sobre como configurar o mesmo.

Após esse processo, iremos criar um arquivo de docker-compose, que será responsável pela criação da nossa imagem do RabbitMq:

version: "3.2"
services:
  rabbitmq:
    image: rabbitmq:3-management-alpine
    container_name: 'rabbitmq'
    ports:
        - 5672:5672
        - 15672:15672
    volumes:
        - ~/.docker-conf/rabbitmq/data/:/var/lib/rabbitmq/
        - ~/.docker-conf/rabbitmq/log/:/var/log/rabbitmq
    networks:
        - rabbitmq_go_net

networks:
  rabbitmq_go_net:
    driver: bridge

Vamos salvar esse arquivo com o nome e a seguinte extensão: docker-compose.yml

Agora iremos abrir o Visual Studio 2019, é importante já ter configurado e instalado o .NET 5 na sua máquina, caso não tenha clique neste link e acesse um tutorial sobre como configurar o ambiente.

Com o Visual Studio aberto, vamos criar um novo projeto:

clique em Create a new project

Após esse processo, vamos selecionar o tipo de projeto:

Selecione o tipo ASP NET.Core Web Application

Vamos inserir o nome da nossa aplicação:

Definindo o nome do projeto

Selecionar a versão do .NET 5 e o tipo Web API:

Selecione a versão do .NET 5 e o tipo de aplicação

Após esse processo, vamos criar a classe de produto que será a nossa base de desenvolvimento:

    public class Product
    {
        public int Id { get;set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
        public DateTime DateUpdatePrice { get; set; }
    }

Neste momento, vamos instalar os pacotes do Mass Transit necessários para o desenvolvimento:

  • Install-Package MassTransit -Version 7.2.1
  • Install-Package MassTransit.RabbitMQ -Version 7.2.1
  • Install-Package MassTransit.AspNetCore -Version 7.2.1

Vamos configurar dentro do Startup o nosso ambiente do RabbitMq:

services.AddMassTransit(cfg =>
            {
                cfg.UsingRabbitMq((context, config) =>
                {
                    config.ReceiveEndpoint("product_queue", e => { });
                    config.Host("localhost", "/", h =>
                    {
                        h.Username("guest");
                        h.Password("guest");
                    });
                });
            });

            services.AddMassTransitHostedService();

Repare que estamos utilizando o services, que já existe dentro do ambiente de ConfigureServices da nossa classe Startup padrão. Nele, estamos falando que o endpoint que será utilizado é o product_queue e também estamos informando qual o host, username e password do RabbitMq iremos utilizar. Por último, estamos instanciando o AssMassTransitHostedService.

Iremos criar nossa Controller de Product, primeiro vamos realizar a instanciação de duas classes no construtor:

 private readonly ILogger<ProductController> _logger;
 private readonly IBusControl _bus;

        public ProductController(ILogger<ProductController> logger, IBusControl bus)
        {
            _logger = logger;
            _bus = bus;
        }

IBusControl é um componente do Mass Transit, será com ele que iremos realizar o Publish do nosso objeto para a fila. O ILogger é uma classe padrão que existe desde o aspnetcore 2.1 que nos ajuda a criar log do que aconteceu no nosso código. Iremos agora criar nossa Task:

[HttpPost]
public async Task<IActionResult> Post([FromBody] Product product)
{
            await _bus.Publish<Product>(new Product { Id = product.Id, Name = product.Name, Price = product.Price });
            var message = $"Message received. ProductId: { product.Id } in { DateTime.Now }";
            _logger.LogInformation(message);
            return Ok(message);
}

Recebemos o produto no body da chamada e realizamos então o envio par a fila, chamando o _bus do Mass Transit. Pronto, já temos nosso objeto na fila do RabbitMQ. No próximo post iremos realizar a configuração do Consumer, que irá consumir essa fila de tempos em tempos.

Para ter acesso ao código fonte desse tutorial: MassTransit-RabbitMq-Producer/MassTransit-RabbitMq-Producer at main · wenderdalber/MassTransit-RabbitMq-Producer (github.com)

Parte 2

Hello world!

Nada melhor que começar um blog de desenvolvimento com um Hello World.

Bom , meu nome é Wender Dalber e tenho 30 anos. Sou desenvolvedor desde 2012 (9 anos nessa luta), focado principalmente no mundo .NET desenvolvendo soluções na linguagem C#.

Decidi criar esse ambiente para compartilhar um pouco do que tenho vivenciado na minha vida como desenvolvedor, com soluções de API’s para integrações de sistemas.

Desde 2014 sou especialista em desenvolvimento de aplicações back-end para integrações. Já trabalhei com integrações de API com magento, pagar.me, caixa, banco do Brasil, sodexo e outros tipos de API’s. Além disso, tive uma passagem de 4 anos na Editora Santuário onde pude integrar via API o Magento e o ambiente TOTVS RM e Protheus, com integração direta de vendas, produtos e estoque de itens físicos.

Hoje sou desenvolvedor pleno na Level Up e atuo na integração de parceiros com o ambiente do Pin Hype, que realiza a entrega de Pins e resgate de crédito de títulos com os jogadores.

Espero que possamos ter um ambiente de troca muito receptivo por aqui.

Abraços.

© 2025 Wender Dalber

Theme by Anders NorenUp ↑