Filed under PHP

Plugin PHP Coding Standards Fixer (php-cs-fixer) para o PHP-Build

Olá, pessoal!

Depois do plugin do Composer para quem usa o php-build do CHH (já tinha falado dele aqui e aqui), consegui lançar mais um plugin: o Plugin do PHP Coding Standards Fixer (php-cs-fixer). Primeiro vamos contar a história do php-cs-fixer:

Logo do php-cs-fixer

Logo do php-cs-fixer

Criado pelo Fabien Potencier, chefe da Sensio Labs, o php-cs-fixer é uma ferramenta que corrige automaticamente um código fonte para seguir os padrões da PSR2. Ele foi criado com foco na correção automática do código do framework Symfony, do qual é o Fabien é mantenedor; e hoje a ferramenta está liberada com código aberto para a comunidade PHP.

Composer?

Sempre que possível, gosto de utilizar o Composer nos projetos para gerenciar minhas dependências. O php-cs-fixer está listado no Packagist, e pode ser instalado por lá, mas o que fazer nos casos que não vai usar o composer? Aí foi procurar qual a melhor forma de fazer isso: deixar a ferramenta instalada globalmente junto do meu PHP.

No próprio site oficial do php-cs-fixer eles sugerem que a forma de instalação é usando o arquivo PHAR que eles disponibilizam para download, e foi em cima desse arquivo PHAR que o plugin para o php-build foi desenvolvido.

Plugin

O que o php-build faz é o seguinte:

  • logo depois de compilar a versão sua do PHP, ele abre o plugin como um after_install
  • o plugin baixa o php-cs-fixer.phar mais recente
  • esse arquivo é renomeado para php-cs-fixer
  • ele é colocado numa pasta acessível ao PATH definido pelo php-build/phpenv nessa versão que você acabou de compilar
  • e no fim, é dada permissão de execução nesse script php-cs-fixer

Pronto! Agora, sempre que precisar rodar a ferramenta é só executar $ php-cs-fixer com os parâmetros desejados.

Considerações

Para facilitar:

- Github: https://github.com/rogeriopradoj/php-build-plugin-phpcsfixer

- DocumentUp: http://documentup.com/rogeriopradoj/php-build-plugin-phpcsfixer

Fiquem à vontade para tirar dúvidas e dizer o que acharam.

Até mais!

Tagged , , , , ,

Plugin Composer para o PHP-Build

Olá, pessoal.

Logo do Composer

Logo do Composer

Para os que já utilizam o php-build, do CHH, foi lançado o plugin para já deixar disponível o Composer na linha de comando automaticamente a cada novo Build do PHP.

https://github.com/rogeriopradoj/php-build-plugin-composer

http://documentup.com/rogeriopradoj/php-build-plugin-composer

Eu já falei um pouco sobre o php-build nesse artigo sobre como eu atualizei a versão do meu PHP no meu Mac.

 

Feedback?

 

Tagged , ,

Como atualizar a versão do PHP no Mac OSX Mountain Lion

Olá, pessoal Venho usando o Vagrant (oficial, tradução e meu github) faz um tempo, para diminuir o número de coisas instaladas no meu notebook[bb], mas precisava atualizar a versão do PHP que tinha instalado por padrão no meu Mac OSX.

Participando do projeto do iMasters, oPHPortunidades (veja os hangouts), precisei rodar alguns comandos básicos no console, usando o excelente Composer, mas por não ter a última versão do PHP ficava difícil acompanhar o pessoal. Principalmente pela funcionalidade do servidor web embutido no PHP 5.4, que economiza bastante tempo para não precisar de configurar um Apache apenas para teste de uma aplicação.

É fato que usando o Vagrant poderíamos deixar preparado algumas receitas básicas, Puppet ou Chef, para deixar subir uma máquina com a última versão do PHP, mas a possibilidade abrir um terminal em um diretório com um projeto mínimo rodando apenas um php -S localhost:8080 em vez de um vagrant init, subl Vagrantfile, vagrant up, vagrant ssh etc etc era interessante.

Foi nesse momento que fui procurar uma opção de atualizar a minha versão global do PHP, do 5.3.15 que é a que vem instalada no Mac OSX Mountain Lion, para a versão mais nova estável, 5.4.8 quando esse artigo foi escrito. Quando comecei a usar o Mac, em agosto 2011, procurei uma solução parecida com a que usava no Windows, o XAMPP, e tinha encontrado o MAMP e o próprio XAMPP (que eu tinha usado no meu tempo de Ubuntu também também tem versão Mac). Mas não queria mais utilizar uma opção desse tipo. Queria ter a última versão realmente instalada e acessível a partir da linha de comando.

O primeiro lugar onde fui olhar foi o manual do PHP, que agora está um pouco mais atualizado, mas até quando eu vi (setembro 2012) só tinha uma sugestão: compile o PHP usando as instruções para UNIX. Escolhi não usar essa opção.

Um tempo atrás o Fábio Ribeiro perguntou no Twitter como o pessoal estava montando o ambiente PHP no OSX, e na época ele recebeu a indicação do Homebrew. Essa seria uma opção interessante.

Enquanto estava ajudando na tradução do PHP The Right Way, o PHP Do Jeito Certo, verifiquei que já existia uma pacote binário da versão mais nova do PHP 5.4, a http://php-osx.liip.ch/, que era até a versão recomendada pelos criadores do site. Mais uma boa opção para escolher.

Enfim, fui procurar um maior embasamento para minha escolha final: perguntar no Facebook, no grupo PHP Brasil. Lá vários caras que entendem do assunto deram suas opiniões e o mais legal: me deixaram com mais dúvidas ainda!!! Isso porque surgiram mais umas opções lá ainda não conhecia: o php-build e o phpenv.

O php-build é uma cara para compilar o php automaticamente a partir do repositório oficial do PHP, e o phpenv é uma ferramenta para definir qual versão do PHP você irá utilizar no caso de você ter instalado várias opções paralelamente. No fim, foi essas duas opções juntas que escolhi usar e vou mostrar aqui como fiz:

  1. Instalar o wget, usando o homebrew (ele é usado pelo php-build, mas você pode escolher outra forma de instalar o wget)
  2. Executar o brew install pkg-config curl freetype gettext jpeg libpng mcrypt zlib re2c tidy openssl pcre libxslt xmlrpc-c regex-opt exif json-c gd libiconv base64 icu4c lemon gmp t1utils mhash expat, usando o homebrew (pelo menos na versão do PHP 5.4.8 pelo php-build ele pediu algumas dependências, depois que instalei esses pacotes o problema parou de acontecer aqui)
  3. Instalar o php-build (usando a instalação padrão com o git, http://chh.github.com/php-build/)
  4. Instalar o phpenv (seguir o caminho que foi feito para instalar o php-build, depois na pasta bin, executar o phpenv-install.sh)
  5. Atualizar o seu PATH seguindo as orientações da saída do comando phpenv
  6. Instalar a versão que você quer do PHP, seguindo a instrução daqui: https://github.com/CHH/phpenv#description
  7. Rodar o phpenv rehash, o phpenv global com a versão escolhida e pronto!

Se você executar um php -v antes de fazer todos os comandos, você deve ver a sua versão do PHP como 5.3.15. Depois dos comandos acima, se executar um php -v deve ver a versão do PHP mais nova que você instalou (no meu caso ficou o PHP 5.4.8).

É isso aí pessoal, quem ficar com dúvidas pode perguntar nos comentários.

Até a próxima.

Tagged , , , , , , ,

[atualizado8x] Promoção Entrada VIP – PHP Conference Brasil 2012 – Vou palestrar 2x

Olá, pessoal.

PHP Conference Brasil 2012 - 7 anos

Estou feliz e ansioso pois esse ano vou ser palestrante duas vezes na PHP Conference Brasil 2o12, a sétima edição do “O principal evento de PHP da América Latina” or “The main PHP event in Latin America” :-) .

As palestras são as seguintes;

Vou palestrar na PHP Conference Brasil 2012

Agora chega de propaganda, e vamos ao que todo mundo está esperando: entrada VIP de graça d’grátis na faixa sem custo algum.

Promoção-relâmpago

Tenho uma (ou duas) entradas vip, modalidade SILVER (que permite assistir todas as palestras do evento), válidas para uso até hoje, 25/10/2012.

Se você estiver interessado em ganhar uma dessas inscrições de graça, vou fazer o sorteio lá no meu Twitter, o @rogeriopradoj (você não precisa estar me seguindo para concorrer, mas se quiser aproveitar :-) ).

Primeira coisa: se você não tem uma conta lá no Twitter, crie uma gratuitamente.

Para participar, basta postar o tweet abaixo no seu perfil (ou retuitar) até as 13-14 horas (pelo horário de Brasília) de hoje, quinta-feira, 25 de outubro de 2012. Atenção: o tweet deve ficar exatamente desta forma (com a mesma URL!):

Estou concorrendo a entradas VIP – SILVER para a @phpconferencebr, sorteadas pelo @rogeriopradoj! http://migre.me/bjExt

Após a data e horário limites (hoje, 25/10/2012, até as 13-14), vai ser feito o sorteio entre os participantes.

Algumas regras:

  • Utilizarei o sistema Sorteios.org ou o Sorteie.me, e vou colocar o resultado final aqui depois.
  • Para ter a sua participação validada, siga à risca as instruções acima. Você precisa ter postado o tweet ou dado RT na mensagem (tanto de forma nativa quanto no método antigo) como apresentado acima, incluindo a URL Migre.me — e não se preocupe se o Twitter alterá-la para T.CO automaticamente.
  • Quem não tem conta no Twitter, não gosta da (ou tem pouco tempo para a) rede social ou coisa do tipo também pode participar. Basta se registrar lá e seguir as instruções conforme apresentamos aqui, associando a sua conta a um cadastro no nosso banco de dados.
  • Você pode postar quantos tweets quiser em sua conta, mas apenas um será contabilizado pelo sistema. Você *não* ampliará suas chances de ganhar fazendo isso.
  • Como o VIP só vale até hoje, 25/10/2012, o(s) ganhadores terão que responder em até 30 minutos com os dados para que eu possa enviar as informações para utilização do prêmio. Caso não conseguir, o prêmio será passado para um próximo sorteado.

Boa sorte, pessoal, e boa PHP Conference para todos!

ATUALIZAÇÃO – 15h30

Saiu o resultado:

@willmendesneto e @dannjesus foram os vencedores, link do sorteio.

Os ganhadores tem até as 16 horas para me mandar o e-mail de contato para que eu encaminhe as cortesias. Se algum deles não conseguir, novo sorteio para conseguir enviar o código para utilização do prêmio.

Lembrar que a mensagem com o e-mail tem que vir do Twitter (para confirmar que é a mesma pessoa)!!!

ATUALIZAÇÃO – 16h30

Como os primeiros não responderam no Twitter, conforme regra, saiu o novo sorteio.

Ganhadores:

@WesleyRib e @MayogaX foram os vencedores dessa vez!

Link do sorteio: http://sorteios.org/resultado/twitter/en

Pessoal, percebam que esse link do sorteio eu listei todo mundo por ordem. Fica assim:

  • Quem já ganhou e não respondeu, fica fora.
  • Quem ganhou, na ordem, será avisado via Twitter e terá 30 minutos para responder.
  • A resposta tem que ser via Twitter me informando o e-mail (mande por DM ou mention mesmo)
  • Se algum não responder, passa para o próximo da lista que terá os mesmo 30 minutos para responder a partir do meu contato no Twitter da pessoa.
  • Vou atualizando esse post com os resultados.
Parabéns a todos!

 ATUALIZAÇÃO – 17H43

@WesleyRib não respondeu, próximo da lista é o @adanfm.

Boa sorte!

ATUALIZAÇÃO – 18H35

@adanfm não respondeu, próximo da lista é o @rudwolf.

Boa sorte!

ATUALIZAÇÃO – 19H28

@rudwolf não respondeu, próximo da lista é o @rafael_mussi.

ATUALIZAÇÃO  - 19H48

@rafael_mussi ainda está em tempo, mas já está quase no fim da linha.

Se ele não conseguir confirmar, fiquem de olho quem ainda está na lista, a ordem será a seguinte:

@ifranca

@jstecladista

@easakira

@xDuh

@dannjesus (obs.: está no fim desta lista pois não conseguiu responder no prazo no primeiro sorteio)

@willmendesneto (obs.: está no fim desta lista pois não conseguiu responder no prazo no primeiro sorteio)

 ATUALIZAÇÃO – 20H00

@rafael_mussi não respondeu, próximo da lista é o @ifranca.

Boa sorte!

ATUALIZAÇÃO – 21H47

@ifranca não respondeu, próximo da lista foi o @jstecladista.

Ele respondeu com o e-mail dentro do prazo e já recebeu o código.

Obrigado a todos que participaram, e parabéns aos que ganharam no fim (@MayogaX e @jstecladista).

E para quem não ganhou, não desanime. Corre lá para fazer sua inscrição com desconto especial até dia 14/11/2012. Lembre que, investir em você mesmo, não tem preço ;-) .

Tagged ,

Vagrant: O que, Por que e Como

Tradução livre de Vagrant: What, Why, and How, disponível em http://net.tutsplus.com/tutorials/php/vagrant-what-why-and-how/.

Este artigo te ajudará a usar o Vagrant para administrar suas instâncias de máquinas virtuais e explicará como se beneficiar do Puppet para fazer a provisão de vários recursos como o PHP e o PostgreSQL.

garoto propaganda do vagrant

Garoto propaganda :-) da ferramenta Vagrant – http://vagrantup.com

Introdução

Os desenvolvedores tem à disposição um grande número de maneiras de construir seu ambiente de desenvolvimento web. Podem ser usadas opções “locais”, do tipo dos servidores “tudo em um”como o Zend Server, XAMPP, MAMP, WAMP etc; ou ainda como você instalando os componentes a partir dos fontes ou via um sistema de gerenciamento de pacotes, como o Homebrew, o Apt ou o Yum.

Isso vai se acumulando a medida que você trabalha em vários projetos diferentes: PHP 5.3 e PHP 5.4, MySQL, SQLite, MongoDB, Postgres, PEAR, PHPUnit, Rails 3.1, Memcached, Redis, Gearman, NodeJS etc. E se você precisar  atualizar seu computador se ele pifar, você terá que começar tudo de novo.

Pode ser usada uma configuração “remota”, com um servidor com compartilhamentos “Samba” ou um servidor SSH montado com uma ferramenta como o ExpanDrive. A última opção esbarra na latência de leitura e escrita dos arquivos, que é extremamente chata. É possível usar o SSH com o Vim para tudo, o que é rápido, mas só funciona se você quiser usar o Vim para tudo também.

Desenvolvimento vs Produção

Mesmo que você esteja feliz com a forma que vem fazendo as coisas até agora, quantas vezes você já ouviu (ou disse) “Bem, está funcionando no meu computador”?

Isso é terrivelmente comum e acontece quando os ambientes diferem até mesmo nos detalhes mais triviais.

É extremamente importante garantir que seu ambiente de desenvolvimento seja idêntico ao ambiente de produção, e que ele também corresponda ao servidores de staging e de teste se esses existirem.

Isso pode parecer fácil se você pensar apenas na instalação do Apache, do PHP de alguma cópia do MySQL, porém existem milhões de fatores para avaliar. Se você estiver desenvolvendo no OSX e fazendo deploy num sistema Ubuntu, então você deve se deparar com problemas estranhos relacionados a maiúsculas. Isso é comum no CodeIgniter, quando alguém cria uma biblioteca com a primeira letra minúscula. Ela irá carregar corretamente no OSX, mas irá quebrar quando for implementada na produção. Seu processo de desenvolvimento pode ter feito você perder alguns contratos só por causa de algumas diferenças triviais entre sistemas operacionais que ninguém notou até ser muito tarde.

Desenvolvimento = Produção

Então qual é a solução? Forçar que todos os desenvolvedores joguem fora suas ferramentas e trabalhem todos no mesmo modelo de laptop? Se os seus colegas ganharem Macbooks novinhos em folha talvez você não ouça muitas reclamações, mas você teria que usar o OSX Server para tudo.

Você poderia usar o Linux para tudo, mas entraria numa briga para decidir qual distribuição utilizar. Forçar os desenvolvedores para usar o mesmo sistema operacional gera problemas, reduz a produtividade e promove lutas de nerds.

A virtualização é a resposta e isto não é nada novo, mas geralmente quando pensamos em virtualização pensamos nos problemas de performance e nas ventoinhas girando que nem malucas enquanto o sistema tenta rodar dois sistemas operacionais ao mesmo tempo.

Essa situação pode ser verdade quando tentamos rodar o Windows em uma máquina não muito potente mas, hoje em dia, um Mac mediano com 4 GB de RAM de fábrica é mais do que suficiente para rodar uma instalação de um servidor Ubuntu em modo de linha de comando com todas ferramentas habituais (IDE, browser, ferramentas de depuração etc.). Existem diferentes versões de virtualização, mas eu prefiro o VirtualBox da Oracle (que é grátis). Esse programa faz o “trabalho pesado” da virtualização, enquanto a ferramenta Vagrant serve para gerenciar as instâncias.

Passo 1 – Instalando o VirtualBox

Primeiro, baixe e instale o VirtualBox. Nos sistemas *nix (Mac OSX, Linux etc.) você precisará alterar seu .bash_profile (ou .zsh_profile) para estender a variável $PATH:

Isso permitirá que o Vagrant saiba onde o VirtualBox está instalado e, é claro, será diferente em cada sistema operacional.

Passo 2 - Instalando o Vagrant

Você pode baixar um binário do vagrant para o seu sistema operacional, ou instalar ele como uma gem se não houver um binário disponível:

Passo 3 - Criando uma Instância

Crie um lugar para suas configurações ficarem:

Iremos usar o Ubuntu 12.04 LTS (Precise Pangolin), o qual já tem uma “box” configurada.

Aqui você enxerga o argumento “precise32″, que é o apelido da URL. Agora você pode criar a instância que irá baixar o arquivo .box.

Agora ela estará rodando. Fácil! Se você quiser acessar a instância via SSH, use este comando:

Passo 4 - Configuração

Você terá um arquivo, chamado Vagrantfile, que conterá a configuração dessa instância:

Essa é, se você ainda não notou, sintaxe Ruby; por isso você pode ser bem criativo com o arquivo, apesar de aqui só termos o básico.

Ele mostra qual apelido usar, e tem a URL para o caso do apelido não estar definido localmente (útil para casos de compartilhamento).

As linhas share_folder são bem úteis para mapear pastas da instância com pastas locais. Usando nfs => true a instância será capaz de escrever e alterar permissões dos arquivos, o que é útil se você estiver, por exemplo, tentando instalar um CMS ali.

O redirecionamento de portas permite que você acesse sua instância em http://localhost:8080 e, é claro, faça alterações para diferentes portas em caso de conflito.

Esse arquivo de configuração também define o fuso horário para Europe/London, depois executa o apt-get update, que força seu sistema para se atualizar toda vez que ele é iniciado. Se você pular esse item da configuração, pode encontrar vários pacotes se recusando a instalar pois as referências estão desatualizadas.

Quando você alterar a configuração, pode recarregar a instância para utilizá-la:

Agora que nossos servidores estão no ar e prontos para continuar, precisamos instalar neles alguns softwares. Não vamos só rodar o apt-get install em um monte de pacotes na linha de comando, vamos “provisionar” nossos servidores.

Passo 5 - Provisionamento

O provisionamento ou configuração do servidor não é algo que a maioria dos desenvolvedores pensam a respeito pois isso é feito normalmente pelos sysadmins. A ideia é criar algum registro do que software e configurações foram postas em um servidor assim você poderia criar novos ambientes de desenvolvimento, novos servidores staging que replicam os servidores de produção ou então criar outro servidor de produção para fazer balanceamento de carga entre eles.

Provisionamento das antigas

Como os sysadmins lidam com isso varia, mas no passado foram usados todos os tipos de solução – desde manter uma wiki dos comandos que foram executados (o que pode ficar grande e obsoleto rapidamente) e o maravilhoso método de manter um “multi-terminal”, onde você digita os comandos em uma janela e ele replica os mesmos comandos para outros 7 servidores ao mesmo tempo. Todos esses métodos são terríveis.

Uma solução seria criar o seu próprio arquivo .box ou criar um backups .iso assim novos servidores poderiam ser baseados neles; no entanto manter essas imagens gera um monte de trabalho extra e não importa o quanto você tente, essas máquinas de desenvolvimento se tornarão obsoletas com o tempo.

Provisionamento moderno

Existem atualmente dois sistemas populares, o Puppet e o Chef. Ambos existem há anos, mas começaram a se tornar bem populares com o aumento do uso método de desenvolvimento DevOps. As ideias dos dois são parecidas e você deveria estudar os dois sistemas, mas aqui no tutorial iremos nos focar exclusivamente no Puppet.

Basicamente, em vez de rodar um série de comandos e torcer para que tudo dê certo, você criará um manifesto para o Puppet explicando tudo o que você precisar garantir que tenha sido feito. Quando você roda um comando no terminal, você está basicamente dizendo ao computador:

“Instale o Apache”

Com o Puppet você diria:

“Garanta que o Apache está instalado”

Ou, em vez de:

“Crie uma nova pasta, chame-a de /var/www e defina a permissão para www-data:www-data”

Com o Puppet diríamos:

“Garanta que exista /var/www e que tenha permissões que correspondam com www-data:www-data”

A diferença aqui é que esses manifestos podem ser executados múltiplas vezes (em um cron job a cada hora ou diariamente) para deixar tudo atualizado, e não haverá resultados inesperados de algo tentando ser instalado duas vezes.

Ele também irá testar se tudo está rodando como esperado, pois se alguma dessas regras falhar serão emitidos erros que são mais fáceis de rastrear do que rodar o grep numa grande quantidade de resultados de comandos bash. O Puppet irá mostrar erros grandes e vermelhos que deixarão você saber se o PHP não foi instalado ou um módulo específico não puder ser configurado.

