Utilizando múltiplas versões do PHP no Windows com Laragon

Quem trabalha com várias aplicações PHP ao mesmo tempo, sabe que muitas vezes a versão do PHP é diferente de uma aplicação para outra e que as vezes há problemas de compatibilidade entre uma versão e outra.

No Windows é muito comum utilizarmos o XAMPP ou WAMP para desenvolver localmente. Eles são ótimos caso você trabalhe com uma única versão do PHP, porém são muito “engessados”. Caso você precise de outra versão do Apache, MySQL e PHP, terá que instalar outra versão do programa.

Neste artigo, pretendo apresentar o Laragon, que tem uma proposta um pouco diferente do XAMPP e do WAMP. Com ele é possível escolhermos o que queremos instalar e trocar as versões sem muito esforço, além de vários recursos que facilitam nossa vida de desenvolvedor web.

Animação 1 – Troca de versão do PHP com Laragon

Automatizando atualização de aplicação com Git

Se você tem uma aplicação sendo versionada com Git, acredito que já tenha sentido a necessidade de automatizar o processo de atualização dessa aplicação, ao invés de ter que atualizar os arquivos manualmente ou então ter que logar no servidor via SSH para rodar um git pull toda vez que houver uma atualização.

E se assim que você fizesse a atualização local, desse um git push origin para atualizar o repositório remoto (no Github, por exemplo) e depois desse apenas um git push servidor para atualizar a aplicação em produção, seria muito mais simples certo?

Neste artigo, pretendo mostrar uma forma para automatizar o processo de atualização de uma aplicação, utilizando Git Hooks. Os exemplos mostrados nesse artigo foram testados no Ubuntu 16.04.

Animação 1 – Demonstração do procedimento de atualização

Configurar subdomínio HTTPS com Apache no Ubuntu

Muitas vezes você contrata um VPS (Virtual Private Server) e coloca uma aplicação lá para rodar. Pode ser que essa aplicação comece a crescer e você precisa criar novos módulos ou então decide adicionar novas aplicações, eis então que surge a necessidade da configuração de subdomínios.

Nesse artigo, vou descrever como foi minha experiência ao configurar um subdomínio HTTPS e veremos todos os passos para fazer a configuração. Todo o processo realizado neste artigo foi feito no Apache 2.4 rodando no Ubuntu 16.04.

Backup na nuvem com Dropbox e PHP [API v2]

Vamos supor que você tenha um sistema que armazene documentos dos usuários em uma pasta no seu servidor, porém para manter uma estrutura mais organizada, você separa os documentos em sub-pastas de acordo com o ano. Normalmente você se preocupa em fazer backup do banco de dados, porém e os arquivos desta pasta?

É indiscutível que em qualquer sistema online que armazene arquivos no servidor possua uma estrutura de backup. Uma opção interessante é manter uma cópia desses arquivos em algum serviço de armazenamento na nuvem. Hoje em dia temos diversos serviços desse tipo, porém falaremos especificamente do Dropbox neste artigo.

Veremos neste artigo como copiar uma pasta que está no servidor para uma pasta no Dropbox de forma recursiva, ou seja, copiando todos os arquivos da pasta e de suas sub-pastas.

Chat simples utilizando Websocket, Vue.JS e PHP

O Websocket  é um protocolo que nos permite abrir uma comunicação bidirecional com o servidor utilizando um único soquete TCP (Transmission Control Protocol) através do navegador. Sendo assim, tanto o cliente quanto o servidor podem enviar informações entre si a qualquer momento. Neste artigo, veremos como implementar um simples aplicativo de chat utilizando este protocolo.

No lado cliente utilizaremos o Vue.JS para facilitar a construção da interface do chat, além de manter um código mais organizado.

No lado servidor utilizaremos o Ratchet que é uma biblioteca PHP que nos permite construir um servidor de Websocket de um jeito descomplicado.

Confira o exemplo em funcionamento, clicando aqui.

Menu dinâmico com submenus infinitos utilizando AngularJS e PHP

Neste artigo veremos uma maneira de construir um menu dinâmico, ou seja, no cadastro do menu será definido o menu superior e através de um método recursivo construiremos o menu completo hierarquicamente, permitindo um número “infinito” de submenus.

No lado servidor iremos utilizar PHP para buscar os menus no banco de dados e organizá-los em um vetor de forma hierárquica.

No lado cliente iremos utilizar AngularJS para construir o menu visualmente com base nos dados retornados pelo servidor.

Imagem 1 – Resultado final

Consulta dinâmica com paginação utilizando AngularJS e PHP

Neste artigo pretendo mostrar como fazer uma consulta de registros completamente dinâmica, ou seja, sem a necessidade de recarregar a página para filtrar ou paginar os registros. Utilizaremos como exemplo uma simples consulta de clientes onde o usuário poderá filtrá-los e navegar entre as páginas.

No lado cliente iremos utilizar o AngularJS para facilitar a comunicação com o servidor, além de manter um código mais organizado e reutilizável. Atualmente já temos o Angular 2, porém ainda gosto da simplicidade do AngularJS e acredito que se encaixa melhor no propósito deste artigo.

No lado servidor iremos apenas utilizar uma biblioteca de Query Builder para montarmos nossa query de consulta com o banco de dados. Hoje em dia é muito comum a utilização de um Query Builder em frameworks e no nosso caso vai facilitar muito a paginação dos registros.

Confira o exemplo em funcionamento, clicando aqui.

Backup do banco de dados MySQL com PHP

Hoje em dia temos diversas ferramentas para gerar backup de um banco de dados MySQL. Podemos gerar manualmente através do phpMyAdmin ou então por linha de comando utilizando o mysqldump, por exemplo.

