<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Paulo Cavalcante</title>
    <description>The latest articles on Forem by Paulo Cavalcante (@paulocavalcante).</description>
    <link>https://forem.com/paulocavalcante</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1062374%2Fad06371a-3ecf-498b-904d-bacf5ef2fffb.png</url>
      <title>Forem: Paulo Cavalcante</title>
      <link>https://forem.com/paulocavalcante</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/paulocavalcante"/>
    <language>en</language>
    <item>
      <title>Horas é uma variável de ambiente, vou usar o ENV. Calma, calma, deixa eu te falar uma coisa antes</title>
      <dc:creator>Paulo Cavalcante</dc:creator>
      <pubDate>Sun, 25 Aug 2024 23:41:38 +0000</pubDate>
      <link>https://forem.com/paulocavalcante/horas-e-uma-variavel-de-ambiente-vou-usar-o-env-calma-calma-deixa-eu-te-falar-uma-coisa-antes-3hk</link>
      <guid>https://forem.com/paulocavalcante/horas-e-uma-variavel-de-ambiente-vou-usar-o-env-calma-calma-deixa-eu-te-falar-uma-coisa-antes-3hk</guid>
      <description>&lt;p&gt;Sempre estamos na correria e querendo desenvolver o mais rápido possível, e muitas vezes acabamos pegando os velhos hábitos e construindo os velhos softwares, um item que podemos melhorar bastante é esse queridinho chamado &lt;strong&gt;environment&lt;/strong&gt;, vamos entender um pouco mais sobre isso. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Antes de tudo gostaria de mostrar aqui o foco no conceito de configurações para o laravel, não irei me preocupar com os padrões restantes, como o de resources ou outros afins.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;1 - Vamos buscar o conhecimento!&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Há um tempo escutei que eu não podia fazer essa passagem de ENV dentro dos meus códigos malucos, fiquei tipo; ué &lt;br&gt;
Então o propósito é entender os motivos, porque assim, conseguimos tomar melhores decisões como engenheiros.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.1 - Maneira correta ou um ponto de vista ?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Então vamos lá pequeno e futuro mestre, vamos colocar um valor em uma variável de ambiente para podermos brincar, então vamos chamar de:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyuta206179g7eapft2dm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyuta206179g7eapft2dm.png" alt=".env" width="522" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos para o primeiro ponto, ótima decisão em ter colocado essa configuração como uma variável de ambiente, assim você torna tudo mais fácil para gerenciar diferentes ambientes ( Produção, homologação, Caso você tenha 😆 ) e muito mais seguro, porque esse valor não  vai ser exposto quando você realizar aquele &lt;strong&gt;git push&lt;/strong&gt; maroto no seu repositório (git/bitbucket), já imaginou seu secret de água vazado na internet que triste.&lt;/p&gt;

&lt;p&gt;E para recuperar este valor no Laravel podemos utilizar o método &lt;strong&gt;env()&lt;/strong&gt; ou também usar algum outro pacote como por exemplo a Support da Illuminate ( me lembra os minions, não sei porque 😅 )&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4b0puj8ljdhlisq9im6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4b0puj8ljdhlisq9im6.png" alt="metodo env" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;env&lt;/strong&gt;: Helper Laravel ( Que utiliza o &lt;strong&gt;Env::get&lt;/strong&gt; )&lt;br&gt;
&lt;strong&gt;Env::get&lt;/strong&gt;: Classe Env do package Support Illuminate&lt;/p&gt;

&lt;p&gt;Nossa, está pronto, então porque ficar inventando moda ? A real é que isso não é uma boa ideia, vou explicar o porque em breve, continue comigo. &lt;br&gt;
Para a solução diferente, podemos citar os arquivos de configuração que irão recuperar o valor do &lt;strong&gt;environment&lt;/strong&gt; criado, assim o arquivo de configuração fica centralizado e vamos lá, fala sério! muito melhor para ler um código.&lt;/p&gt;

