Posts Recentes
Guia Definitivo: Como Configurar o Mullvad Corretamente
Introdução: VPN não é anonimato
É comum pensar que uma VPN resolve o problema de privacidade sozinha. Eu também tinha essa impressão: ligou a VPN, pronto, ninguém mais consegue ver nada.
Na prática, não é bem assim.
Uma VPN esconde seu endereço IP e impede que seu provedor veja diretamente quais sites você acessa. Ela também é útil em redes Wi-Fi públicas. Mas isso não significa que você ficou anônimo.
Reflexões Sobre Ia
Alguns dias tenho pensado sobre IA. Hoje, todo lugar que você vai, sempre vai ter algo assim: “Use este prompt para gerar isso”, “faça upload do seu currículo para aquilo”, “dê acesso ao mais novo agente que automatizará tudo”. Pode enviar e-mails para você, pode gerenciar sua vida, pode automatizar a busca de emprego para você. Tudo isso é de uma facilidade enorme no dia a dia que nos ajuda a otimizar nosso tempo. Eu mesmo uso a IA para tudo: desde o estudo de programação, no trabalho, para estudar idiomas e tais.
Consultoria em Arquitetura e Desenvolvimento de Software
Seu sistema está crescendo e a arquitetura está começando a virar um problema?
Posso ajudar você a analisar seu projeto, identificar problemas técnicos e definir soluções mais simples, escaláveis e sustentáveis.
Como posso ajudar
🏗️ Arquitetura de Software
Análise e evolução da arquitetura de sistemas, APIs e aplicações backend.
- Arquitetura de aplicações
- APIs e integrações
- Sistemas distribuídos
- Escalabilidade
- Performance
- Boas práticas de engenharia de software
🐘 PHP & Laravel
Consultoria para projetos utilizando PHP e Laravel.
Construindo Rag Com Laravel
Venho estudando ultimamente sobre IA: como fazer prompts mais eficientes, como construir um RAG e como fazer um fine-tuning de um modelo de IA. E, para que eu possa fixar mais o meu conhecimento, resolvi criar um projeto com Laravel onde eu possa praticar de forma mais concreta. Ainda mais que, nos dias de hoje, só se fala sobre IA, mas não vejo muito conteúdo em português falando sobre como criar RAG com PHP.
Migrei Do WordPress Para Hugo
Bom, creio que vocês repararam que o blog teve um mudança no seu layout. Vou explicar para vocês o porquê eu fiz essa mudança radical no meu blog, mas antes vou contar a história desde o início.
Porque decidir criar um blog
Em 2019, eu estava, digamos, num platô: não conseguia terminar nenhum projeto. Foi então que tive a ideia de criar um blog, algo que eu pudesse concluir rapidamente, para não desanimar durante o processo de criação. Escolhi o WordPress, comprei um tema e a hospedagem. Fiz a instalação e em poucas horas já estava tudo configurado e publicado. Fiquei muito feliz, pois finalmente tinha concluído um projeto.
About
Eu sou Diego França, Arquiteto de Software e Senior Full Stack Developer, escritor do blog diegofranca.dev.
Atuo há mais de uma década no desenvolvimento de software, com experiência principalmente em PHP, Laravel, MySQL e arquitetura de sistemas. Ao longo desse tempo, trabalhei em projetos de diferentes portes e contextos — desde produtos pequenos até sistemas grandes com alto volume de tráfego e integrações complexas.
Meu foco é escrever sobre PHP, diversos tipos de testes, criação de pipelines e às vezes faço resumo de livros de tecnologia.
Padrão de projeto Decorator
Alguns dias atrás, eu estava trabalhando em um sistema responsável por sincronizar dados entre dois sistemas. A nova tarefa exigia reutilizar esse mesmo sistema para sincronizar com um terceiro, mas com alguns extras: eu queria enviar uma notificação no início, outra no fim, adicionar logs e aceitar mais parâmetros.
O problema? Esse método já era usado em vários pontos do sistema. Alterá-lo diretamente tornaria o código frágil e com alto risco de quebrar outras partes.
Como criar e publicar seu próprio pacote PHP no Packagist
Olá pessoal! Hoje quero compartilhar com vocês como criar e publicar pacotes PHP no Packagist. Você já criou um código PHP reutilizável e queria instalar em outro projeto sem a necessidade de ficar duplicando código e até compartilhar com a comunidade PHP?
Então, hoje vou criar um simples pacote e ensiná-los como publicar no packagist. O pacote que vou criar vai ser algo bem simples, um pacote que soma dois números e retorna o valor soma.
Pare de usar env() dentro da sua aplicação Laravel (fora da config)
Venho compartilhar com vocês uma dica rápida sobre o Laravel. Vejo muitas pessoas enfrentando problemas ao tentar acessar variáveis de ambiente dentro da aplicação. O erro mais comum acontece quando os desenvolvedores utilizam a função
env()diretamente em suas classes ou serviços, para ler configurações do arquivo.env, e depois não entendem por que, em alguns momentos, essa função retornanull.A explicação é simples: isso acontece por causa do fluxo de inicialização do Laravel. Para ajudar a visualizar, criei um diagrama que explica como esse processo funciona:
Instalando o Apache Kafka
Fala, pessoal! Hoje gostaria de compartilhar com vocês um pouco sobre o Apache Kafka. Tenho trabalhado com o Kafka para fazer uma sincronização com vários bancos de dados e achei interessante compartilhar um pouco do que venho aprendendo. Além disso, este artigo será uma forma de ter um local de fácil acesso caso eu tenha alguma dúvida no futuro.
O que é Apache Kafka
O Apache Kafka é uma plataforma open-source para realizar a transmissão de dados em um fluxo contínuo. É um sistema de mensageria de alto desempenho e tempo real. Nos últimos anos, o Apache Kafka vem se popularizando bastante devido ao aumento da adoção de microsserviços.
Criando um servidor Git localmente
Olá pessoal!
Hoje gostaria de compartilhar uma dica rápida e útil: como criar um servidor Git localmente. Imagine a seguinte situação: você e seu colega estão desenvolvendo uma feature importante no escritório e precisam entregá-la em poucos dias. De repente, a internet cai e seus dados móveis não funcionam. Você precisa urgentemente enviar para seu colega a parte que acabou de desenvolver. Conseguem sentir o frio na barriga?
Sabiam que é possível ter um servidor Git local onde você pode clonar e fazer push sem precisar de internet, apenas usando a rede interna? É exatamente isso que gostaria de mostrar hoje. Vamos lá!
Como instalar várias versões do PHP no ubuntu
Falaaa Galera! Novamente com mais um tutorial super rápido e prático de como configurar várias versões do PHP no Ubuntu. Esperem que gostem.
Às vezes, quando estamos desenvolvendo nossas aplicações ou trabalhando em outros projetos, podemos nos deparar com versões diferentes do PHP que está instalado na nossa máquina. Então, passamos horas e horas na internet em busca de alguma solução que realmente funcione.
Esse tutorial foi testado na minha máquina pessoal com as seguintes configurações:
Instalando o certificado ssl no apache
Fala pessoal!! Hoje, vou ensinar como criar certificados apache auto assinado. Isso é muito importante quando estamos criando nossos sistemas web e queremos adicionar um certificado ssl no nosso servidor web. Nesse tutorial, estou utilizando Ubuntu 22.04.
Criar certificado
No primeiro passo, iremos criar o nosso certficado. Abra o seu terminal e execute o seguinte comando:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/apache-selfsigned.key -out /etc/ssl/apache-selfsigned.crtApós executar o comando acima, algumas informações serão exibidas para que você preencha:
Desbravando testes unitários
A idéia de escrever esse post surgiu após eu fazer uma apresentação sobre testes unitários na empresa que trabalho. Durante a apresentação, fiz um live code em que criei um endpoint na qual utilizei os conceitos, que irei abordar, para fazermos a isolação do componente. Gostaria muito de fazer uma aplicação aqui no blog, mas pode ser que fique muito tedioso fazer um passo a passo. Então, decidi fazer um resumo do que foi apresentado, com exemplos de código para melhor entendimento.
Modelo de maturidade de Richardson - Mensurando a maturidade da sua api
Fala, pessoal! Hoje tenho algo interessante sobre api restful. Quando você está criando uma api restful já parou para pensar se o que estamos desenvolvendo está correto e se existe algum padrão a ser seguido ao criar uma api restful?
Existe sim uma maneira de saber se o que estamos desenvolvendo é uma api restful e o grau da sua maturidade, chama-e modelo de maturidade de Richardson. A primeira vez que ouvi esse termo foi no canal da Michelli Brito, recomendo acompanhar o canal dela. Fiquei motivado em escrever um pouco do meu entendimento acerca do assunto, mas antes de iniciar quero fazer um overview da diferença entre rest e restful, ainda têm muitos devs que confundem esses termos. E sem mais delongas; bora lá.
Criando aplicação escalável — Parte 1
Fala Pessoal! Hoje quero iniciar a minha jornada no aprendizado de criação de aplicações escaláveis. Sempre fui curioso de como essas grandes empresas trabalham com milhares de acessos simultâneos e seus serviços permanecem online e como seria trabalhar com escalabilidade em aplicações. Pensando nisso criei um encurtador de links e o meu objetivo é aprender mais sobre escalabilidade e aprender a fazer testes de cargas em aplicações.
Meu primeiro objetivo é ter pelo menos 900 acessos por segundo e para isso irei utilizar https://k6.io/, para realizar os testes e o heroku como o servidor(plano free) quando chegar a essa quantidade de requisição irei dobrar o número de requisição.
A cada experiencia que eu fazer quero registrar aqui no blog, pois pode ser algo útil para alguém.Criando aplicação escalável — Parte 2
Fala pessoal! Tudo bem com vocês? Seguindo a nossa jornada da criação de uma aplicação escalável, nessa segunda parte venho contar para vocês como foi o início dos testes, para quem não leu a primeira parte clique aqui.
No Primeiro momento tentei rodar o ‘software’ de teste de carga K6 com aplicação na minha máquina pessoal, iniciei com 1000 usuários fazendo acessos simultâneos e obtive somente 2% de sucesso, quando tentei rodar com 2000 usuários começou a gerar um erro de “socket: too many open files”, para fim de comparação nesse teste vou manter 1000 tanto na minha máquina quanto no servidor do Heroku. Criei uma conta no Heroku, cujas configurações não são robustas, mas com o passar dos testes talvez posso mudar de plano para fazer um teste melhor.
Boas práticas com PHP (PSR) Parte-1
Falaa galera, como vocês estão? Hoje eu venho com uma novidade para vocês que programam em php, vou criar uma série onde eu vou mostrar quais são as melhores práticas no densenvolvimento em php de acordo com as PSRs. Sem mais delongas, vamos iniciar.
O que é PSR ?
PSR(PHP Standards Recomendation) é o manual de recomendações para o PHP, o site que define essas recomendações é o PHP-FIG, nele encontramos todas as PSRs que iremos utilizar nessa série.
TDD - Analisando FeedBacks
Ultimamente venho estudando a fundo sobre o TDD e como ele pode nos auxiliar a escrever um bom código.
Muitos desenvolvedores ainda não aderiram a essa prática alguns por falta de conhecimento e outros por acharem que perdem a produtividade ao criar os testes antes do desenvolvimento
Nesse artigo vou me basear no livro escrito pelo Mauricio Aniche, Test-Driven Development. Teste e Design no Mundo Real com PHP, onde ele exemplefica alguns dos feedabacks na qual com a prática do TDD pode nos ajudar a escrever um bom código.
Clean Code - Números mágicos
As vezes pensamos que para refatorar um código e torná-lo mais legível precisamos de fazer algo complexo, mas nem sempre isso é necessário, as vezes trocar um nome de uma variável para um nome que condiz com o que ela realmente faz, já é um grande passo.
No último final de semana, estava estudando sobre TDD e resolvi desenvolver um código simples de login , nesse algoritmo tinha alguns códigos de status de resposta como 400, 401, 403, 422 e etc, que eu tinha adicionado diretamente no código. Logo pensei: “Será se alguém que não tenha conhecimento de códigos de status de resposta saberia o que isso significa?”
O CentOS morreu, e agora?
Falaaa pessoal!! Nos últimos dias fomos surpreendidos com uma notícia que a RedHat não dará mais suporte ao CentOS, mas o que isso significa ?
Isso siginfica que, o CentOs Linux 8, que é um rebuild do Red Hat Entreprise linux 8(RHEL), seu suporte será encerrado em 2021.
Uma vez encerrado o suporte do CentOS 8, você precisará fazer a migração para o CentOS stream, que receberá atualizações como era feito no CentOS e servirá como branch upstream (desenvolvimento) do RHEL.
PHP 8 é lançado
A equipe de desenvolvimento do PHP anunciou o lançamento do PHP 8 no dia, 26 de Novembro de 2020:
PHP 8.0 is a major update of the PHP language.
It contains many new features and optimizations including named arguments, union types, attributes, constructor property promotion, match expression, nullsafe operator, JIT, and improvements in the type system, error handling, and consistency.
Aqui está uma lista de algumas novas features do PHP:
- Union Types
- Named Arguments
- Match Expressions
- Attributes
- Constructor Property Promotion
- Nullsafe Operator
- Weak Maps
- Just In Time Compilation
- e muito mais…
Aqui estão alguns dos destaques do lançamento:
Comandos básicos do Git
Fala galera, beleza? Então, estou aqui para ajudar aquelas pessoas que começaram a utilizar o Git e ainda encontra dificuldades com os comandos. Nesse tutorial irei demonstrar alguns comandos que irá facilitar muito na sua jornada de aprendizagem.
ENTENDENDO O WORKFLOW DO GIT
O GIT é um VCS (Version control system) open source mais utilizado no mundo na qual permite você acompanhar as mudanças no arquivo. Empresas e programadores ao redor do mundo utiliza o GIT para colaboração em desenvolvimento de sistemas e aplicações.
GIT- Conventional Commits
Faaala galera, blz? Hoje venho com uma dica sobre como ter padrão nas mensagens de commits em nossos projetos. As vezes quando se tem mais de um desenvolvedor no projeto e a correria do dia a dia acabamos que as mensagens não ficam tão legais. É muito comum ter os famosos “AD” (Alterações diversas) ou o “VA” (Várias alterações), com isso dificulta muito a nossa vida de dev, que já não é fácil :D.
Tipos de Joins Mysql
Fala galera! Hoje venho com uma dica rápida sobre joins em Mysql. Quem nunca passou por uma dificuldade na hora de criar uma query que envolvia algo mais complexo? Então com algumas pesquisas na internet eu encontrei um post em que o autor escreveu alguns padrões de joins no Mysql. Gostaria de compartilhar com vocês o PDF e o post original. Espero que gostem, qualquer dúvida deixem no comentário.
Fonte: