Your SlideShare is downloading. ×
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br           Proposta de Boas Práticas e    ...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brLicença       Você é livre para compartilh...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brPúblico-alvo       Este documento destina-...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brÍndiceLicença................................
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brIntrodução       Pergunte a qualquer membr...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brDetalhamento      As boas práticas e padrõ...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br                                          ...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br      Isso nada mais é do que encorajar e ...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br                                          ...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br   4. Produção: Com a certeza de que a apl...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br                                          ...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br                                          ...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br                                          ...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br                                          ...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brEx. 2 – Query:$sql = “SELECT u.id FROM usu...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br                                          ...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br                                          ...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brConclusão       A criação de uma padroniza...
Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brSobre o Autor  Er Galvão Abbott trabalha h...
Upcoming SlideShare
Loading in...5
×

Proposta de Boas Práticas e Padrões de Desenvolvimento Web

8,075

Published on

Sugestões de boas práticas e padrões a serem debatidos e adotados no desenvolvimento de aplicações web.

Transcript of "Proposta de Boas Práticas e Padrões de Desenvolvimento Web"

  1. 1. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br Proposta de Boas Práticas e Padrões de Desenvolvimento Web CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 1 / 19
  2. 2. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brLicença Você é livre para compartilhar, adaptar e reproduzir esse material, contanto que asseguites condições sejam respeitadas: • Atribuição: Você incluir a atribuição explicita ao autor deste documento, Er Galvão Abbott, com uma indicação para o seu site: http://www.galvao.eti.br/ • Licenciamento similar: Seu trabalho deve ser licenciado de forma igual ou similar a este, possiblitando que as pessoas distribuam e adaptem trabalhos derivados, com igual responsabilidade de Atribuição. Quaisquer das condições acima pode ser liberada, através de permissão explícita epor escrito do Autor.Aviso Tudo o que este documento faz é sugerir boas práticas e padrões nodesenvolvimento de aplicações web. O Autor não pode ser responsabilizado direta ouindiretamente, por nenhum problema criado pela adoção do que aqui é exposto, assimcomo não espera nenhuma forma de recompensa por melhorias que este documentovenha a trazer. Conforme exposto na introdução deste documento, o importante não é considerarnenhuma das sugestões aqui apresentadas como “a melhor forma de fazer”, mas sim adefinição, clara e publicamente a disposição de toda a empresa, de padrões e boaspráticas, bem como a disciplina por parte da equipe em seguí-las. Além disso tome cuidado para não cair em uma “armadilha” comum: Não alterenenhum projeto atualmente em desenvolvimento ou já desenvolvido. Qualquer que seja oconjunto de boas práticas que sua empresa venha a adotar, acredite, ele só será viável seaplicado a partir de novos projetos. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 2 / 19
  3. 3. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brPúblico-alvo Este documento destina-se especificamente a profissionais do mercado dedesenvolvimento de aplicações com interface web. Embora alguns tópicos sejamespecíficos para certas tecnologias ou linguagens (como Javascript e PHP), a maioria daspropostas aqui apresentadas pode ser facilmente transposta em parte ou integralmentepara tecnologias e linguagens diferentes. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 3 / 19
  4. 4. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brÍndiceLicença...................................................................................................................................2Aviso.......................................................................................................................................2Público-alvo............................................................................................................................3Introdução..............................................................................................................................5 Exceções...........................................................................................................................5Detalhamento.........................................................................................................................6Conclusão............................................................................................................................18Sobre o Autor.......................................................................................................................19 CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 4 / 19
  5. 5. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brIntrodução Pergunte a qualquer membro de uma equipe de desenvolvimento web qual seria opior cenário de trabalho possível. Entre várias respostas você perceberá uma quantidadegrande de queixas em relação a trabalhar em projetos já existentes. Por se tratar de um nicho muito novo de mercado o desenvolvimento web trazproblemas derivados da falta de rotinas de trabalho bem definidas e padronizadas. Istonormalmente se traduz em aplicações que se tornam verdadeiros quebra-cabeças, comproblemas que vão de códigos com diferenças estruturais gritantes a utilização de rotinasdiferentes para solucionar problemas iguais, entre dezenas de outros. Esta situação frequentemente leva os profissionais a realizarem um trabalho deformalização antes do trabalho propriamente dito. Isto causa um impacto considerável naexecução das tarefas e termina por afetar o projeto no sentido de gerar atrasos nosprazos e um custo maior do que o alocado inicialmente no orçamento. Se este trabalho extra solucionasse de fato o problema talvez estes atrasos ecustos adicionais pudessem ser considerados aceitáveis, mas como esta formalização sedá com base em teorias particulares de cada membro da equipe e não se tornam padrão,o caos se mantém. Este documento não se propõe a ser uma solução “mágica”, “nova” e muito menos“fácil”, mas uma série de rotinas e padrões sugeridos para serem debatidos, aceitos ounão e então definidos. É esta definição que representa a solução. Ela deve ser clara, estardisponível e ser apresentada a cada membro da equipe.Exceções Este documento propositalmente deixa de fora os tópicos Sistema Operacional eIDE: Sistema Operacional é, geralmente escolha da empresa, enquanto que a IDEnormalmente é escolha do desenvolvedor. É importante que essas características semantenham porque no caso da empresa geralmente é uma questão de obrigatoriedade epara o desenvolvedor é hábito, agilidade e conforto. Concluindo, são questões que, a não ser que conflitem com questões técnicas (oque raramente acontece), devem ser deixadas de lado. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 5 / 19
  6. 6. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brDetalhamento As boas práticas e padrões sugeridos neste documento utilizam basicamente duasformas de legenda: uma relativa a linguagem/teconologia a qual se aplica e outra quesugere a importância em aplicá-la o mais rápido possível, como demonstro a seguir: PHP Javascript XHTML CSS Todas N/ATable 1: Linguagens/Tecnologias Importância Vital Altamente Recomendada Menor ImportânciaTable 2: Importância de implementação N/A1. Versionamento Importância Vital Versionamento deveria ser algo implícito em qualquer empresa de desenvolvimento,mas infelizmente as coisas não funcionam dessa forma. Todo e qualquer arquivopertinente a um projeto deve ser, inequivocadamente, versionado. Tomo a liberdade deencerrar o assunto por aqui, certo de que os motivos específicos para se versionararquivos/projetos sejam claros para qualquer empresa ou profissional. N/A2. Frameworks Altamente Recomendada Frameworks são extremamente importantes, pois não apenas facilitam o trabalho deorganizar e padronizar o desenvolvimento, mas também tornam este trabalho mais fácil. Éimportante, entretanto, saber escolher um framework. Este deve possuir as seguintescaracterísticas: • Estabelecimento: Deve estar estabelecido há um tempo suficiente para inspirar confiança. • Flexibilidade: Não deve limitar o desenvolvimento, ou seja: fatalmente terá suas regras de utilização, mas estas devem ser ou contornáveis ou aceitáveis. • Ativo: Deve possuir um ciclo de desenvolvimento ativo, onde bugs e novas features são constantemente resolvidos/implementados. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 6 / 19
  7. 7. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br N/A3. Estrutura de Diretórios Importância Vital A estrutura de diretórios é vital na organização e estruturação de um projeto. Um dosequívocos mais comuns é tratar um projeto como simplesmente código-fonte e maissimplesmente ainda como uma pasta web. A estrutra de armazenamento de arquivos deum projeto deve prever mais do que isso, e não há razão – além de uma preocupação tolade que cada checkout inicial seja longo – pela qual todos os arquivos não devam serversionados, mesmo os que são binários (como imagens, por exemplo). A seguir uma proposta de estrutura de diretórios, que não leva em conta a utilização deum framework: Illustration 1: Estrutura de diretórios Pontos vitais apresentados nesta estrutura: • Todos os arquivos, sejam quais forem, estão previstos: É importante que cada membro da equipe possua sempre acesso total ao projeto. Embora seja possível argumentar que programadores, por exemplo, não teriam porque ter acesso a um determinado documento (Layouts, por exemplo), é sabido que na prática as coisas nem sempre são assim. • Componentes “isolados”: Deve-se manter o que não é desenvolvido pela equipe (“externo”), isolado do que é (“interno”). Dessa forma pode-se não apenas controlar o versionamento de um componente específico dentro de um projeto (por exemplo, o ProjetoA usa a versão 1.3 da jquery), como encoraja-se a equipe a pensar e produzir em termos de generalização, produzindo eventualmente seus próprios componentes, que podem por sua vez ser utilizados em diversos projetos. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 7 / 19
  8. 8. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br Isso nada mais é do que encorajar e alimentar um ciclo de desenvolvimento sadio dentro da empresa e da equipe.• Raiz web (public_html): Outro ponto que deveria ser auto-explicativo, mas é comumente ignorado. A raiz web deve conter somente e tão somente arquivos que precisam ser acessados pelo browser e nada mais do que isso. Embora ignorar esse fato seja normalmente inofensivo, há relatos – para citar um exemplo – de pessoas que deixaram arquivos SQL disponíveis na raiz web, o que causou a indexação destes arquivos por mecanismos de busca e sua posterior exposição.• Classes: Criar padrões baseados em nomenclatura de arquivos normalmente não funciona, por dois motivos. Primeiro, é uma tarefa tediosa ter que salvar cada arquivo seguindo um padrão, segundo pela simples razão de que é mais fácil, por exemplo, alguém esquecer de nomear um arquivo como “class.xxx.php” do que esquecer de salvar o arquivo no diretório “classes”. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 8 / 19
  9. 9. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br N/A4. Fases de Desenvolvimento Importância Vital Acostume-se a estruturar o processo de desenvolvimento em si. Embora haja n formasde fazê-lo, esta á proposta para as fases de desenvolvimento e deployment de umaaplicação: Illustration 2: Fases de desenvolvimento/deployment 1. Fase de Desenvolvimento: Cada desenvolvedor (D1, D2, Dn...) trabalha commitando sua produção em um repositório R. Testes preliminares e óbvios são realizados por cada desenvolvedor, para garantir uma qualidade mínima do trabalho executado. Quando chega-se a um ponto onde todos os desenvolvedores acreditam que seu trabalho está concluído chega-se às fases 2 e 3. 2. Code Freeze: Nesta fase todo e qualquer trabalho de desenvolvimento é suspenso e a aplicação é exportada de forma a se ter uma cópia funcional da mesma em um servidor (normalmente um servidor separado, mas não entrarei em tantos detalhes). É aí que se inicia a fase 3. 3. Testes: Com a aplicação em “suspenso” se iniciam os testes (p.ex.: testes unitários e testes de interface). É então gerado um relatório do que falhou nestes testes e retorna-se a fase 1 para a correção das falhas. Este caminho 1-2-3-1-2-3... deve ser “percorrido” quantas vezes forem necessárias. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 9 / 19
  10. 10. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br 4. Produção: Com a certeza de que a aplicação passou por todos os testes e, obviamente, depois da aprovação do cliente, a aplicação entra, finalmente em produção. Todas5. Indentação Importância Vital Uma indentação correta é o padrão mínimo esperado de qualquer código-fonte ditoprofissional. Ela deve ser realizada com 4 espaços por nível e, ao contrário do que muitospensam é aplicada à todas as linguagens. Exemplos de indentação: • PHP: if ($a > 0) { echo “A &eacute; maior do que 0”; if ($a < 2) { echo “ … e menor do que 2”; } } • Javascript: if (a == 0) { alert(a é igual a 0); } • XHTML: <div id=”foo”> <img src=”bar.png” /> </div> • CSS: div#foo { font-family: sans-serif; } CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 10 / 19
  11. 11. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br Todas6. Nomenclatura Altamente Recomendada Dois esclarecimentos se fazem necessários nesse item: primeiramente o importanteaqui não é a criação de um padrão de nomenclatura, mas a utilização de um só padrãopor arquivo. Além disso, é outro item em que nem sempre fica claro a sua utilização emcertas linguagens, ao que segue: • PHP: Variáveis, classes, métodos/funções... • Javascript: Variáveis, funções... • XHTML: Formulários, IDs de elementos, campos... • CSS: Classes. IDs... O padrão se refere, especialmente, a separação de palavras, existindo basicamenteduas formas de utilização: • Underscore: minha_variavel • CamelCase: minhaVariavel CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 11 / 19
  12. 12. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br P J7. Documentação de código-fonte Importância Vital A documentação de código-fonte deve implementar, no mínimo, o padrão PHPDoc.Desta forma não apenas pode-se produzir uma documentação técninca com a utilizaçãode uma ferramenta como o PHPDocumentor, mas a própria utilização de classes,métodos e funções se torna mais intuitiva e menos confusa. Além disso, se torna menosprovável a criação de componentes para resolver problemas já solucionados em umsistema, pois através desta documentação se tem um mapemento do que já foidesenvolvido. Este item requer um certo cuidado, pois o excesso de documentação pode ser quasetão prejudicial quanto a sua falta. Não se deve documentar qualquer código-fonte, afinalde contas é documentar o óbvio torna todo o processo maçante e desencorajador. Além disso, a linguagem Javascript atualmente tem um nível tão vital e complexo emum sistema que merece ser documentada da mesma forma. A seguir uma listagem dastags de documentação que considero relevantes: • author • access • static • param • return • package • subpackage CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 12 / 19
  13. 13. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br PHP8. Sintaxe alternativa Altamente Recomendada Por ser uma linguagem derivada em parte de Perl, PHP faz jus ao mote “TMTOWTDI –Theres more than one to do it”. Isso, entretanto, nem sempre ajuda. Sintaxes alternativascostmam causar pelo menos um de dois problemas: ou elas são tão pouco utilizadas queaté mesmo as IDEs as ignoram ou acabam por ser tão sintéticas que podem causarconfusão na leitura do código-fonte. Lembre-se: Este documento é formado de sugestões e é, inevitavelmente, opinativo. Éminha opinião que ao invés de sintaxes alternativas como o operador ternário em caso decondicionais ou instruções que terminem em “end”, como endif devam ser evitadas. O uso das formas contendo chaves de início e final auxiliam na compreensão docódigo-fonte, tornando o mais claro possível onde um bloco “subalterno” inicia e termina. P J9. Legibilidade – operadores e operandos Menor Importância Espaços em branco podem, muitas vezes, fazer toda a diferença quando se trata delegibilidade de código-fonte, e é minha opinião de que legibilidade é um assuntoimportantíssimo e que não deve ser menosprezado. A inclusão de espaços em branco entre operandos e operadores melhoraconsideravelmente a legibilidade de um código-fonte, ou seja, ao invés de escrever: if ($a!=1 and $b<8 and $c>=3) { } procure escrever: if ($a != 1 and $b < 8 and $c >= 3) { } CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 13 / 19
  14. 14. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br PHP10. Legibilidade – Arrays complexos e queries SQL Altamente Recomendada Embora o excesso de cuidado com estilo de código-fonte possa se converter em umaatividade maçante, em certos casos específicos é um esforço que acaba valendo a pena.Isto é especialmente verdadeiro no caso de arrays e queries SQL complexos(as). Como a maioria (senão todos) dos itens sobre legibilidade usamos basicamente os doisprincípios mais importantes (espaçamento e indentalção) e isso fica mais claro aoapresentarmos exemplos.Ex. 1 – Array:$usuario = array(login => foo, data_nascto => array(dia => 12, mes => 1, ano =>1973), nivel => array(admin, usuario, fornecedor));---$usuario = array( login => foo, data_nascto => array( dia => 12, mes => 1, ano => 1973), nivel => array( admin, usuario, fornecedor)); CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 14 / 19
  15. 15. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brEx. 2 – Query:$sql = “SELECT u.id FROM usuarios u, nivel n, nivel_usuarios nu WHERE login=foo ANDsenha=bar AND nu.usuario_id = u.id AND nu.nivel_id = n.id AND n.nome=admin”;---$sql = “SELECT u.id FROM usuarios u, nivel n, nivel_usuarios nu WHERE u.login=foo AND u.senha=bar AND nu.usuario_id = u.id AND nu.nivel_id = n.id AND n.nome=admin”; XHTML11. Caracteres especiais e acentuação Importância Vital Crie o hábito de utilizar entidades XHTML. Elas não apenas asseguram que o conteúdoserá exibido propriamente, como impede a “truncagem” de caracteres. Alguns exemplos: • á → &aacute; • ô → &ocirc; • & → &amp; Além disso, uma dica adicional: procure utilizar UTF-8 como a codificação padrão, tantoem sua tag XHTML meta, como na base de dados. UTF-8 vêm se tornando a codificaçãopadrão para aplicações web.Exemplos:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />CREATE DATABASE foo CHARACTER SET=utf8; CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 15 / 19
  16. 16. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br PHP12. Usar type hinting/juggling Altamente Recomendada Programação tem tudo a ver com atenção aos detalhes e controlar o máximo possível oque pode ser controlado. Embora a maior parte (senão todas) das tecnologias web sejatipada dinamicamente, no caso do PHP a tipagem pode ser facilmente forçada. Secertificar de que um dado seja do tipo esperado não é apenas uma boa prática, mastambém uma questão de segurança.Exemplos:// Forçando a tipagem em tempo de execução:$id = (int)$_GET[id];// Forçando a tipagem efetivamente, modificando o tipo originalsettype($_GET[id], integer); N/A13. Foco nas consultas Importância Vital Consultas a dados devem retornar apenas o necessário. Retornar vinte colunas parautilizar apenas duas informações não apenas afeta a aplicação como um todo em questãode performance, mas pode contribuir para situações que variam desde a negação derequisições ao vazamento de informações. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 16 / 19
  17. 17. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.br N/A14. Modelagem Altamente Recomendada A padronização da modelagem de dados não apenas mantém a aplicação organizada,mas torna intuitivo, chegando a dispensar o modelo ER (que de qualquer forma deveser obrigatório) na hora de programar. Padronização sugerida: • Entidades: Nome, no plural. Exemplos: usuarios, clientes • Chaves Primárias: apenas o termo id. Colocar o nome da entidade na PK não apenas é desnecessário, mas torna o uso da coluna extremamente cansativo. • Chaves Estrangeiras: Nome da entidade de origem no singular + _id. Exemplos: usuario_id, cliente_id • Entidades que representam relações M:N: entidades no plural, em ordem alfabetica, separadas por underscore. Exemplos: compras_produtos, usuarios_niveis CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 17 / 19
  18. 18. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brConclusão A criação de uma padronização no desenvolvimento web tem um impacto positivoenorme nos processos de desenvolvimento de aplicações, além de atenuar a manutençãode aplicações pré-existentes, mas não se trata. obviamente de uma solução “mágica”. Disciplina e verificação constante do respeito aos padrões adquiridos sãocondições obrigatórias para que as coisas funcionem como esperado. Após algum tempode utilização, contudo, estes padrões acabam se tornando hábitos e a possibilidade detrangressão se torna muito menor. As vantagens em sua adoção contudo são permanentes, e a ordem estabelecidatorna o trabalho de todos muito mais fácil, chegando a ter influências positivas tãodistintas como a melhoria do ânimo da equipe, a facilidade de localização decaracterístiicas específicas de um sistema e a diminuição no tempo total dedesenvolvimento de uma aplicação. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 18 / 19
  19. 19. Er Galvão Abbott – Especialista em TI – www.galvao.eti.br – galvao@galvao.eti.brSobre o Autor Er Galvão Abbott trabalha há mais de 15 anos com odesenvolvimento de aplicações com interface web. Palestrantenos principais eventos nacionais, ministra cursos e é ativo nascomunidades Open Source e de PHP. É Diretor Geral da PHP Conference Brasil, o principal eventode PHP da América Latina e colabora na organização do Fórumde Software Livre de Curitiba. Especializou-se em segurança de aplicações web, sendo umdos primeiros profissionais brasileiros a abordar o assunto setratando especificamente da linguagem PHP. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-01-13 – 19 / 19

×