Arquivo do Autor: Pereira, Thiago Santos

Sobre Pereira, Thiago Santos

Um cara que mora no Rio e não sabe nadar.

Logo do ElasticSearch e Docker juntos

Rodando o Elastic Search no Docker

Tive a impressão, lendo alguns tutoriais em português, que o material estava um tanto desatualizado. Isso me fez perder algum tempo tentando entender o que eu estava fazendo de errado até entender que: eu não estava fazendo nada errado. O passo a passo estava correto, mas a forma de chamar as APIs do Elastic Search é que haviam mudados. Faço esse post para não me deixar esquecer de como funciona e também para facilitar a vida de quem quer subir um container local para desenvolvimento ou para brincar antes de jogar para produção.

Continue lendo

Docker Cron

Uma demanda bem diferente, um container cujo único proposito em vida é ter o cron rodando. Na verdade, um pouco mais que isso, mas não vem ao caso. O ponto é como fazer um container chamador de cron?

Para os apressados a solução é rodar o cron em foreground. Dessa forma ele segura o container e ele não morre de cara.

ENTRYPOINT ["cron", "-f"]
Continue lendo

Swap File – Por quê?

Tenha.

Quando você pega uma VM você paga pela RAM e pelo espaço em disco e a cloud te aluga RAM e espaço em disco. No entanto, se a VM vier automaticamente com um swap ativo a cloud vai precisar dispor de mais disco swap + o acordado. Se uma VM tem 512mb de RAM e 20Gb de disco, teria que dispor de pelo menos 256mb de swap, imagina essa escala para uma cloud com milhões de VMs. Por isso as VMs de diversas clouds vem sem SWAP File e deixa para você a responsabilidade de ativar! <3

Continue lendo

WordPress – Perdendo Qualidade de Imagem e Deixando as Opacas

Se você é apressado: instale o modulo “imagick” do PHP
No Ubuntu/Debian: apt install imagick-php7.2
PECL : pecl install imagick

O WordPress tem uma classe abstrata chamada WP_Image_Editor. Há duas outras classes que a estendem chamadas WP_Image_Editor_GD e WP_Image_Editor_Imagick. Para que nós não tenhamos que criar uma função para escolher entre as classes há uma no core do WP chamada wp_get_image_editor(), que automáticamente escolhe uma das duas classes disponíveis.

Continue lendo

Magento 2 – alterar a complexidade da regra de validação da senha

Introdução

Agora com o Magento 2 ficou muito fácil alterar a complexidade da regra de validação da senha cadastrada pelo usuário. Por padrão o Magento 2 usa três tipos de caracteres entre (letras caixa baixa, letras caixa alta, números e caracteres especiais). Continue lendo

Removendo os emojis do header do WordPress

Volta e meia montando um tema nos deparamos com algumas tags que o WordPress põe como padrão como o emojis e o embed (sim é possível remover isso também).

Essas tags deixam visualmente um tema básico ou baseado nos temas do WordPress elegante e visualmente iinteressante. Mas são desnecessários quando você está montando um tema já com o html pronto! Então segue abaixo um conjunto de comando de remove_actions para tirar esses carinhas do header do seu tema.

Continue lendo

Acompanhamento de Progresso no cURL com PHP

Utilizo com certa frequencia o cURL em meus projetos e adoro ele por conta de todas as possibilidades que ele nos dá, principalmente com o envio de cabeçalhos. Mas uma novidade para mim foi descobrir que era possível o acompanhamento de progresso no cURL com PHP.

Achei isso simplesmente fantástico! Estava com um problema em que uma aplicação não conseguia fazer o download de arquivos muito grandes, mas como saber onde era o problema? Procurando na internet toda encontrei callback do cURL para PHP que nos avisa a toda vez que um pedaço do arquivo é baixado ou subido. Continue lendo

PHP Curl Timeout e ConnectTimeout

Encontrei um problema no usando o php curl timeout . Problema relativamente leve no meu código. Utilizando o cURL para fazer o download de arquivos em um dos meus projetos me deparei com o cancelamento do download. Debugando inicialmente pensei que o arquivo que estava baixando estivesse corrompido, mas não estava, conferi todas as fontes e elas estavam perfeitas.
Segundo achei que fosse o tempo de execução do PHP, mas reparei que estava usando ele em CLI, logo não teria esse problema.
Terceiro alguma merendagem minha na configuração do cURL, esse dentre os dois primeiros tinha altas chances de ser a correta, ou a incorreta. Depende da interpretação. Esse era mesmo o problema, mas como ter certeza disso? Debugando!

Observando o código que eu tinha que está abaixo, é possível ver que ele é um código simples que qualquer tutorial de php cURL na internet te ensina a montar. Continue lendo

NGINX 413 Request Entity Too Large Error

Me deparei com uma “merendagem” na configuração do NGINX (nginx 413 request entity too large). Tentava enviar um arquivo encodado na base64 para um servidor recém inaugurado quando encontrei dificuldades para enviar alguns arquivos.  De inicio imaginei que pudesse ser um problema na origem, do servidor que estava enviando, debugando descobri que o CURL estava dando timeout por conta do enorme tamanho do arquivo e da pequena banda larga, resolvido neste post.

Depois de resolver esse problema, o arquivo continuava a não subir, até que analisando o log de retorno vi a linda mensagem: 413 Request Entity Too Large Error and Solution Continue lendo

Problemas com a quantidade de itens no carrinho

Trabalhando junto com um cliente fizemos a atualização da versão do seu Magento da 1.7 para a 1.9. Fora um ou outro pequeno contratempo podemos dizer que a atualização correu de forma limpa. No entanto, eis que nos deparamos com um problema, que até então eu nunca tinha visto, a quantidade de itens no carrinho de nenhum produto era atualizado!

Toda a atualização correu bem e apesar de todos os testes que fizemos essa passou em branco. Acontece que desde a versão 1.8 do Magento ele trás um mecanismo de proteção contra CSRF em alguns formulários. Logo se você tem o Magento e o seu tema utiliza uma página de carrinho própria ( cart.phtml ) e você está enfrentando o mesmo problema com a quantidade de itens que não são atualizadas no carrinho você pode seguir os seguintes passos: Continue lendo