Manifestos e Módulos

Os manifestos são um pouco confusos no início, mas depois de um tempo, eles começam a fazer sentido.

Para revisar um exemplo básico:

Não é preciso explicar o que está acontecendo aqui, certo?

Esse arquivo pode ser referenciado mais para a frente no seu manifesto como “testfile”, o que indica que ele pode ser listado como uma dependência para outras ações.

Para exemplos mais complexos, vamos referenciar o os manifestos Puppet do PyroCMS no GitHub.

Ele inclui o módulo “apache”, define algumas variáveis, executa o manifesto extra “apache:php” no módulo apache, cria um virtual host e garante que o “mod_rewrite” está habilitado.

Todas essas classes são definidas no módulo Apache que incluímos.

Continuando, também queremos instalar o PHP:

Esse trecho do manifesto irá instalar as extensões PHP que precisamos e depois a opção notify informará ao Apache que você instalou novas configurações, indicando que ele deve reiniciar.

Aqui será configurado um servidor postgres, criado um banco de dados chamado “pyrocms” e garantir que exista um usuário “pyrocms” com a senha informada.

Perto do fim! O último passo é garantir que você tenha arquivos e pastas com permissões de escrita definidos corretamente:

Isso irá garantir que exista um document root do Apache, que o arquivo de configuração esteja configurado como 0666 e que algumas pastas estejam como 777.

E aí temos tudo!

Se tudo funcionou corretamente, você deve estar vendo vários linhas de texto azul sinalizando cada coisa que está sendo instalada mas, se algo der errado, verá linhas vermelhas. Pesquise no Google sobre esses erros e tente novamente.

Os módulos usados aqui são: Apache, Postgres e PHP, e você pode ver tudo em ação clonando o repositório Vagrant do PyroCMS:

Aponte seu navegador para http://localhost:8089/ e você deve enxergar o instalador. Bem fácil, não?

Nota: Será instalado o MySQL pois o suporte ao Postgres e ao SQLite no PyroCMS ainda está em desenvolvimento, esperando algumas funcionalidades PDO ficarem prontas no CodeIgniter. Se você estiver interessado, pode experimentar alterar o Vagrantfile para usar o manifesto ubuntu-apache2-pgsql-php5.pp, destruir a instância e em seguida iniciá-la novamente. O submódulo pyrocms também precisará de um checkout do git em feature/pdo.

Sumário

Nesse artigo, usamos o Vagrant, o VirtualBox e o Puppet para, não apenas configurar uma instância de um servidor para trabalharmos, mas criarmos um suite de testes para nosso servidor garantir que tudo esteja corretamente executando, instalado e configurado.

Também criamos um checklist para os requisitos e, no futuro, poderemos criar qualquer número de servidores iguais a esse em minutos, e não em horas!

Tagged , ,

Vou palestrar na TDC 2012, Desenvolvimento PHP com Vagrant

Olá, pessoal,

TDC 2012 - Logo

Já está em cima da hora, mas nesse sábado, 07/07/2012, vou ser palestrante no evento TDC – The Developer’s Conference.

TDC São Paulo 2012 - Trilha PHP - Logo

Minha palestra, será dentro da Trilha PHP e abordará como utilizar a ferramenta Vagrant para criar uma ambiente de desenvolvimento PHP com máquinas virtuais de forma fácil.

PHP - Logo + Vagrant Logo

Aproveito para agradecer ao Grupo de Usuários PHPSP, tanto à coordenação que acreditou na palestra e aceitou que eu palestrasse, quanto à própria comunidade que têm tantos profissionais brilhantes que me motivam sempre a buscar aperfeiçoamento.

Diga nos comentários se você já usa ambientes de desenvolvimento virtualizados no seu dia a dia, e se já conhece a ferramenta Vagrant.

Até mais!

Tagged , , , ,

FRAPI – Web APIs de forma fácil no PHP

A inspiração para esse artigo veio a partir do Felipe Marques.

Estive na PHP Conference Brasil 2011 (aqui e aqui), e uma boa parte das trilhas falava sobre serviços.

Rest, restfull, webapis, orientação a serviços… as opções de palestras eram muitas.

De todas a que mais me chamou a atenção foi a RESTFUL webservices com FRAPI do Alex Piaz.

Informações sobre o Frapi você pode pegar aqui e aqui.

