Enviando mensagens SMS agendadas com AWS EventBridge, Pinpoint e Lambda usando Serverless Framework

Você pegou um trampo freela onde seu cliente pediu que o sistema enviasse para ele via SMS um mini relatório todos os dias as 18 horas.

Esse mini relatório pode ser número de visualizações numa landing page, o total de vendas em cartão de crédito, cartão de débito, dinheiro e vale refeição, ou a cotação do dólar.

Nesse texto mostro como você pode implementar isso super rápido usando alguns serviços da AWS e o Serverless Framework, entregando para ele a funcionalidade pronta em algumas horas.

Continue lendo “Enviando mensagens SMS agendadas com AWS EventBridge, Pinpoint e Lambda usando Serverless Framework”

O que é HTTP Content-Security-Policy e como utilizar no PHP

Content-Security-Policy (CSP, para os íntimos) é um cabeçalho HTTP que podemos usar para fornecer ao navegador uma lista branca de recursos que nossa aplicação usará.
Entenda-se como recurso imagens, Javascript, CSS, fontes, frames, conexões websocket, actions de formulário, etc.

Nesse texto falo um pouco sobre esse cabeçalho (que tem várias particularidades) e mostro como implementar no PHP de forma fácil.

Continue lendo “O que é HTTP Content-Security-Policy e como utilizar no PHP”

vagrant-disksize – Plugin para aumentar o tamanho do disco de máquinas Vagrant + Virtualbox

Dica rápida para apresentar o plugin vagrant-disksize, um plugin para aumentar o tamanho do disco em máquinas Vagrant que utilizam o Virtualbox como provider.

Instalando:

vagrant plugin install vagrant-disksize

Agora, em seu Vagrantfile, basta indicar o tamanho do disco:

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/bionic64"
  config.disksize.size = "30GB"
  # ...
end

Você pode especificar o tamanho em bytes ou especificar a unidade (KB, MB, GB ou TB).

Nota 1: Não tem como diminuir o tamanho do disco; somente aumentar.

Nota 2: O plugin altera somente o primeiro disco. Mas nos casos que eu precisei dele isso não foi um problema.

Bom, é isso. Se tiver alguma outra forma, plugin que tenha mais funções ou funcione com outros providers, indica aí nos comentários!
Se esse plugin for útil para você assim como foi pra mim, conta aí também.

Como resetar a senha de root do servidor MySQL

Vamos rapidinho para não perder tempo. Você deve ter acesso root ao seu sistema:

Parar o serviço do MySQL:

# systemctl stop mysql

Iniciar o servidor do MySQL sem checagem de permissões:

# mysqld --skip-grant-tables &
# mysql

No prompt do MySQL: mudar a senha (substituindo ‘new-password’ na query pela senha que você deseja):

mysql> UPDATE mysql.user SET Password = PASSWORD('NEW-PASSWORD') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

Parar essa instância do servidor e iniciar no modo normal:

# mysqladmin -u root -p shutdown
# systemctl start mysql

Feito! Fica o recado: É melhor esquecer e ter que resetar a senha de root do que achá-la nos arquivos de alguma aplicação. 🙂

Terraform e DigitalOcean: Infra as code nunca foi tão simples!

Terraform é uma ferramenta multiplataforma para construir, modificar e versionar uma infraestrutura com segurança.
Com ele você escreve um código, numa linguagem declarativa e de fácil compreensão tudo o que você precisa em sua infra.
A ferramenta suporta vários provedores como AWS, DigitalOcean, Google Cloud e etc.
Dependendo do provedor que você usar é possível definir desde as configurações mais low-level (rede, firewall) até as mais high-level (banco de dados, load balancer e etc).

Ao descrever sua infra como código você elimina a necessidade de configurar tudo na mão e documentar toda essa configuração, pois a documentação é o código que você escreve.
Para saber o que será feito, basta rodar “terraform plan”. Para aplicar, “terraform apply” é o caminho.
Isso sem falar sobre as vantagens de ter esse código versionado, e ainda automatizar a atualização da infra num processo de deploy.

Eu estou começando a brincar com Terraform agora, e nesse artigo vamos criar uma infra básica, com duas maquininhas e um load balancer para distribuir a carga entre elas.
Para testar se essa coisa funciona, vamos pedir para o Terraform provisionar essas máquinas com o Apache.

Continue lendo “Terraform e DigitalOcean: Infra as code nunca foi tão simples!”

Usando o instalador automático do PostgreSQL autonomamente no Windows

Eu já precisei instalar o PostgreSQL no Windows, e o instalador não é nada acessível com o leitor de telas.
Daí pra instalar, eu baixava o zip, desempacotava e rodava o initdb, tinha que instalar o serviço na mão, etc e tal.
Se usarmos o instalador ele já resolve todas essas tretas.
Nesse pequeno post vou mostrar como usar o instalador pela linha de comando, sem depender da acessibilidade (ou falta dela) para usá-lo.

Continue lendo “Usando o instalador automático do PostgreSQL autonomamente no Windows”

Usando a biblioteca Respect Validation no Laravel

Por padrão, o Laravel vem com vários validadores. Mas sempre tem aquela aplicação que precisa de uma validação específica, seja CPF, CEP, cartão de crédito e etc.
Nesse pequeno texto vou mostrar como adicionar regras poderosas ao validador do Laravel, usando a biblioteca Respect Validation, a biblioteca de validação mais foda já criada para o PHP.

Continue lendo “Usando a biblioteca Respect Validation no Laravel”

Estou aprendendo Esperanto!

Saluton!
A alguns dias me cadastrei no Duolingo para praticar meu inglês e iniciar meus estudos de alemão.
O que chamou minha atenção foi o idioma esperanto estar presente na lista de idiomas ensinados, pois para mim esperanto significava uma língua que já foi útil um dia e hoje não é mais.

Santa ignorância!

Continue lendo “Estou aprendendo Esperanto!”

Um guia das funções de ordenação de arrays do PHP

O PHP possui várias funções para ordenação de array.
Como a linguagem tem um sério problema quando trata-se de padronização de argumentos, algumas dessas funções são meio chatas para se usar e podem trazer surpresas desagradáveis.
Nesse artigo vou apresentar todas essas funções, para que você nem eu tenhamos problemas com elas.

Continue lendo “Um guia das funções de ordenação de arrays do PHP”