&lt;p&gt;Nessa situação específica você já pode utilizar o arquivo de config existente, chamado &lt;strong&gt;services.php&lt;/strong&gt;, mas nada impede que você crie um arquivo para o seu contexto específico.&lt;/p&gt;

&lt;p&gt;No caminho &lt;strong&gt;config/services.php&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0663jvlpro6h0xme99od.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0663jvlpro6h0xme99od.png" alt="array config service" width="627" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E assim vamos chamar no código da seguinte forma:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0tpckq36ui6y69ylxjl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0tpckq36ui6y69ylxjl.png" alt="call Config service" width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;2 - Legal, mas porque eu devo usar configs pra recuperar variáveis e não apenas buscá-las diretamente ?&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;Vou tentar mostrar algumas razões:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.1 - Aumento de desempenho e melhor utilização de IO&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Pense na seguinte situação, você tem arquivos em produção que serão acessados a todo instante realizando um IO considerável o que vai aumentar recursos de máquina e dependendo da situação lentidão no sistema 😫 ( E acredite, até você achar o problema de fato, você irá passar por coisas que vão colocar em dúvida todo o seu conhecimento )&lt;/p&gt;

&lt;p&gt;Quando falamos do ambiente em produção o recomendado é você fazer cache dos seus lindos arquivos de configuração, com o Laravel você pode utilizar o artisan&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan config:cache
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse lindo comando pega todos os arquivos de configurações e seus respectivos valores e os compila em um único arquivo php, o que aumenta o desempenho. Isso se dá ao fato que os números de IO é reduzido para 1&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Curiosidade:&lt;/strong&gt; Quando você utiliza esse comando o env() começa a retornar &lt;strong&gt;NULL&lt;/strong&gt; porque ele desabilita esta função. Então se do &lt;strong&gt;"Neida"&lt;/strong&gt; um &lt;strong&gt;env()&lt;/strong&gt; seu parou de funcionar é isso.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Env()&lt;/strong&gt; Executam operação de IO e elas são caras e lentas.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;O melhor é fazer essa operação uma única vez no início da aplicação do que você ter que executar a operação toda vez que necessitar de um env.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.2 - Organização e padronização da melhor maneira possível&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Você poderá facilmente manter todas as suas configurações como quiser. Você pode colocar o nome do cachorro que quiser, criar uma pasta e estruturar todos os arrays como quiser também, isso deixará a estrutura mais limpa ( por favor, use com moderação ) &lt;br&gt;
Por exemplo: &lt;/p&gt;

&lt;p&gt;Olha essa chave: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fap328h6lsxstbvtpk569.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fap328h6lsxstbvtpk569.png" alt="key service" width="471" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;e agora olha esta chave:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp5cbfkmd06zf0l9bfoxd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp5cbfkmd06zf0l9bfoxd.png" alt="key env" width="411" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na minha humilde opinião a 1º é muito melhor.&lt;/p&gt;

&lt;p&gt;E tirando que você poderá ter suas configurações semelhantes no lugar correto e centralizado sem precisar colocá-las "aleatoriamente" em seu código, e eu gosto bastante dessa ideia de estruturar o array que faça total sentido para aplicação.&lt;/p&gt;

&lt;p&gt;E a orientação para novos desenvolvedores fica muito mais simples, já que você poderá informar onde e como fazer uma nova configuração. &lt;/p&gt;

&lt;p&gt;Mantenha o simples, seja você a diferença! &lt;/p&gt;

&lt;p&gt;Obrigado por tudo até aqui.&lt;/p&gt;

