Excelente vídeo! Apenas para acrescentar, é uma boa prática utilizar substantivos no plural quando criamos recursos da API. Ex: /api/categories ... /api/products Enfim, apenas um adendo. No mais, parabéns pelo canal!!!!!
Mandou demais nesse vídeo Fe, estou cursando Eng Software e trabalho como Estagiário de BackEnd, estou usando seus vídeos pra não só reforçar alguns pontos, como para me preparar para novas vagas. Sua didática e muito boa e esses desafios técnicos são uma puta mão na roda, traga mais sempre que possível. Parabéns
Pra quem teve problemas com a fila não recebendo mensagem, tente assinar o tópico pelo sqs e não do sns pro sqs, quando fiz o reverso as politicas de acesso da fila não atualizaram e as mensagens não chegavam mesmo tudo aparecendo certinho.
de longe, um dos melhores canais que pude conhecer de conteúdos sobre dev na prática e sobre carreira. Fê teu canal é essencial!! parabéns pelo empenho e pelo conteúdo excepcional que nos traz aqui.
tenho muita vontade de mexer com java, especialmente spring boot. legal q vc fez com java por justamente ter pouco conteudo em portugues... infelizmente minha situacao atual nao me permite ficar pulando de linguagem, mas algum dia quero brincar com isso sim.
Parabéns pelo video, Fernanda! Aprendi bastante coisas do mundo do Java com esse video (eu sou do mundo do Python e Go). Uma coisa, porém, que eu acrescentaria é o retorno das requests de update e delete de ambos objetos para que o retorno seja identificado com o http code 404 (Not found) quando o ID não existe, ao invés de uma exception genérica, pois isso está gerando um 500 (Internal Server Error), o que não deixa claro ao client o que está acontecendo de fato.
Estava dando uma procurada e parece que há uma annotation (@ResponseStatus) que pode ser posta em ambas exceptions (ProductNotFoundException e CategoryNotFoundException).
Que aula incrível!! Como Backend Pleno estou fascinado com a facilidade para você transmitir o assunto, tirou muitas duvidas minhas e me ajudou muito com o Cloud. Muitíssimo obrigado!!
Olá pessoal tudo bem? Parabéns Fernanda pelos seus conteúdos, têm sido bastantes úteis para nós que somos desenvolvedores(engenheiros de software). Gostaria de saber quais sites encontro esses desafios para eu poder fazê-los e praticar também. Um abraço!!
Ola, tudo bem? Enquanto a Fe nao faz um desafio desse ... existe um canal que eu gosto muito tambem chamado @amigoscode, e la tem algumas APIs utilizando Spring Security, inclusive tokenizacao com jwt... da uma olhada.
Oii Lari, posso trazer sim. Mas enquanto não trago, dá pra você dar uma olhada no vídeo que tem sobre Spring Security aqui no canal, espero que te ajude 💜 ua-cam.com/video/5w-YCcOjPD0/v-deo.html
Top conteúdo ! Uma dica na criação dos construtores dentro do intelliJ é usar o atalho alt+insert, assim você cria os construtores (principalmente quando existem muitos atributos dentro de um objeto) de forma muito mais rápida =] Além disso, talvez fosse interessante utilizar o modificador final em cada um dos parâmetros dentro do controller como boa pratica, já que ali cada um desses parâmetros tem apenas o objetivo de passar informações recebidas para o próximo passo (nesse caso o service) e não devem ser alterados na camada de controller.
Eu estou como backend pleno onde eu trabalho e estou fazendo um curso para aumentar meus conhecimentos de cloud, assim que terminar o curso vou pegar esse desagio e implementar, muito obrigado, ótimo conteúdo.
Fernanda (ou alguém), sabe se dá pra fazer esse projeto com IA, por exemplo jogar as necessidades do projeto e ele colocar todas as classes separadas e a gente só montar o projeto? Conhece alguma IA que leia isso ou tem que fazer meio que classe a classe mesmo e a IA só ajuda a programar junto contigo? Espero que tenha ficado bem explicado hehe, obrigado pelos vídeos, muito bom! :D
fiquei muito feliz em assistir este video sendo junior fullstack mas focado em java e ter entendido cada passo que vc fez, sendo que é uma vaga pleno, me sinto mais confiante em ir atras de vagas desafiadoras, obrigado fernanda!!!
Parabéns pelo conteúdo, mandou muito nessa! Se me permite comentar, dicas para quem for fazer o teste real (valendo uma vaga mesmo hehehe) eu consideraria: - Subiria um container docker de Mongo e Container de UI - Provisionaria os recursos AWS via local stack ou com IaC (terraform ou cloudformation) - Adicionaria um lifecycle rule no bucket do s3 para economizar no custo de armamento dos arquivos antigos - criaria uma DLQ para reprocessar os itens com falha na fila do SQS - Nos responses dos recursos de criação eu retornaria 201 ao invés de 200 - Faria os unitários pra fazer uma média 😅 - e o mais importante, um readme bonitão explicando tecnicamente os principais pontos e com diagramas de fluxo
Primeiramente parabéns pelo conteúdo, isso ajuda demais quem esta iniciando e quem é véio de código, da aquela relembrada em boas praticas. Percebi que vc usa o inteliJ e o vscode na sua maquina como IDE, mas vc já experimentou usar o Neovim?
Parabéns Fé continua com o trabalho. Sou de Angola e acomopanho todos os seus videos. No ano passado entendi o básico do Java com spring em apenas uma aula sua, és muito didática.
Que conteúdo top. Continua trazendo pra gente por favor (ainda mais em Java kk) que as lógicas de negócio ajudam bastante a gente criar/reestruturar as nossas APIs, abraço Fer!
Muito bom, consegui realizar todas as etapas, o final também me ajudou pois havia tido problemas com o SNS e a dica de conferir as permissões foi essencial!
Cai de paraquedas no seu vídeo e estou amando. É muito difícil achar esse tipo de conteúdo tão bem explicado. Ja ganhasse mais um inscrito. Aproveitando o tópico, você tem alguma dica pra quem quer começar a utilizar aws em conjunto com Java? Eu tentei começar um curso há alguns anos atrás, mas fiquei um pouco traumatizado com os valores que a aws me cobrou e agora sempre fico um pouco apreensivo quando quero aprender algo que envolva aws 😅
Dica: quando estiver criando algum component, controller ou service e com dependencias e estiver usando lombok, vc pode colocar essas dependências como final e usar a anotação @RequiredArgsConstructor. Assim ele vai gerar o construtor exato q vc precisa e vc n vai precisar ficar editando o construtor manualmente toda vez a adiciona uma nova dependência
Obrigada pela dicaa! Mas nesse caso eu não usei por que eu preciso de um construtor vazio, por isso o NoArgsConstructor, e precisava de um construtor que aceitasse um objeto do tipo CategoryDTO e não todos os parâmetros um a um, desestruturando o objeto DTO e salvando nas propriedades correta da entidade! Mas costumo usar bastante o RequiredArgsConstructor em outros casoss 😊
@@kipperdev Oi, acho q o youtube deletou meu comentario anterior por que tinha o link da PR :( Mas só pra deixar o registro, acho q não consegui me explicar bem no comentario anterior então decidi abrir a Pull Request para o seu repo. Desculpe a demora para responder, o UA-cam nunca me notifica de respostas aos meus comentarios. Parabéns pelo video!
Cara, seu conteúdo é muito bom, sério mesmo. Eu tento reproduzir os desafios que você posta mas em Python usando FastAPI que é o framework que eu tenho mais familiaridade. Mas vou tentar um dia arriscar usar o Spring pra ver como que é. Sucesso!
Obrigada Marcelo! Realmente, esqueci totalmente dessa possibilidade! Na parte 2 vou ajustar para evitar que a categoria dentro do produto fique desuatualizada!
Uma dúvida. Estou iniciando tecnólogo em análise de sistemas. Estou estudando Python assim como você fez no seu início. Porém você foi pra JS. A dúvida é. Porque migrou do Python para js e quais as diferenças de mercado de trabalho entre Python e js ( salário wise) . Grande abraço.
24:45 não seria mais prático e seguro tratar como bigdecimal no Java e serializar como string no mongodb? Assim vc fica protegida de variações de ponto flutuante e evita operações matemáticas ao recuperar e gravar informações monetárias. Abraço.
Que pena Daniel, mas não desanime! Bola pra frente, você vai conseguir! 🚀 E espero que o vídeo tenha ajudado a se preparar um pouco mais para os próximos desafios 😊
Foram necessário 15 dias pra fechar a playList. Entre ver e rever foi mais que necessario para agregar conhecimento e praticar o conteudo; se tive erro sim com certeza, mais são eles que vão lapitando os conhecimentos adquiridos.... todoConteudo() -> valeMuitoAPena(obrigado); ...Tem mais😃😃😃
Otimo conteudo como sempre. Uma duvida, nao seria melhor instanciar o CategoryService inves do CatergoryRepository dentro do ProductService? Edit: Ela corrigiu kkkkk 👏
Fiquei com uma dúvida pq não trabalhar com numeros com ponto flutuante, já vi essa abordagem em outras aplicações Java, existe algum motivo específico, trabalho com C# só uma dúvida mesmo 😅
Eu sei que vai depender do o que você está fazendo, se for um sistema que precisa de uma certa precisão, se usar tipo inteiro vai ter perda de dados, agora se utilizar números com ponto flutuante não.
essa prática visa garantir uma representação mais precisa e consistente de valores monetários, reduzindo as chances de imprecisões numéricas ao trabalhar com cálculos financeiros em uma aplicação Java Spring com MongoDB.
Quando se usa inteiro é pra armazenar valor monetário em moedas. Isso vem do passado onde aplicações financeiras tinham requisitos restritos sobre cálculos e precisão. Calcular valor monetário em moedas remove o erro de ponto flutuante. O arredondamento pode causar perdas consideráveis em alguns casos.
Oie Fer :). Uma dúvida. Pq não enviar o evento diretamente para o SQS, em vez de enviar para o SNS e depois para o SQS? Aqui onde trabalho enviamos diretamente para o SQS
acredito que foi para deixar mais genérico, estando num tópico SNS isso permite que a mensagem seja distribuída para outros lugares além da fila criada no SQS
Oii Regis O principal motivo de usarmos o SNS, é para dar mais flexibilidade para a nossa arquitetura. Quando enviamos diretamente para o SQS acabamos acoplando as duas estruturas, mesmo que elas fiquem async. E se a gente quiser que, a partir de agora, a nossa aplicação avise não só esse serviço, mas outros 5 também? Ou quem sabe outros 15? Tendo o SNS configurado, nada muda, apenas cadastramos os nossos novos SQS's no nosso SNS e pronto. Se não tivermos ele configurado, teríamos que enviar 5 requisições para 5 SQS's diferentes. Além disso, o SNS nos permite não só fazer envios ao SQS, mas também fazer envios de emails, mensagens de telefone, entre várias outras coisas. Caso isso virasse um requisito na aplicação, poderíamos facilmente aplicá-lo!
Legal. Mas o principal fator do desafio que eu julgo é: "Keep in mind that this is an online product catalog, which means there will be multiple requests for editing items/categories per second, as well as accessing the catalog search endpoint.". Geralmente isso passa batido pela maioria das pessoas. Espero que no próximo vídeo você mostre como lidar com concorrência.
@@matheusrmartinezexato. Como o exercicío é simples e não envolve transações complexas e que poderiam ter chance de falha alta, Optimistic seria sensacional. Acredito que hoje o que mais faz ter gente reprovada nas entrevistas na empresa que trabalho é um conhecimento extremamente baixo em concorrência. Todo pleno já deveria saber pelo menos o básico.
nao seria melhor uar a FIFO? imaginando um cenario onde multiplos catalogo sofreram alteracoes e um catalogo em particular recebeu mais de uma alteracao acredito q exista a possibilidade do json desse catalogo que fica na s3 nao ser atualizado com a versao da ultima alteracao dele. Se isso ocorrer todos os requets posteriores para buscar esse catalogo viriam com o dado desatualizado até que esse catalogo fosse atualizado novamente pois ai seria emitida outra msg para SQS e o json da S3 seria atualizado.
Nesse caso o teste fala ali que além de publicar no SQS as rotas de crud atualizam direto o banco, o consumidor para gerar o catalogo não puxa a informação do s3 para gerar um próximo catalogo e sim puxa diretamente do banco, como no diagrama. O catalogo é mais para o front-end consumir
Muito bom o conteúdo Fernanda, me surgiu uma duvida, como seria a questão de segurança nas keys da aws caso a gnt queira colocar um projeto assim no nosso git?
Obrigadaa! Como o @ilikecats5396 falou, ai é legal a gente usar variaveis de ambiente. E ai a gente carrega essas vars de ambiente no nosso application.properties. Algo tipo isso: aws.secretKey=${AWS_SECRETET_KEY}
Ótimo vídeo! O tenso de crud backend é a repetição... Faz a entity, DTO, repository, service etc. Sempre a mesma coisa! Esse até tem umas peculiaridades. Mas ultimamente eu estou numa de gerar o início ali com alguma IA e só fazer os ajustes. Não recomendo isso para iniciantes hein jovens? rs
@@sharewareX Sim. Mas vc tem que enteder 100% o que está sendo feito, já que a IA delira as vezes. E se não entender algo , é bom pedir para ela explicar.
Por que da decisão de usar inteiro para o preço? Não me parece uma boa escolha pensando no longo prazo… por exemplo tu pode ter por qualquer motivo no futuro mudar teu requisito de precisão monetária de 2 casas decimais para 4 casas (o que seria comum em sistemas tributários ou financeiros). Outro ponto pensando numa evolução tu tá tirando responsabilidade da precisão monetária do banco e colocando na aplicação, se por exemplo outra pessoa for construir relatórios em cima do dados ela terá uma complexidade extra de tratar esse número sendo que essa regra estará apenas no código e na tua cabeça e quem for tratar esse dado pode não ter esse informação… enfim pode explicar qual foi o racional? (Não diga performance pois não faz sentido depois dos anos 2000 kkk)
Ela simplesmente converteu o valor pra menor unidade do dinheiro, no caso 1 centavo. Isso não coloca nenhuma restrição quanto a precisão já que n estamos trabalhando com ponto flutuante. É bem comum operar com centavos em aplicações financeiras.
Parabens otimo video. Depois vou assistir ate o final. Mais gostei da implementação. Tu nao e daquelas tipos de pessoa que para tudo quer utilizar a arquitetura hexagonal.
Excelente vídeo!
Apenas para acrescentar, é uma boa prática utilizar substantivos no plural quando criamos recursos da API. Ex: /api/categories ... /api/products
Enfim, apenas um adendo. No mais, parabéns pelo canal!!!!!
Mandou demais nesse vídeo Fe, estou cursando Eng Software e trabalho como Estagiário de BackEnd, estou usando seus vídeos pra não só reforçar alguns pontos, como para me preparar para novas vagas. Sua didática e muito boa e esses desafios técnicos são uma puta mão na roda, traga mais sempre que possível.
Parabéns
Obrigada Marcos!! Fico feliz que gosta desse tipo de vídeo, pode deixar que vou trazer mais sim!
E boa sorte na facul e estágio! 💜
Pra quem teve problemas com a fila não recebendo mensagem, tente assinar o tópico pelo sqs e não do sns pro sqs, quando fiz o reverso as politicas de acesso da fila não atualizaram e as mensagens não chegavam mesmo tudo aparecendo certinho.
Valeu! Deu certo desse jeito.
Hahah deu certo! Valeuu
de longe, um dos melhores canais que pude conhecer de conteúdos sobre dev na prática e sobre carreira. Fê teu canal é essencial!! parabéns pelo empenho e pelo conteúdo excepcional que nos traz aqui.
tenho muita vontade de mexer com java, especialmente spring boot. legal q vc fez com java por justamente ter pouco conteudo em portugues... infelizmente minha situacao atual nao me permite ficar pulando de linguagem, mas algum dia quero brincar com isso sim.
Parabéns pelo video, Fernanda! Aprendi bastante coisas do mundo do Java com esse video (eu sou do mundo do Python e Go). Uma coisa, porém, que eu acrescentaria é o retorno das requests de update e delete de ambos objetos para que o retorno seja identificado com o http code 404 (Not found) quando o ID não existe, ao invés de uma exception genérica, pois isso está gerando um 500 (Internal Server Error), o que não deixa claro ao client o que está acontecendo de fato.
Estava dando uma procurada e parece que há uma annotation (@ResponseStatus) que pode ser posta em ambas exceptions (ProductNotFoundException e CategoryNotFoundException).
Que aula incrível!! Como Backend Pleno estou fascinado com a facilidade para você transmitir o assunto, tirou muitas duvidas minhas e me ajudou muito com o Cloud. Muitíssimo obrigado!!
Olá pessoal tudo bem? Parabéns Fernanda pelos seus conteúdos, têm sido bastantes úteis para nós que somos desenvolvedores(engenheiros de software).
Gostaria de saber quais sites encontro esses desafios para eu poder fazê-los e praticar também. Um abraço!!
Oii Fê, você poderia fazer um vídeo resolvendo um desafio em Java Spring utilizando Spring Security? Vai me ajudar bastante no meu TCC! 💖
Ola, tudo bem? Enquanto a Fe nao faz um desafio desse ... existe um canal que eu gosto muito tambem chamado @amigoscode, e la tem algumas APIs utilizando Spring Security, inclusive tokenizacao com jwt... da uma olhada.
Oie @larissanunes 2838, veja na playlist.
ela ja fez, da uma olhada no canal
Oii Lari, posso trazer sim. Mas enquanto não trago, dá pra você dar uma olhada no vídeo que tem sobre Spring Security aqui no canal, espero que te ajude 💜
ua-cam.com/video/5w-YCcOjPD0/v-deo.html
Top conteúdo ! Uma dica na criação dos construtores dentro do intelliJ é usar o atalho alt+insert, assim você cria os construtores (principalmente quando existem muitos atributos dentro de um objeto) de forma muito mais rápida =]
Além disso, talvez fosse interessante utilizar o modificador final em cada um dos parâmetros dentro do controller como boa pratica, já que ali cada um desses parâmetros tem apenas o objetivo de passar informações recebidas para o próximo passo (nesse caso o service) e não devem ser alterados na camada de controller.
Eu estou como backend pleno onde eu trabalho e estou fazendo um curso para aumentar meus conhecimentos de cloud, assim que terminar o curso vou pegar esse desagio e implementar, muito obrigado, ótimo conteúdo.
Poderia me informar qual o curso você está fazendo sobre cloud?
@@ruhtra6865 Eu comprei um curso na udemy mesmo, para ter uma introdução mais teorica
@@ruhtra6865 o curso se chama certificação Amazon AWS Cloud Practitioner CLF - C02(2024)
Como sempre entregando conteúdos de altíssima qualidade. Já dei o meu like!
Obrigadaa Renan! 💜💜
Fernanda (ou alguém), sabe se dá pra fazer esse projeto com IA, por exemplo jogar as necessidades do projeto e ele colocar todas as classes separadas e a gente só montar o projeto? Conhece alguma IA que leia isso ou tem que fazer meio que classe a classe mesmo e a IA só ajuda a programar junto contigo? Espero que tenha ficado bem explicado hehe, obrigado pelos vídeos, muito bom! :D
Oi , poderia lista os cursos de java q vc ja fez/faz? Obg
up
Eu recomendo um aqui do UA-cam da Devdojo - ua-cam.com/play/PL62G310vn6nFIsOCC0H-C2infYgwm8SWW.html
Queria saber tbm
@@franciscoalexandrepaixaodo7929perguntaram pra Fernanda e não pra esse aí!
Da uma procurada nos cursos da Loiane Groner tbm. Tem aulas no youtube, livros tbm.
Estou replicando em NodeJs com Nest. Conteúdo muito bom, parabéns! Fiquei até mais motivado a estudar mais com seus vídeos!
tem repo? to pensando em fazer isso pra praticar
fiquei muito feliz em assistir este video sendo junior fullstack mas focado em java e ter entendido cada passo que vc fez, sendo que é uma vaga pleno, me sinto mais confiante em ir atras de vagas desafiadoras, obrigado fernanda!!!
Essa mina é braba que só. Parabéns Fernanda.
Você tem uma didática muito boa
06:33 cache com redis ou algo assim nao serviria tambem?
Parabéns pelo conteúdo, mandou muito nessa! Se me permite comentar, dicas para quem for fazer o teste real (valendo uma vaga mesmo hehehe) eu consideraria:
- Subiria um container docker de Mongo e Container de UI
- Provisionaria os recursos AWS via local stack ou com IaC (terraform ou cloudformation)
- Adicionaria um lifecycle rule no bucket do s3 para economizar no custo de armamento dos arquivos antigos
- criaria uma DLQ para reprocessar os itens com falha na fila do SQS
- Nos responses dos recursos de criação eu retornaria 201 ao invés de 200
- Faria os unitários pra fazer uma média 😅
- e o mais importante, um readme bonitão explicando tecnicamente os principais pontos e com diagramas de fluxo
exato
Primeiramente parabéns pelo conteúdo, isso ajuda demais quem esta iniciando e quem é véio de código, da aquela relembrada em boas praticas. Percebi que vc usa o inteliJ e o vscode na sua maquina como IDE, mas vc já experimentou usar o Neovim?
Parabéns Fé continua com o trabalho. Sou de Angola e acomopanho todos os seus videos. No ano passado entendi o básico do Java com spring em apenas uma aula sua, és muito didática.
Que conteúdo top. Continua trazendo pra gente por favor (ainda mais em Java kk) que as lógicas de negócio ajudam bastante a gente criar/reestruturar as nossas APIs, abraço Fer!
Muito bom, consegui realizar todas as etapas, o final também me ajudou pois havia tido problemas com o SNS e a dica de conferir as permissões foi essencial!
Cai de paraquedas no seu vídeo e estou amando. É muito difícil achar esse tipo de conteúdo tão bem explicado. Ja ganhasse mais um inscrito. Aproveitando o tópico, você tem alguma dica pra quem quer começar a utilizar aws em conjunto com Java? Eu tentei começar um curso há alguns anos atrás, mas fiquei um pouco traumatizado com os valores que a aws me cobrou e agora sempre fico um pouco apreensivo quando quero aprender algo que envolva aws 😅
LocalStack
Representa os DEV's Java do Brasil! Parabéns.
Ahahaha obrigada demais!! 💜
parabéns pelo vídeo, só fala mais sobre o lance do price, de onde vc tirou essa estrategia de x100?
Dica: quando estiver criando algum component, controller ou service e com dependencias e estiver usando lombok, vc pode colocar essas dependências como final e usar a anotação @RequiredArgsConstructor. Assim ele vai gerar o construtor exato q vc precisa e vc n vai precisar ficar editando o construtor manualmente toda vez a adiciona uma nova dependência
Obrigada pela dicaa!
Mas nesse caso eu não usei por que eu preciso de um construtor vazio, por isso o NoArgsConstructor, e precisava de um construtor que aceitasse um objeto do tipo CategoryDTO e não todos os parâmetros um a um, desestruturando o objeto DTO e salvando nas propriedades correta da entidade!
Mas costumo usar bastante o RequiredArgsConstructor em outros casoss 😊
@@kipperdev Oi, acho q o youtube deletou meu comentario anterior por que tinha o link da PR :(
Mas só pra deixar o registro, acho q não consegui me explicar bem no comentario anterior então decidi abrir a Pull Request para o seu repo.
Desculpe a demora para responder, o UA-cam nunca me notifica de respostas aos meus comentarios.
Parabéns pelo video!
Cara, seu conteúdo é muito bom, sério mesmo. Eu tento reproduzir os desafios que você posta mas em Python usando FastAPI que é o framework que eu tenho mais familiaridade. Mas vou tentar um dia arriscar usar o Spring pra ver como que é.
Sucesso!
Que vídeo maravilhoso!! Obrigada por compartilhar conteúidos tão bons gratuitamente! Sou muito fã sua!
Boa noite, muito obrigado pelo material. 👏👏
Ela faz parecer fácil, quero ser tão bom quanto você um dia Fernanda
Guria!!! eu sou de Rio Grande e estou fazendo ADS e achei do nada teus videos \o/
que video
Conteúdo de qualidade e de graça, muito bom.
Gosto bastante dessas resoluções de problemas, vou acompanhar. Parabéns! 👏🏾👏🏾🤘🏾
Um dos melhores canais de conteudo Java, parabens!!!
Ao invés de adicionar os repositories no construtor das classes service, não daria para usar a anotação @Autowired ?
Ótimo vídeo!
Vi que você salvou a categoria"completa" em produto. Fiquei curioso quando alterar a categoria, se irá refletir no produto.
Obrigada Marcelo!
Realmente, esqueci totalmente dessa possibilidade! Na parte 2 vou ajustar para evitar que a categoria dentro do produto fique desuatualizada!
Como encontrar os desafios? :( Quero encontrar desafios mais voltados para fintech, qual você recomenda?
Fico imaginando se em alguns meses esses testes ainda vão existir, com a IAs dando códigos cada vez mais facilmente.
Hehehehe já estou ansioso pela parte 2, Fê!!!! Mandou muito bem aqui nesse tutorial, vc é talentosíssima e muito simpática!!!!
Boaaa! Hahaha já estou finalizando a parte 2, logo logo sai aqui no canal
Valeu demais 💜
Uma dúvida. Estou iniciando tecnólogo em análise de sistemas. Estou estudando Python assim como você fez no seu início. Porém você foi pra JS. A dúvida é.
Porque migrou do Python para js e quais as diferenças de mercado de trabalho entre Python e js ( salário wise) .
Grande abraço.
Onde eu consigo um site para pegar desafios de sql e power bi (se é que tem)?
conteúdo muito top oh, sou fã dessa mulher, manda muito bem !!!
Que conteúdo incrivel Fernanda, parabéns pelo trabalho que você vem fazendo
Muito obrigada Edu!! 💜
@Fe, tira uma duvida, utilizar o redis ao inves do s3 não ficaria melhor (Obs: sei que é o que desafio pede)
24:45 não seria mais prático e seguro tratar como bigdecimal no Java e serializar como string no mongodb? Assim vc fica protegida de variações de ponto flutuante e evita operações matemáticas ao recuperar e gravar informações monetárias. Abraço.
Era o video que eu precisava assistir. Essa semana fui reprovado nessa mesma empresa por não ter experiência com AWS. :(
Que pena Daniel, mas não desanime! Bola pra frente, você vai conseguir! 🚀
E espero que o vídeo tenha ajudado a se preparar um pouco mais para os próximos desafios 😊
Foram necessário 15 dias pra fechar a playList. Entre ver e rever foi mais que necessario para agregar conhecimento e praticar o conteudo; se tive erro sim com certeza, mais são eles que vão lapitando os conhecimentos adquiridos.... todoConteudo() -> valeMuitoAPena(obrigado); ...Tem mais😃😃😃
Incrível, parabéns pelo trabalho!!
Muito bom, esperando a segunda parte.
Otimo conteudo como sempre. Uma duvida, nao seria melhor instanciar o CategoryService inves do CatergoryRepository dentro do ProductService?
Edit: Ela corrigiu kkkkk 👏
Mais um vídeo de qualidade e mão na massa! Parabéns Fé, uma aula! Já to esperando a parte 2 pra editar! Ahahahahhaha
Ahahahaha não seria possível sem você, valeu José! 🫶🏼
Logo logo tem parte 2!
Conteúdo muito raro hoje. Adorei o vídeo! Vou acompanhar para a parte 2 :))
cai de para-quedas no canal... muito bom o conteudo...
MUITO BOM. Esperando a parte 2 haha
Simplesmente perfeito! Amei esse tipo de conteúdo e aprendi demais. Muito obrigdo! Parabéns!
Muito obrigadoo, Elia 💜
Fico muito feliz em saber que você está aprendendo e gostando do conteúdo
Parabéns pelo conteúdo.
Porque enviar a msg para um SNS e não diretamente pro SQS?
up
Kipper, onde você costuma pegar esses desafios? Queria saber para poder praticar.
claro, com a sua área/lang após o "técnico"
Boa noite!
Não manjo de Java, esses métodos da service, não seria melhor se fossem Async? Ou já é padrão no Java?
Excelente vídeo, Fernanda! Uma dúvida, onde você encontra esses desafios para resolver? Gostaria de resolver também kkkkkkk
víteo legal!
parabéns pelo trabalho!
Fiquei com uma dúvida pq não trabalhar com numeros com ponto flutuante, já vi essa abordagem em outras aplicações Java, existe algum motivo específico, trabalho com C# só uma dúvida mesmo 😅
Como assim?
Eu sei que vai depender do o que você está fazendo, se for um sistema que precisa de uma certa precisão, se usar tipo inteiro vai ter perda de dados, agora se utilizar números com ponto flutuante não.
essa prática visa garantir uma representação mais precisa e consistente de valores monetários, reduzindo as chances de imprecisões numéricas ao trabalhar com cálculos financeiros em uma aplicação Java Spring com MongoDB.
Quando se usa inteiro é pra armazenar valor monetário em moedas. Isso vem do passado onde aplicações financeiras tinham requisitos restritos sobre cálculos e precisão. Calcular valor monetário em moedas remove o erro de ponto flutuante. O arredondamento pode causar perdas consideráveis em alguns casos.
É fácil achar esses desafios de vagas no Github? Acho uma boa para treinar pra quem já está a milênios no mercado (muitas vezes em legado)
Conteúdo perfeito, saindo das mesmice de crud, aguardando a parte 2
Oii Ricardo
Muito obrigadaa, fico muito feliz que goste do conteúdo
Aqui está a parte 2
ua-cam.com/video/rqOi8h1GDb8/v-deo.htmlsi=qd35AagxYia2-UyB
achei muita coisa pra um dev pleno, mas tá valendo o desafio
Muito bom! Conteúdo de muita qualidade, como sempre.
Obrigado por sempre criar conteúdos atuais e de qualidade! Virei membro! 💜
Muito obrigada pelo apoio Leo! 💜💜
Onde você consegue essas ideias de projeto ?
pq optou por instalar o mongo? n é mais fácil rodar no docker-compose?
Muito útil, desafios da vida real, não pokedex , muito obrigado
Oie Fer :). Uma dúvida. Pq não enviar o evento diretamente para o SQS, em vez de enviar para o SNS e depois para o SQS? Aqui onde trabalho enviamos diretamente para o SQS
acredito que foi para deixar mais genérico, estando num tópico SNS isso permite que a mensagem seja distribuída para outros lugares além da fila criada no SQS
Oii Regis
O principal motivo de usarmos o SNS, é para dar mais flexibilidade para a nossa arquitetura. Quando enviamos diretamente para o SQS acabamos acoplando as duas estruturas, mesmo que elas fiquem async. E se a gente quiser que, a partir de agora, a nossa aplicação avise não só esse serviço, mas outros 5 também? Ou quem sabe outros 15? Tendo o SNS configurado, nada muda, apenas cadastramos os nossos novos SQS's no nosso SNS e pronto. Se não tivermos ele configurado, teríamos que enviar 5 requisições para 5 SQS's diferentes.
Além disso, o SNS nos permite não só fazer envios ao SQS, mas também fazer envios de emails, mensagens de telefone, entre várias outras coisas. Caso isso virasse um requisito na aplicação, poderíamos facilmente aplicá-lo!
@@kipperdev a sim entendi agora. faz todo sentido :)
Legal.
Mas o principal fator do desafio que eu julgo é: "Keep in mind that this is an online product catalog, which means there will be multiple requests for editing items/categories per second, as well as accessing the catalog search endpoint.". Geralmente isso passa batido pela maioria das pessoas. Espero que no próximo vídeo você mostre como lidar com concorrência.
Talvez utilizar um mecanismo de Optimistic Lock, podendo criar versões dos itens/categorias.
@@matheusrmartinezexato. Como o exercicío é simples e não envolve transações complexas e que poderiam ter chance de falha alta, Optimistic seria sensacional. Acredito que hoje o que mais faz ter gente reprovada nas entrevistas na empresa que trabalho é um conhecimento extremamente baixo em concorrência. Todo pleno já deveria saber pelo menos o básico.
Mandou bem... super clara em suas explicações.....abrç
Muito obrigada Marcos! 😊
Pra esse desafio serve usar o mongoDB no docker?
Sensacional .. ótimo conteúdo como sempre!
Muito obrigadaa, Emerson 💜
Top demais esses conteúdos de javinha. Parabéns👏👏👏
Obrigadaa Anthony! 💜
Porque ela nao usa o AutoWired do spring ?
Usar constructor injection é mais recomendado, inclusive por facilitar a escrita de testes unitários
Conteúdo Top das Galaxias...
Ansioso pela parte 2 haha 😃
Ja saiuu hehe
ua-cam.com/video/rqOi8h1GDb8/v-deo.html
muito bom! obrigado pelo conteudo!! s2
nao seria melhor uar a FIFO? imaginando um cenario onde multiplos catalogo sofreram alteracoes e um catalogo em particular recebeu mais de uma alteracao acredito q exista a possibilidade do json desse catalogo que fica na s3 nao ser atualizado com a versao da ultima alteracao dele. Se isso ocorrer todos os requets posteriores para buscar esse catalogo viriam com o dado desatualizado até que esse catalogo fosse atualizado novamente pois ai seria emitida outra msg para SQS e o json da S3 seria atualizado.
Nesse caso o teste fala ali que além de publicar no SQS as rotas de crud atualizam direto o banco, o consumidor para gerar o catalogo não puxa a informação do s3 para gerar um próximo catalogo e sim puxa diretamente do banco, como no diagrama. O catalogo é mais para o front-end consumir
Ficou muito legal "Prima"❤
obrigadaaa Rian! 💜
Seria perfeito se você fizesse a resolução "correta" usando nodejs, estou focado nos estudos de backend graças aos seus vídeos!
conteúdo excelente.
só não entendi o pq de usar string no id. seria por conta do mongo?
Show, excelente video!!
Valeuu, Kermes 💜
Aula incrível, esse "Mâs"/ mas 😂😂 me quebra.
não recebia a mensagem no sqs até mudar sua policy, alguém mais teve esse problema?
Muito bom o conteúdo Fernanda, me surgiu uma duvida, como seria a questão de segurança nas keys da aws caso a gnt queira colocar um projeto assim no nosso git?
eu normalmente uso as variáveis de ambiente
Obrigadaa! Como o @ilikecats5396 falou, ai é legal a gente usar variaveis de ambiente. E ai a gente carrega essas vars de ambiente no nosso application.properties.
Algo tipo isso:
aws.secretKey=${AWS_SECRETET_KEY}
Por que tu tem um DTO se Category e CategoryDTO são essencialmente iguais?
Na verdade não são, com o DTO ela fugiu de expor o ID
Show! Obrigado.
Nesesito leer los subtitulos en español, Saludos!
empresas ainda pedem desafio pra devolver depois ? achei que 90% era leetcode ao vivo
Eu com o fone de ouvido e ela: FALA, GALERA!
Dei um pulo e falei "Eita, poha"
Sinto saudades de fazer teste para concorrer em uma vaga.
Ótimo vídeo! O tenso de crud backend é a repetição... Faz a entity, DTO, repository, service etc. Sempre a mesma coisa! Esse até tem umas peculiaridades. Mas ultimamente eu estou numa de gerar o início ali com alguma IA e só fazer os ajustes. Não recomendo isso para iniciantes hein jovens? rs
Isso não seria uma vantagem, já que facilitaria o desenvolvimento das APIs?
@@sharewareX Sim. Mas vc tem que enteder 100% o que está sendo feito, já que a IA delira as vezes. E se não entender algo , é bom pedir para ela explicar.
Por que da decisão de usar inteiro para o preço? Não me parece uma boa escolha pensando no longo prazo… por exemplo tu pode ter por qualquer motivo no futuro mudar teu requisito de precisão monetária de 2 casas decimais para 4 casas (o que seria comum em sistemas tributários ou financeiros). Outro ponto pensando numa evolução tu tá tirando responsabilidade da precisão monetária do banco e colocando na aplicação, se por exemplo outra pessoa for construir relatórios em cima do dados ela terá uma complexidade extra de tratar esse número sendo que essa regra estará apenas no código e na tua cabeça e quem for tratar esse dado pode não ter esse informação… enfim pode explicar qual foi o racional? (Não diga performance pois não faz sentido depois dos anos 2000 kkk)
Ela simplesmente converteu o valor pra menor unidade do dinheiro, no caso 1 centavo. Isso não coloca nenhuma restrição quanto a precisão já que n estamos trabalhando com ponto flutuante. É bem comum operar com centavos em aplicações financeiras.
sensacional 👏
Parabens otimo video. Depois vou assistir ate o final. Mais gostei da implementação. Tu nao e daquelas tipos de pessoa que para tudo quer utilizar a arquitetura hexagonal.
Obrigadaa Diogo, fico muito feliz que gostou! 💜
Que desafio toop!
onde trabalho uso algo parecido usando serverless com node.js
Simmm, gostei muito do desafio tb! Bem parecido com cenários reais de uso