Ele precisa que você configure vhost para funcionar seguindo o manual, mas caso você tenha algum impedimento para fazer isso (como eu tenho no escritório, por não usar Apache e a versão do meu webserver não permitir configuração de vhost), subi no Github um repositório com um versão configurada para usar subdiretórios.

Logo Github

Acesse lá.

 

Tagged , , ,

20 maneiras de salvar filhotes e aprender PHP – parte 2

Continuando a tradução livre do 20 Ways to Save Kittens and Learn PHP do NetTuts+, disponível aqui.

3. Não deixe as boas práticas para depois!

A medida que você vai aprendendo irá ouvir bastante sobre boas práticas de programação: coisas como prepared statements e os padrões de codificação da PEAR.

Não deixe para depois o aprendizado desses assuntos só porque eles parecem ser difíceis.

“Se algo é uma boa prática não é porque nós (ou seja, outros desenvolvedores PHP) nos reunimos e dissemos: “Como podemos tornar mais difícil a vida dos iniciantes”" .

As boas práticas existem para manter seus programas seguros, rápidos e gerenciáveis. Aprenda sobre eles o mais rápido que você puder. Na verdade, nem sequer aprenda o jeito errado.

Você vai gastar o mesmo tempo para aprender sobre a mysql_query() ou para aprender PDO e MySQLi. Sendo assim escolher começar aprendendo os dois últimos fará com que inicie com uma base sólida nas interações com bancos de dados e na verdade gastado menos tempo e esforço.

Não se esqueça de navegar no Nettuts+ (e porque não no rogeriopradoj.com) para acessar uma variedade de tutoriais sobre boas práticas em PHP, incluindo o uso de prepared statements.

4. Não deixe as boas práticas para depois!

Só para ter certeza que você tinha visto essa dica.

“Falando sério. Não tente usar atalhos. Toda vez que você viola uma boa prática só porque o jeito certo parece “muito difícil” a Petrobrás mergulha um filhote no petróleo.”

Então se você não quiser fazer isso por si mesmo, pelos seus projetos, pelos seus colegas ou pelo progresso da comunidade como um todo, pelo menos pense nos filhotes.

5. Faça códigos auto-documentados

No início é tentador tentar ser “inteligente” com os nomes das suas variáveis e funções. Talvez você tenha lido um artigo sobre performance ou visto em algum lugar um trecho de código que fazia um monte de trabalho em duas linhas. Pode ser que você queria criar o seu estilo próprio de programar. Ou talvez você só tenha ouvido falar que eu odeio isso e você quer me irritar.

Não importa qual é o motivo dessa tentação, resista a ela a todo custo.

De uma olhada nesse trecho de código:

<?php

 $a = b('jason.lengstorf@copterlabs.com');

 $c = explode('@', $a);

 $d = $c[1];

 echo 'The email address ', $a, ' belongs to the domain ', $d, '.';

 function b($e) { return htmlentities($e, ENT_QUOTES); }

?>

Ele faz sentido para você?

É claro que você pode descobrir o que ele faz, mas por que forçar alguém que está tentando trabalhar em cima do seu código a perder alguns minutos coçando a cabeça tentando lembrar o que a variável $c está guardando.

Vamos então pegar aquele código e deixá-lo mais auto-documentado:

<?php

 $email = sanitize_string('jason.lengstorf@copterlabs.com');

 $email_pieces = explode('@', $email);

 $domain = $email_pieces[1];

 echo 'The email address ', $email, ' belongs to the domain ', $domain, '.';

 function sanitize_string($string) { return htmlentities($string, ENT_QUOTES); }

?>

Pronto. Muito melhor. Agora apenas olhando para o código dá para ter uma ideia geral do que está acontecendo. Sem coçadas de cabeça, sem xingar ninguém em voz baixa e, o mais importante, sem nenhuma diferença real na funcionalidade.

É lógico que você teria economizado alguns bytes com nomes de variáveis menores. Mas, honestamente, se você precisar espremer alguns caracteres dos nomes de suas variáveis para ganhar 0.2ms no tempo de execução do seu programa, provavelmente tem algum problema diferente rolando aí.

Continua…

Parte 1

Parte 2

Tagged

20 maneiras de salvar filhotes e aprender PHP

Tradução livre do 20 Ways to Save Kittens and Learn PHP do NetTuts+, disponível aqui.

Existe um antigo provérbio, originado por volta de 1700, que diz que: “Um filhote morre cada vez que um programador PHP não segue as boas práticas”. Ok, não realmente, vamos apenas seguir adiante.