&lt;p&gt;Fonte:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://laravel.com/docs/11.x/configuration" rel="noopener noreferrer"&gt;Laravel 11 Documentação Configuration&lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>softwareengineering</category>
      <category>tips</category>
    </item>
    <item>
      <title>Dev, café e um pouco de história</title>
      <dc:creator>Paulo Cavalcante</dc:creator>
      <pubDate>Tue, 16 Jul 2024 13:38:09 +0000</pubDate>
      <link>https://forem.com/paulocavalcante/dev-cafe-e-um-pouco-de-historia-1mn5</link>
      <guid>https://forem.com/paulocavalcante/dev-cafe-e-um-pouco-de-historia-1mn5</guid>
      <description>&lt;p&gt;Olá pequeno agricultor de software 😄 &lt;/p&gt;

&lt;p&gt;Depois de muito tempo, acredito agora está iniciando novos caminhos, tenho uma breve história perto de mestres que tive a oportunidade de conhecer durante a minha jornada, mas todas estas me agregaram bastante na vida em todos os sentindos, isso parece ser meio maluco, mas quando unimos o bem e o útil tudo fica claro. &lt;/p&gt;

&lt;p&gt;A primeiro momento vou apenas contar um pouco dessa história bem resumida e então a ideia é produzir os posts mais técnicos e também de ajuda que são relacionados a processos pessoais para melhoria profissional de um desenvolvedor.&lt;/p&gt;

&lt;h3&gt;
  
  
  1 - O que te motiva ?
&lt;/h3&gt;

&lt;p&gt;Bom, tenho 10 anos na carreira, iniciei como suporte ao cliente e  tive oportunidade de atuar no desenvolvimento mesmo estando no suporte, para muitos desvio de função, para mim, um grande divisor de água que mudou tudo no garoto que buscava um sonho vindo para Goiânia de conseguir crescer profissionalmente e ter mais dinheiro para ajudar minha família, meu pilar, porém, não sabia que pegar ônibus era difícil 😕 foi o primeiro desafio haha vindo de uma cidade do interior não era necessário os transportes públicos ( apesar que tinha ) já que você anda praticamente a cidade inteira a pé, sério, quem é de interior sabe bem como é isso. &lt;/p&gt;

&lt;p&gt;No começo quando me falaram que eu participaria do desenvolvimento eu realmente fiquei com o pé atrás, sobre fazer uma coisa que eu não tinha domínio e principalmente porque não estava fazendo sentindo algum, mas depois de 2 anos loguei na minha conta de e-mail e escrevi para os dois responsáveis, e mandei meus sinceros agradecimentos por terem me proporcionado todo o conhecimento possível, no qual me ingressou na área e realmente gostar de produzir e criar sistemas que fossem agregar na vida das pessoas, e faz todo sentindo você agradecer quem te iniciou neste circulo, até se essa pessoa seja você mesmo.&lt;/p&gt;

&lt;p&gt;Ser grato é essencial! Ainda mais quando existem pessoas para acreditar em você, porque sabemos que o primeiro emprego na nossa área em determinados momentos pode ser cruel, pelo nível de dificuldade em encontrar alguém disposto a contratar uma pessoa inexperiente, por todos quererem tudo para o famoso ontem, isso não é uma crítica as empresas, é apenas uma observação, porque sabemos que as empresas precisam sobreviver em meio as demandas ( retirando as empresas que realmente não sabem o que é uma demanda nesse caso é uma crítica mesmo ).&lt;/p&gt;

&lt;p&gt;Hoje consigo ajudar minha família e pretendo ir mais longe agora, porque uma meta alcançada significa apenas o começo de uma jornada por isso a importância das metas bem estabelecidas em sua vida, acredito que aqui é um bom começo, disciplina, conduta, ética e erros, porque o que somos nós sem os erros que praticamos ?&lt;/p&gt;

&lt;p&gt;Ahh, muito obrigado se você chegou até aqui, muito importante para mim. &lt;/p&gt;

&lt;p&gt;E sua trajetória ? o que te motivou/motiva ? &lt;/p&gt;

&lt;p&gt;Um grande abraço e até a próxima ✨ &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>career</category>
    </item>
  </channel>
</rss>
