- 130
- 230 764
Daniel Jesus
Brazil
Приєднався 23 жов 2011
🚀 Bem-vindo ao canal Daniel Jesus!
Aqui você encontra conteúdo sobre Desenvolvimento Web, ASP.NET Core, Golang, e Arquitetura de Sistemas. Além disso, compartilho muitas dicas práticas e as últimas novidades do .NET e outras tecnologias.
Junte-se aos nerdzolas e coders e vamos explorar o mundo da tecnologia e aprimorar nossas habilidades juntos! 🤓👨💻👩💻
Aqui você encontra conteúdo sobre Desenvolvimento Web, ASP.NET Core, Golang, e Arquitetura de Sistemas. Além disso, compartilho muitas dicas práticas e as últimas novidades do .NET e outras tecnologias.
Junte-se aos nerdzolas e coders e vamos explorar o mundo da tecnologia e aprimorar nossas habilidades juntos! 🤓👨💻👩💻
.NET 9 - New Lock Object no C# 13: Controle de Concorrência Reimaginado!
Descubra o poder do New Lock Object no C# 13! Nesta aula, você vai aprender como essa nova funcionalidade transforma o controle de concorrência em cenários multithread, trazendo mais simplicidade e eficiência para o seu código. Vamos explorar o conceito, entender como ele se diferencia do tradicional lock, e implementar exemplos práticos para mostrar como você pode utilizá-lo no dia a dia do desenvolvimento. Não perca a chance de elevar suas habilidades em programação com C#!
Переглядів: 426
Відео
Rate Limiting no ASP.NET Core: Proteja Sua API com Controle de Requisições
Переглядів 55121 день тому
Neste vídeo, você vai aprender como configurar a estratégia Fixed Window no Rate Limiting Middleware do ASP.NET Core para proteger suas APIs. A Fixed Window é uma técnica que limita o número de requisições em uma janela de tempo fixa, ajudando a manter a estabilidade e evitar sobrecargas. Você vai ver: O que é a estratégia Fixed Window e quando utilizá-la. Como configurar o Rate Limiting no ASP...
O Que é Backend for Frontend (BFF)? Explicação Completa com Exemplo do SoundCloud
Переглядів 664Місяць тому
Neste vídeo, vamos entender o conceito de Backend for Frontend (BFF), uma abordagem que está ganhando cada vez mais espaço em arquiteturas modernas. Vou te mostrar como o BFF funciona na prática e como ele pode ser uma solução para melhorar a performance e a manutenção de sistemas que atendem múltiplos frontends, como web e mobile. Além disso, vamos explorar o exemplo real do SoundCloud, uma da...
Explorando a Funcionalidade RabbitMQ Sink no RavenDB (Banco NoSQL) : Integração Simplificada
Переглядів 215Місяць тому
Nesta aula, você vai conhecer a poderosa funcionalidade RabbitMQ Sink no RavenDB e entender como ela simplifica a integração entre sistemas de mensageria e bancos de dados NoSQL. Vamos explorar o conceito de Sink, configurá-lo para enviar registros diretamente ao RabbitMQ e mostrar, na prática, como você pode usar essa ferramenta para automatizar o fluxo de dados e construir aplicações reativas...
RavenDB (Banco NoSql) no Raspberry Pi: O Banco de Dados NoSQL Rodando com Alta Performance!
Переглядів 255Місяць тому
Imagina rodar um banco de dados NoSQL de alta performance com 4 milhões de documentos diretamente no seu Raspberry Pi! Com o RavenDB, isso é realidade. Neste vídeo, mostramos como esse poderoso banco de dados gerencia uma carga tão grande com eficiência, mesmo em um dispositivo compacto como o Raspberry. Ideal para projetos IoT e servidores leves, o RavenDB surpreende com seu desempenho e escal...
Aprenda HangFire do Zero: Agendamento de Tarefas no .NET | Passo a Passo Prático
Переглядів 1 тис.2 місяці тому
Neste vídeo, você vai aprender tudo sobre o HangFire, uma poderosa biblioteca de agendamento de tarefas em segundo plano no .NET. Vamos explorar desde a instalação, configuração básica, até a criação de uma API utilizando HangFire. Ideal para quem quer otimizar processos com execução automática de jobs no background. Não perca esta aula prática com exemplos e código explicativo. 💡 O que você va...
Go Lang para Iniciantes - Aula 3: Entendendo Variáveis no Go Lang
Переглядів 1333 місяці тому
Neste vídeo, vamos mergulhar no universo das variáveis em Go Lang! Você aprenderá desde os conceitos básicos até exemplos práticos, explorando como declarar, inicializar e utilizar variáveis em diferentes cenários. Se você está começando com Go Lang ou quer reforçar seus conhecimentos, este vídeo é para você. Inscreva-se no canal para mais conteúdos de qualidade sobre programação e desenvolvime...
Tratamento Global de Erros (Global Error Handling) em Minimal APIs com C#
Переглядів 5504 місяці тому
O Global Error Handling é uma prática essencial no desenvolvimento de APIs para garantir que, mesmo que um erro ocorra, a aplicação possa responder de forma controlada e segura, evitando a exposição de detalhes sensíveis ou implementações internas. Com um manipulador de erros global, você pode capturar exceções não tratadas e fornecer respostas consistentes e amigáveis ao usuário final. Sempre ...
Curso da Udemy - Apreendendo Arquitetura Cebola no .Net Core
Переглядів 2724 місяці тому
Curso da Udemy - Apreendendo Arquitetura Cebola no .Net Core Bem-vindo ao nosso curso abrangente sobre Arquitetura Cebola no .Net Core! Neste curso, você aprenderá a implementar uma arquitetura de software robusta e escalável, seguindo os princípios da Onion Architecture desenvolvida por Jeffrey Palermo. Ideal para desenvolvedores que desejam criar aplicações mais flexíveis e mantíveis, este cu...
Gerencie Seus Containers com Facilidade: Instalando e Configurando o Portainer no Docker
Переглядів 1,3 тис.4 місяці тому
Olá, pessoal! Bem-vindos ao Canal Daniel Jesus! No vídeo de hoje, vamos explorar o Portainer, uma ferramenta poderosa que simplifica a gestão de containers Docker. Você vai aprender passo a passo como instalar e configurar o Portainer no Docker para gerenciar seus containers de forma eficiente e intuitiva. Comandos: docker pull portainer/portainer-ce docker volume create portainer_data docker r...
Configurando e Lendo as Configurações do appsettings.json com IOptions no .NET Core
Переглядів 8965 місяців тому
Configurando e Lendo as Configurações do appsettings.json com IOptions no .NET Core
Aprenda a Mockar Dados com Moq em Testes Unitários - C# | Passo a Passo
Переглядів 8985 місяців тому
Aprenda a Mockar Dados com Moq em Testes Unitários - C# | Passo a Passo
Explorando o Scalar: Minhas Primeiras Impressões e Avaliação Completa!
Переглядів 6205 місяців тому
Explorando o Scalar: Minhas Primeiras Impressões e Avaliação Completa!
Será o FIM do Swagger no .NET 9 ? Conheça o Novo Scalar!
Переглядів 1,7 тис.5 місяців тому
Será o FIM do Swagger no .NET 9 ? Conheça o Novo Scalar!
Como Usar Polly para Garantir Resiliência em Aplicações .NET
Переглядів 1 тис.5 місяців тому
Como Usar Polly para Garantir Resiliência em Aplicações .NET
Go Lang para Iniciantes - Aula 2: Entendendo o Funcionamento dos Pacotes
Переглядів 2346 місяців тому
Go Lang para Iniciantes - Aula 2: Entendendo o Funcionamento dos Pacotes
Go Lang para Iniciantes - Aula 1 - Conhecendo o Go e Criando o seu primeiro App
Переглядів 7467 місяців тому
Go Lang para Iniciantes - Aula 1 - Conhecendo o Go e Criando o seu primeiro App
Gratidão Sem Limites: Celebrando Meu Título MVP da Microsoft com Vocês!
Переглядів 1847 місяців тому
Gratidão Sem Limites: Celebrando Meu Título MVP da Microsoft com Vocês!
Aprofunde-se Frozen Collections no .NET 8 com C#
Переглядів 6178 місяців тому
Aprofunde-se Frozen Collections no .NET 8 com C#
Conecte e Desenvolva de Qualquer Lugar em 10 Minutos com Dev Tunnels no Visual Studio 2022
Переглядів 5958 місяців тому
Conecte e Desenvolva de Qualquer Lugar em 10 Minutos com Dev Tunnels no Visual Studio 2022
NET 9 (Preview 1) - Explorando os novos métodos do Line
Переглядів 3588 місяців тому
NET 9 (Preview 1) - Explorando os novos métodos do Line
NET 9 (Preview 1) - Explorando as Melhorias do System.Text.Json
Переглядів 4439 місяців тому
NET 9 (Preview 1) - Explorando as Melhorias do System.Text.Json
Fundamentos e Melhores Práticas em APIs RESTful
Переглядів 9969 місяців тому
Fundamentos e Melhores Práticas em APIs RESTful
Aprenda a Usar BenchmarkDotNet e Otimize Seu Código .NET
Переглядів 8599 місяців тому
Aprenda a Usar BenchmarkDotNet e Otimize Seu Código .NET
Aprendendo Fluent Validation em C#: Dominando Validações de Forma Elegante e Eficiente
Переглядів 1,3 тис.10 місяців тому
Aprendendo Fluent Validation em C#: Dominando Validações de Forma Elegante e Eficiente
Domine o Builder Pattern: Guia Completo de Design Patterns em C# para .NET
Переглядів 1,3 тис.10 місяців тому
Domine o Builder Pattern: Guia Completo de Design Patterns em C# para .NET
Descubra as Últimas Inovações em Data Annotation com .NET 8 - C#
Переглядів 88911 місяців тому
Descubra as Últimas Inovações em Data Annotation com .NET 8 - C#
O Futuro Insano do .NET: Conheça o .NET Aspire (.Net 8) - C#
Переглядів 7 тис.Рік тому
O Futuro Insano do .NET: Conheça o .NET Aspire (.Net 8) - C#
Implementando Autenticação e Autorização com Tokens JWT (Json Web Token) - ASP.NET
Переглядів 7 тис.Рік тому
Implementando Autenticação e Autorização com Tokens JWT (Json Web Token) - ASP.NET
Criando Testes de Carga com NBomber em C# - .NET 7
Переглядів 1,1 тис.Рік тому
Criando Testes de Carga com NBomber em C# - .NET 7
Valeu Daniel! Estou em fase de deploy pra produção de uma API Spring e vou usar sua aula, obrigado!
Sinceramente? A usabilidade desse SCALAR é PÉSSIMA! Muito ruim. Mas como a galera tec adora novidade, exaltam qualquer coisa nova sem analisar criticamente os pontos fracos.
Quais são pontos críticos que tu levantou ?
Mas quando vc deu o ToList o resultado ja veio pra memória. É possivel usar o CountBy sem usar o ToList antes?
Ótima pergunta! Não é necessário usar o `ToList()` para utilizar o `CountBy` (ou métodos semelhantes) em muitas situações. O `ToList()` serve para materializar os dados, ou seja, trazer tudo para a memória. Isso só é útil se você realmente precisar manipular os dados já carregados ou fazer várias operações sobre eles. No caso de métodos como `CountBy`, eles podem ser aplicados diretamente em coleções do tipo `IEnumerable` ou `IQueryable` sem precisar materializar os dados antes. O LINQ trabalha de forma diferida, o que significa que ele só avalia a consulta no momento em que você realmente precisa do resultado. Então, se sua fonte de dados suportar essa operação (como consultas de banco usando Entity Framework, por exemplo), você pode usar o `CountBy` direto, sem precisar do `ToList()`. Só use o `ToList()` se for realmente necessário!
Nesse caso fixed ele limita independente da origem? Teria como controlar por IP?
Ótima pergunta, Leonardo! No caso do Fixed Window, por padrão, ele limita de forma global (independente da origem). Porém, é possível personalizar o comportamento para limitar por IP ou qualquer outro identificador, utilizando os PartitionKey no middleware de Rate Limiting. Você pode configurar isso com algo como: app.UseRateLimiter(new RateLimiterOptions { RejectionStatusCode = 429, GlobalLimiter = PartitionedRateLimiter.Create<HttpContext, string>(context => { // Aqui você pode usar o IP como chave var clientIp = context.Connection.RemoteIpAddress?.ToString() ?? "unknown"; return RateLimitPartition.GetFixedWindowLimiter(clientIp, _ => new FixedWindowRateLimiterOptions { PermitLimit = 10, // Limite de requisições Window = TimeSpan.FromMinutes(1), QueueProcessingOrder = QueueProcessingOrder.OldestFirst, QueueLimit = 2 // Quantidade de requisições na fila }); }) }); Com essa abordagem, você consegue controlar o Rate Limiting baseado no IP de quem faz as requisições. Se precisar de mais detalhes, só avisar!
Boa Dani!Assunto muito importante!
Geralmente eu limito o acesso ao recurso com semaphore, qual as diferenças para o do Lock ?
A diferença entre lock e Semaphore está na forma como eles controlam o acesso a recursos compartilhados: lock é como uma fila de acesso exclusivo: só uma thread por vez pode entrar na "área protegida". É simples e ideal para situações onde você precisa evitar que várias threads mexam no mesmo recurso ao mesmo tempo, garantindo exclusividade total. Já o Semaphore funciona como um controle de acesso com limite. Ele permite que várias threads entrem ao mesmo tempo, mas dentro de um número máximo definido. Por exemplo, se você quer permitir até 3 acessos simultâneos a um recurso, o Semaphore gerencia isso pra você. Resumindo: Use lock quando precisa que apenas uma thread execute algo de cada vez. Use Semaphore quando quer limitar o número de acessos simultâneos, mas permitindo que mais de uma thread trabalhe ao mesmo tempo.
Acredito que outra diferença também é que não tem como usar funções assíncronas dentro do Lock. Já no Semáforo, isso é possível
No mundo real, qual seria a sugestão para usar o numero de PermitLimit e QueueLimit para uma rota de autenticação da API, para evitar ataque DDOS ?
Ótima pergunta! Configurar PermitLimit e QueueLimit para proteger uma rota de autenticação contra ataques DDoS é crucial no mundo real. PermitLimit define o número máximo de requisições simultâneas que podem ser processadas. Para uma rota sensível como autenticação, é recomendado ajustar esse número com base na capacidade do seu servidor e no tráfego típico. Por exemplo, se seu servidor consegue lidar com 100 requisições simultâneas sem degradação, um PermitLimit de 50-70 pode ser razoável, garantindo alguma margem de segurança. QueueLimit especifica quantas requisições podem ser enfileiradas antes de serem descartadas. Aqui, a ideia é permitir alguma flexibilidade, mas sem sobrecarregar o sistema. Valores entre 20-50 podem funcionar bem, dependendo de quanto atraso você pode tolerar antes de descartar requisições. Estratégia Completa: Além dessas configurações, é importante também usar um rate limiter baseado em IP ou tokens para proteger ainda mais a rota. Considere adicionar serviços de firewall na camada da API ou serviços como Cloudflare para mitigar picos repentinos de tráfego malicioso. Esses números são exemplos gerais; ajustes específicos devem ser feitos conforme testes de carga e as necessidades de seu sistema.
Daniel, o HangFire possui algum tempo limite pra uso? Ele é gratuito ou pago a determinado momento?
Oi Daniel! O HangFire oferece uma versão gratuita que você pode usar sem limitações de tempo, mas existem algumas diferenças importantes entre a versão gratuita (Community) e as versões pagas (Pro e Enterprise). A versão gratuita é ótima para começar, especialmente se você estiver desenvolvendo projetos pessoais ou aplicações que não precisam de recursos avançados, como o suporte a filas distribuídas ou o dashboard aprimorado. As versões pagas, por outro lado, oferecem funcionalidades como maior escalabilidade, suporte técnico direto, e otimizações de desempenho que são úteis para aplicações empresariais ou de alta carga. Se precisar de funcionalidades mais robustas ou suporte profissional, você pode optar por uma das versões pagas. Portanto, você pode começar gratuitamente e expandir conforme suas necessidades crescem. Espero que isso tenha esclarecido!
@@DjesusNet Esclareceu sim, obrigado. Parabéns pelo vídeo!
Muito bom!!
Aula perfeita, muito obrigado por compartilhar!
Boa Dani!
Muito bom, parabéns!
Que video bom
Muito bom !
Muito interessante! Não conhecia e obrigado por compartilhar .
Explicação confusa demais
cara, uma duvida, nao seria interessante usar somente os atributos do objeto, tipo [Required(ErrorMessage="é obrigatorio")]
Patrick, ótima observação! A utilização de atributos como `[Required(ErrorMessage="é obrigatório")]` realmente é uma abordagem válida e funciona bem em cenários de validação simples. No entanto, em sistemas que demandam validações mais complexas, o **Fluent Validation** traz uma flexibilidade maior, pois permite definir regras condicionais, validações em cadeias, e até mesmo reutilizar regras entre diferentes contextos. Além disso, com o Fluent, conseguimos separar as preocupações de validação da modelagem dos objetos, o que pode tornar o código mais limpo e fácil de manter em longo prazo, especialmente em projetos maiores. Cada abordagem tem seu espaço, e a escolha depende muito da complexidade e da escalabilidade do projeto.
Muito bom o vídeo, queria mais vídeos em c# sobre o tema
Bora fazer
Oxiiii como que ganha uma camiseta dessa Dani? rs Conteúdo muito top mano, meus prabéns!
HangFire para ambiente produtivo não é pago?
Sim, Paulo !
Otimo video e conteúdo. Obrigado
Muito bom o vídeo mano, como sempre conteúdo de qualidade.
Bom video. Eu também rodei um nosql dentro do Raspberry Pi Zero W (512 mb RAM) . O Nosql de minha autoria chama -se CSV Comp DB. Eu fiz conexões TCP e RPC remotos .
Top demais, Daniel. Valeu! ;-)
Estou apaixonado pelo RavenDB ! Obrigado por compartilhar mestre ;)
Boa garotinho, RavenDB é vida. Conheço desde a pimeira versão, dos primórdios!! 😇😇 Se quiser trocar umas ideias a mais, vamos trocar contatos, por que nao? Abraço e parabéns pelo video!
Borá , fique a vontade de me add no LinkedIn ;)
Sim, Daniel. Fantástico, né? Realmente é inacreditável e a equipe do RavenDB está de parabéns. Pense que esse demo vai muito além de só performance. Pense na aplicabilidade para time series e outras diversas possibilidades de coleta de consulta assíncrona offline? Parabéns e obrigado pelo conteúdo!
brabo demais
Daniel pode me dizer qual nome desse app que voce tem para mostrar as setas vermelhas isso pode me ajudar a explicar melhor minhas ideias no trabalho para meus superiores
Eis a didática de milhões :D
Qual fonte você usa?
Bom dia tem na versão mais visual studio 2022? o passo a passo
Opa , tem no meu Médium ;)
Aonde eu compro é quanto custa ? E como consigo os scripts ?
Vende mercado livre , tudo encontra no GitHub
Excelente curso, super didático, só tenho a agradeçer!!
Parabéns pelo vídeo. Ajudou muito !
Faz o M haha. Parabéns pelo conteúdo!
Eli pode bloqueador som de carro
Não
Estava procurando um material sobre esse assunto show seu conteúdo
Faz um tempo que estava procurando um bom conteúdo de HangFire. Obrigado Daniel.
Tmj
Sou estudante de csharp, vejo que o Rider está ganhando um espaço grande no mercado para se trabalhar, pelas suas funcionalidades e versatilidades da IDE. Muitas pessoas gostam ainda do Visual Studio mas pelo jeito as coisas andam evoluindo de acordo com o tempo.
Criei um projeto esse Dockerfile veio junto ai não estava conseguindo rodar no console, detalhe, criei no Visual Studio 2022 ai apaguei esse Dockerfile e rodou npemalmente eo meu está com .Net 8.0
muito top!! fiz aqui mas o meu dashboard do health check nao mostra os icones, sabe dizer o pq?
Obrigado ! Poderia compartilhar o código para que eu possa dar uma olhada?
Tem que baixa o escrpt
Show de bola, vou tentar usar aqui baseado nesse seu exemplo, obrigado.
Quando eu compro de fabrica ele ja vem com bad USB pronto
Muito bom !! 🤩
ótimo vídeo man!
O recurso que eu gosto bastante é o Copilot chat é uma maravilha ajuda muito
Show
Conhece algum curso que se aprofunda mais nisso?
Vou lançar um em breve ;)
@@DjesusNet Maravilha! Me inscrevi e estarei no aguardo. É muito difícil encontrar materiais aprofundados de C# no Brasil.