Começar a usar o PHP pode ser uma experiência assustadora. Tendo isso em mente, essas 20 dicas vão ensiná-lo a seguir as boas práticas e salvar vidas… vidas de filhotes.

0. Programe tão frequentemente quanto puder

Você já estudou alguma língua estrangeira na escola? Estudou todas as partes do discurso, aprendeu os verbos e como conjugá-los, acompanhou como o professor dizia expressões comuns?

Quanto dela você ainda consegue falar?

Se sua resposta for, “nada”, posso apostar que é por causa de você nunca ter usado de verdade a língua – você só a estudou. No entanto se você ainda consegue manter uma conversa, isso se deve a você realmente gastar algum tempo falando aquela língua fora do ambiente de aprendizagem. Talvez você passou um ano no exterior ou trabalhou num emprego onde uma segunda língua era necessária?

Seja qual for  o motivo, você a manteve porque a usou em situações da vida real e colocou ela num contexto pessoal que é muito mais fácil de lembrar depois.

“O PHP é uma língua estrangeira, assim como o espanhol ou o francês. Para que você se torne confortável com ele, você precisa utilizá-lo fora da sala de aula. Tutoriais e e projetos de exemplo são ótimos para aprender os fundamentos mas a menos que você aplique esses conceitos em seus próprios projetos, será muito mais difícil de aplicar esses fundamentos num contexto e gravá-los na sua memória.”

Então, não se preocupe em “não saber o suficiente” para desenvolver um projeto. Quando você escolhe seu projeto, tem uma razão válida para pesquisar um conceito e implementá-lo. Programar frequentemente e com um propósito fará com que as lições que você aprende se fixem.

1. Familiarize-se com o manual do PHP

Toda lista de dicas para iniciantes contém essa daqui, e é por uma boa razão.

“Aprender como navegar na documentação do PHP é a coisa mais simples e útil que você pode fazer para si mesmo como programador.”

Se você olhar no histórico do meu navegador os sites que eu mais visito, o manual do PHP vai estar lá no topo. Não acho que isso deve mudar enquanto o PHP se mantiver minha escolha como linguagem de programação.

Primeiro, o manual parece um pouco assustador – ele não parece ser fácil de pesquisar e a navegação nele às vezes pode ser um pouco estranha. No entanto, você pega o jeito rapidamente.

Talvez a melhor coisa para a saber sobre o manual do PHP é que a maioria das funções pode ser consultada usando o padrão http://php.net/nome-da-função na barra de endereços. Por exemplo, para consultar a função strpos() use http://php.net/strpos e para array_key_exists(), use http://php.net/array-key-exists. (NOTA: preste atenção na omissão dos parênteses e na substituição na barra de endereços dos sublinhados (_) por hífens (-).

1a. Leia os comentários!

É fácil ignorar os comentários, mas faça um favor a si mesmo e de uma olhada neles. Se você está recebendo um resultado inesperado em uma função é provável que alguém já tenha visto algo parecido e explicado sobre nos comentários.

2. Aproveite-se da imensa comunidade online do PHP

Além do manual do PHP, existem comunidades excelentes de desenvolvedores em toda a internet. Algumas das minhas favoritas são os os fóruns StackOverflow.com e W3Schools.com.

Adicionalmente, o Twitter é um lugar surpreendentemente bom para postar suas dúvidas de PHP. Se você tuitar com uma hashtag #PHP, provalmente alguém da comunidade vai vê-la e te dar uma mão.

Uma Nota Sobre o Twitter: É claro, tudo que é útil inevitavelmente é tomado por spammers e por aqueles tristes indivíduos que não entendem profundamente o sentido das mídias sociais. Se estiver usando o Twitter como uma rede de suporte, provavelmente irá bloquear ou ocultar de forma rotineira as contas que vomitam anúncios de emprego ou aquelas que retuítam tudo que menciona o PHP.

“Lembre-se: a medida que você melhora, por favor passe isso para frente. A comunidade de desenvolvedores precisa que todo mundo arregace as mangas, e não levará muito tempo até que você seja capaz de responder perguntas de outros iniciantes. Não se torne um surdo.”

Continua…

Parte 1

Parte 2

 

Tagged

Livros PHP recomendados

Olá, pessoal, aqui segue uma lista de livros recomendados sobre a linguagem PHP:

Fundamentos da linguagem:

  1. PHP 5: Programação Poderosa – Link
  2. PHP Programando com Orientação a Objetos – Link

Frameworks:

  1. CodeIgniter Framework PHP – Link