Se o seu projeto estiver hospedado em uma hospedagem compartilhada, você provavelmente não tem acesso a linha de comando, e suas opções para automatizar o processo de backup ficam limitadas.

Neste artigo vou apresentar uma forma de fazer o backup com PHP, utilizando uma biblioteca que gera o backup completo do banco de dados sem precisar de nenhuma dependência. Além disso vamos implementar um método para apagar os backups antigos, mantendo apenas uma quantidade X de backups.

Backup na nuvem com Dropbox e PHP

[Update 01/05/2020]
A versão 1 da API do Dropbox utilizada por esse artigo esta obsoleta. Veja a versão deste artigo utilizando a versão 2 da API, clicando aqui.

Vamos supor que você tenha um sistema que armazene documentos dos usuários em uma pasta no seu servidor, porém para manter uma estrutura mais organizada, você separa os documentos em sub-pastas de acordo com o ano. Normalmente você se preocupa em fazer backup do banco de dados, porém e os arquivos desta pasta?

É indiscutível que em qualquer sistema online que armazene arquivos no servidor possua uma estrutura de backup. Uma opção interessante é manter uma cópia desses arquivos em algum serviço de armazenamento na nuvem. Hoje em dia temos diversos serviços desse tipo, porém falaremos especificamente do Dropbox neste artigo.

Veremos neste artigo como copiar uma pasta que está no servidor para uma pasta no Dropbox de forma recursiva, ou seja, copiando todos os arquivos da pasta e de suas sub-pastas.

Uma breve introdução ao Composer

Vamos supor que você está trabalhando em um projeto PHP e em algum momento você precisa de uma biblioteca para manipulação de strings. Para não reinventar a roda, você decide procurar alguma biblioteca pronta na internet. Você acha uma biblioteca X com os recursos que você precisa e então baixa ela para utilizar em seu projeto. Porém, ao rodar o projeto, descobre que a biblioteca X dependente da biblioteca Y. Sem escolha, você baixa a biblioteca Y e então descobre que ela depende da biblioteca Z; e assim por diante.

É neste inferno de dependências que entra o Composer para nos ajudar. O Composer é uma ferramenta para gerenciar dependências em um projeto PHP. Basta você definir quais bibliotecas que o seu projeto dependente e o Composer vai fazer o trabalho de baixar e atualizar elas e suas dependências.

Redimensionar imagem antes de enviar com Javascript

Normalmente, quando fazemos o upload de uma imagem nós precisamos redimensiona-lá para reduzir seu tamanho. Esse processo normalmente é feito do lado servidor, ou seja, enviamos a imagem na sua forma e tamanho original e então redimensionamos no servidor utilizando PHP, por exemplo.

Porém, em um aplicativo de galeria de fotos, por exemplo, o usuário normalmente baixa as fotos (em alta resolução) de sua câmera e quer em seguida enviar para o aplicativo. Supondo que ele deseja enviar 200 fotos, cada uma com 5 MB, seria necessário fazer o upload de 1 GB de dados para o servidor, para que então possamos reduzi-las em um tamanho viável.

Sendo assim, pretendo apresentar nesse artigo uma solução para este problema. Vamos ver como redimensionar a imagem antes de enviar ao servidor, utilizando Javascript. Para isso faremos um formulário para envio de várias imagens que serão salvas em uma pasta no servidor.

Confira o exemplo em funcionamento, clicando aqui.

Salvar imagem no banco de dados com PHP/MySQL

Quando precisamos fazer o upload de uma imagem, geralmente temos duas opções:

  • 1 – Copiar a imagem em uma pasta no servidor e salvar apenas o caminho no banco de dados, como é feito nesse artigo.
  • 2 – Converter a imagem para binário e salvá-la diretamente no banco de dados.

O primeiro método é o mais comum, pois é mais fácil de ser implementado, além de ter melhor desempenho. Porém, em alguns casos torna-se necessário salvar a imagem diretamente no banco de dados, e assim recorremos ao segundo método. A desvantagem é que é um pouco mais trabalhoso de ser implementado e o desempenho é menor se comparado ao primeiro método, pois será necessário converter a imagem de binário para seu formato original toda vez que for necessário mostrá-la ao usuário.

Nesse artigo veremos como implementar o segundo método. Criaremos um cadastro de fotos sem contexto, apenas para demostrar a ideia, vamos nessa?

Confira o exemplo em funcionamento, clicando aqui.

Facilitando requisições AJAX com jQuery Form Plugin

A biblioteca JQuery já nos facilita bastante a fazer requisições AJAX. Porém, sempre que enviamos um formulário via AJAX, normalmente é necessário armazenar todos os campos em variáveis para então enviar ao servidor. O jQuery Form Plugin é um plugin que tem o objetivo de facilitar ainda mais esse processo. Basicamente, ao enviar um formulário, o plugin armazena as informações de cada elemento do formulário e envia ao servidor utilizando AJAX. Para exemplificar seu uso, vamos criar um formulário bem simples.

Acessando API do twitter via OAuth com PHP | Parte 2

Fala pessoal, tudo certo? Dando continuidade a esta série de artigos, hoje vamos ver como buscar e exibir as informações do twitter.

Para quem ainda não viu, recomendo a leitura da primeira parte:
Acessando API do twitter via OAuth com PHP | Parte 1

Para buscar as informações no twitter, basta utilizar o método get() de nossa classe. O primeiro parâmetro é o recurso que será utilizado. Para saber os recursos da API do twitter é só acessar a documentação da API.

Confira a aplicação em funcionamento