SlideShare a Scribd company logo
1 of 114
POG Nunca Mais!
 Técnicas e macetes para o
  desenvolvimento em PHP
POG Nunca Mais!
 Técnicas e macetes para o   tam
                                 b
                                ém
  desenvolvimento em PHP      MyS para
                                 QL
Agenda
Agenda
O que é POG
Agenda
O que é POG

Exemplos de POG
Agenda
O que é POG

Exemplos de POG

Causas e causadores de POG’s
Agenda
O que é POG

Exemplos de POG

Causas e causadores de POG’s

Mantendo a POG longe de seus sistemas
Agenda
O que é POG

Exemplos de POG

Causas e causadores de POG’s

Mantendo a POG longe de seus sistemas

  Programando em PHP sem POG
Agenda
O que é POG

Exemplos de POG

Causas e causadores de POG’s

Mantendo a POG longe de seus sistemas

  Programando em PHP sem POG

  Ferramentas contra POG
Agenda
O que é POG

Exemplos de POG

Causas e causadores de POG’s

Mantendo a POG longe de seus sistemas

  Programando em PHP sem POG

  Ferramentas contra POG

  Dicas contra POG (inclui técnicas Chuck Norris)
Palestrante
Palestrante
               Paulino Michelazzo

Diretor da Fábrica Livre, empresa especializada no
  desenvolvimento não-POG com ferramentas de
 gestão livres (Drupal, Joomla e Magento) e PHP

           paulino@fabricalivre.com.br
O que é POG?
Programação Orientada a Gambiarras
Definição de Gambiarra

lâmpada instalada na extremidade dum comprido
cabo elétrico para poder ser utilizada numa área
              relativamente grande*




*Novo Dicionário Aurélio da Língua Portuguesa, p. 961
Definição de gambiarra
                        (coloquial)

  aquilo que é de difícil concepção, de inesperada
execução para tornar fácil o uso de algo que sequer
                  deveria existir*


 * http://desciclopedia.org/wiki/Pog
Exemplos de POG’s
disco
-99???
F1 sem teclado?
????
erro com sucesso!
equipe eu, mim e nós dois!
Causas e Causadores da
         POG
Algumas causas
Algumas causas
Tempos escassos

  do jeito que está, vai...
Algumas causas
Tempos escassos

  do jeito que está, vai...

Falta de documentação

  levantamentos, processos
Algumas causas
Tempos escassos

  do jeito que está, vai...

Falta de documentação

  levantamentos, processos

Erros de projetos

  Prazos, mão de obra, ferramentas
Algumas causas
Tempos escassos

  do jeito que está, vai...

Falta de documentação

  levantamentos, processos

Erros de projetos

  Prazos, mão de obra, ferramentas

Mudanças de última hora

  esquecemos uma feature....
Alguns causadores
Alguns causadores
Clientes

  não sabem o que querem e como querem
Alguns causadores
Clientes

  não sabem o que querem e como querem

Gerentes de Projetos

  pouca sinergia com o cliente (retorne ao 1)
Alguns causadores
Clientes

  não sabem o que querem e como querem

Gerentes de Projetos

  pouca sinergia com o cliente (retorne ao 1)

“Sofinhos”

  acham que sabem, dizem que sabem mas...
Mantendo a POG longe
   de seu sistema
Programando em PHP
      sem POG
Programando em PHP
             sem POG

Não use “short tag's”
  <?=$var?>
  <?php echo $var?>
Programando em PHP
             sem POG

Não use “short tag's”   Facilite a leitura de código
  <?=$var?>               <?if($var==1): ... endif?>
  <?php echo $var?>       <?php
                          if($var == 1){
                             ....
                          }?>
Programando em PHP
      sem POG
   Use variáveis “humanas”
     $xyz = 1;
     $fdp = 2;
     $pqp = 3;


     $ValorEntrada = 1;
     $ValorRetorno = 2;
     $ValorSaida = 3;
Programando em PHP
              sem POG
Indente seu código e salve vidas
<?php $var = 1;if($var==1){for($x=0;$x<100;$x++){echo
 $x;}}?>
<?php
  $var = 1;
  if($var==1){
     for($x=0;$x<100;$x++){
       echo $x;
     }
  }
?>
Programando em PHP
      sem POG
Programando em PHP
       sem POG
Comente seu código
define('SIMPLEPIE_TYPE_RSS_092', 8);
define('SIMPLEPIE_TYPE_RSS_093', 16);
define('SIMPLEPIE_TYPE_RSS_094', 32);
define('SIMPLEPIE_TYPE_RSS_10', 64);
define('SIMPLEPIE_TYPE_RSS_20', 128);
Programando em PHP
       sem POG
Comente seu código
define('SIMPLEPIE_TYPE_RSS_092', 8);
define('SIMPLEPIE_TYPE_RSS_093', 16);
define('SIMPLEPIE_TYPE_RSS_094', 32);
define('SIMPLEPIE_TYPE_RSS_10', 64);
define('SIMPLEPIE_TYPE_RSS_20', 128);


                ????
Programando em PHP
      sem POG
  Comente seu código
  // RSS 0.92
  define('SIMPLEPIE_TYPE_RSS_092', 8);
  // RSS 0.93
  define('SIMPLEPIE_TYPE_RSS_093', 16);
  // RSS 0.94
  define('SIMPLEPIE_TYPE_RSS_094', 32);
  // RSS 1.0
  define('SIMPLEPIE_TYPE_RSS_10', 64);
  // RSS 2.0
  define('SIMPLEPIE_TYPE_RSS_20', 128);
Programando em PHP
      sem POG
Programando em PHP
             sem POG
Veja todos os erros
  E_ALL & ~E_NOTICE
  @mysql_conn($conn);
  E_ALL
Programando em PHP
             sem POG
Veja todos os erros     Não acredite em usuários
  E_ALL & ~E_NOTICE       <?php
  @mysql_conn($conn);      system("ls $dir");
  E_ALL                   ?>
Programando em PHP
          sem POG
Loopingsloopingsloopingsloopingsloopings
  if($x==1){...}
  if($x==2){...}
  if($x==3){...}
  if($x==4){...}
  switch($x){
     case 1:
     case 2:
     case 3:
     case 4:
  }
Programando em PHP
      sem POG
Tipos de dados e colunas
  nome = varchar(255)
  data-nascimento = varchar(255)
  sexo = varchar(255)
  valor-trabalho = varchar(255)
  nome = varchar(150)
  data-nascimento = date
  sexo = enum('m','f')
  valor-trabalho = decimal(5,2)
Programando em PHP
      sem POG
Programando em PHP
            sem POG
Limpe a memória
da máquina
  unset($var1, $var2...);
  mysql_close($conn);
Programando em PHP
            sem POG
Limpe a memória             Limpe a SUA memória
da máquina                    Cascão, Cebolinha,
  unset($var1, $var2...);      Doritos, Heroes,
                               JotaQuest, Playboy,
  mysql_close($conn);
                               Rio Branco, Santa
                               Helena, Tacacá, Wii...
Ferramentas contra POG
xDebug
xDebug
 Extensão para “debugging” de scripts PHP
xDebug
 Extensão para “debugging” de scripts PHP

   Análise de código
xDebug
 Extensão para “debugging” de scripts PHP

   Análise de código

   Trace de funções e pilhas em mensagens
   de erro
xDebug
 Extensão para “debugging” de scripts PHP

   Análise de código

   Trace de funções e pilhas em mensagens
   de erro

   Indicadores de nomes de funções e
   arquivos
xDebug
 Extensão para “debugging” de scripts PHP

   Análise de código

   Trace de funções e pilhas em mensagens
   de erro

   Indicadores de nomes de funções e
   arquivos

 http://xdebug.org
Firebug & FirePHP
Firebug & FirePHP

  Extensões para Firefox
Firebug & FirePHP

  Extensões para Firefox

    Depuração de código HTML, CSS, DOM, JS
Firebug & FirePHP

  Extensões para Firefox

    Depuração de código HTML, CSS, DOM, JS

    Depuração de código PHP
Firebug & FirePHP

  Extensões para Firefox

    Depuração de código HTML, CSS, DOM, JS

    Depuração de código PHP

    On-the-fly
Firebug & FirePHP

  Extensões para Firefox

    Depuração de código HTML, CSS, DOM, JS

    Depuração de código PHP

    On-the-fly

    www.firephp.org
PHP Debug
PHP Debug
 Debug de código com geração de trace
PHP Debug
 Debug de código com geração de trace

 Tempo de processamento (inclusive queries)
PHP Debug
 Debug de código com geração de trace

 Tempo de processamento (inclusive queries)

 Verificação de performance
PHP Debug
 Debug de código com geração de trace

 Tempo de processamento (inclusive queries)

 Verificação de performance

 http://sourceforge.net/projects/phpdebug
Sem POG no MySQL
Sem POG no MySQL
MySQL Workbench

  modelagem de DB correta
Sem POG no MySQL
MySQL Workbench

  modelagem de DB correta

innotop

  quem é a fominha do sistema?
Sem POG no MySQL
MySQL Workbench

  modelagem de DB correta

innotop

  quem é a fominha do sistema?

MySQL Report

  status do banco em diversos formatos
Sem POG no MySQL
MySQL Workbench

  modelagem de DB correta

innotop

  quem é a fominha do sistema?

MySQL Report

  status do banco em diversos formatos

phpMyAdmin

  precisa dizer algo?
Dicas contra POG
Projetos
Projetos
Seja realista com os prazos propostos
Projetos
Seja realista com os prazos propostos

  pode-se ficar doente
Projetos
Seja realista com os prazos propostos

  pode-se ficar doente

  pode-se ter diarréia
Projetos
Seja realista com os prazos propostos

  pode-se ficar doente

  pode-se ter diarréia

  pode-se perder o backup e o backup do backup
Projetos
Seja realista com os prazos propostos

  pode-se ficar doente

  pode-se ter diarréia

  pode-se perder o backup e o backup do backup

  pode-se ficar sem conexão Internet
Projetos
Seja realista com os prazos propostos

  pode-se ficar doente

  pode-se ter diarréia

  pode-se perder o backup e o backup do backup

  pode-se ficar sem conexão Internet

  pode-se queimar a fonte
Projetos
Projetos
Utilize uma metodologia (qualquer uma!)
Projetos
Utilize uma metodologia (qualquer uma!)

  SCRUM
Projetos
Utilize uma metodologia (qualquer uma!)

  SCRUM

  Waterfall
Projetos
Utilize uma metodologia (qualquer uma!)

  SCRUM

  Waterfall

  eXtreme Programming
Projetos
Utilize uma metodologia (qualquer uma!)

  SCRUM

  Waterfall

  eXtreme Programming

  whateaver
Clientes, clientes...
Clientes, clientes...
Não se sente bem com o cliente, pule fora
Clientes, clientes...
Não se sente bem com o cliente, pule fora

  chato é diferente de ser correto
Clientes, clientes...
Não se sente bem com o cliente, pule fora

  chato é diferente de ser correto

  pede desconto em tudo
Clientes, clientes...
Não se sente bem com o cliente, pule fora

  chato é diferente de ser correto

  pede desconto em tudo

  “é só uma funçãozinha...”
Clientes, clientes...
Não se sente bem com o cliente, pule fora

  chato é diferente de ser correto

  pede desconto em tudo

  “é só uma funçãozinha...”

  “preciso para ontem”
Clientes, clientes...
Não se sente bem com o cliente, pule fora

  chato é diferente de ser correto

  pede desconto em tudo

  “é só uma funçãozinha...”
                                     Sempre existem
  “preciso para ontem”                bons clientes
                                        para bons
                                     desenvolvedores
Codificação
Codificação
Pare e pense no que vai fazer

  existem 1001 maneiras de fazer código ruim

  código bom = funcional, rápido, legível,
  documentado e com o mínimo de bug’s
Codificação
Pare e pense no que vai fazer

  existem 1001 maneiras de fazer código ruim

  código bom = funcional, rápido, legível,
  documentado e com o mínimo de bug’s

O usuário é seu inimigo!

  feche as portas

  acredite na estupidez humana (ela existe!)
Documentação
Documentação
Documente tudo!

  Processos, códigos, database, etc
Documentação
Documente tudo!

  Processos, códigos, database, etc

Manuais, um mal necessário

  manual para usuário e administração

  manual de disaster recovery
Técnicas de programação
      Chuck Norris
      (just for fun)
O backup mais rápido do mundo,
powered by Chuck Norris
  cp -R > /dev/null
O backup mais rápido do mundo,
powered by Chuck Norris
  cp -R > /dev/null


                      Debugger Chuck Norris
                        if($x==1){
                           echo 'passou aqui, é 1';
                        }else{
                           echo 'passou aqui, não é 1';
                        }
Chuck nunca erra...
E_ALL
display_errors = off
display_startup_errors = off
log_errors = off
Chuck nunca erra...
         E_ALL
         display_errors = off
         display_startup_errors = off
         log_errors = off



E sempre conecta...
GRANT ALL PRIVILEGES ON *.* TO '%'@'%'
 WITH GRANT OPTION;
FLUSH PRIVILEGES;
Obrigado

           Paulino Michelazzo
 Fábrica Livre Soluções para Internet
         www.fabricalivre.com.br
Twitter’s: @pmichelazzo - @fabricalivre

More Related Content

What's hot

De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e DjangoOsvaldo Santana Neto
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.comricobl
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalAdriano Petrich
 
Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013Pablo Dall'Oglio
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosFlávio Lisboa
 
Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Er Galvão Abbott
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Design for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPDesign for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPPablo Dall'Oglio
 
Aprender PHP e mySQL (UFCD0155)
Aprender PHP e mySQL (UFCD0155)Aprender PHP e mySQL (UFCD0155)
Aprender PHP e mySQL (UFCD0155)Afonso Gomes
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
Zend Framework 3 - porque só o que existe pode ser aprimorado
Zend Framework 3 - porque só o que existe pode ser aprimoradoZend Framework 3 - porque só o que existe pode ser aprimorado
Zend Framework 3 - porque só o que existe pode ser aprimoradoFlávio Lisboa
 
Php7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberPhp7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberEr Galvão Abbott
 
ZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivasZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivasRafael Chinelato Del Nero
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkRafael Dohms
 

What's hot (20)

De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dados
 
Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Python na Web
Python na WebPython na Web
Python na Web
 
Design for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPDesign for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHP
 
Aprender PHP e mySQL (UFCD0155)
Aprender PHP e mySQL (UFCD0155)Aprender PHP e mySQL (UFCD0155)
Aprender PHP e mySQL (UFCD0155)
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Filtro de SPAM
Filtro de SPAMFiltro de SPAM
Filtro de SPAM
 
Zend Framework 3 - porque só o que existe pode ser aprimorado
Zend Framework 3 - porque só o que existe pode ser aprimoradoZend Framework 3 - porque só o que existe pode ser aprimorado
Zend Framework 3 - porque só o que existe pode ser aprimorado
 
Php7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberPhp7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saber
 
ZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivasZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivas
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao Framework
 
Segurança PHP em 2016
Segurança PHP em 2016Segurança PHP em 2016
Segurança PHP em 2016
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 

Similar to Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP

Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitFlávio Lisboa
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)Rudá Moura
 
Clean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissionalClean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissionalLeo Baiano
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosRichard Barros
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 
Code Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilCode Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilRafael Pinheiro
 
Python e Django
Python e DjangoPython e Django
Python e Djangopugpe
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonFlávio Ribeiro
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento4Soft
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de ProgramaçãoCOTIC-PROEG (UFPA)
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de ProgramaçãoPaulo Souza
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Bruno Rocha
 
Python para programadores Ruby
Python para programadores RubyPython para programadores Ruby
Python para programadores RubyEric Hideki
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoLuiz Junior
 

Similar to Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP (20)

POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo Toolkit
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
Clean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissionalClean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissional
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Aprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard BarrosAprendendo a criar plugins para o Wordpress - Richard Barros
Aprendendo a criar plugins para o Wordpress - Richard Barros
 
Django
DjangoDjango
Django
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
Code Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilCode Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágil
 
Python e Django
Python e DjangoPython e Django
Python e Django
 
PHP: Como não programar em POG
PHP: Como não programar em POGPHP: Como não programar em POG
PHP: Como não programar em POG
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de Programação
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de Programação
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011
 
Python para programadores Ruby
Python para programadores RubyPython para programadores Ruby
Python para programadores Ruby
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 

More from Paulino Michelazzo

Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensPaulino Michelazzo
 
WordCamp 2011 - BuscaPé Developer
WordCamp 2011 - BuscaPé DeveloperWordCamp 2011 - BuscaPé Developer
WordCamp 2011 - BuscaPé DeveloperPaulino Michelazzo
 
Como vender e ganhar dinheiro com software livre
Como vender e ganhar dinheiro com software livreComo vender e ganhar dinheiro com software livre
Como vender e ganhar dinheiro com software livrePaulino Michelazzo
 
Drupal 7 - Nova Versão para Novos Desafios
Drupal 7 - Nova Versão para Novos DesafiosDrupal 7 - Nova Versão para Novos Desafios
Drupal 7 - Nova Versão para Novos DesafiosPaulino Michelazzo
 
As novidades do WordPress 3.0 para criativos
As novidades do WordPress 3.0 para criativosAs novidades do WordPress 3.0 para criativos
As novidades do WordPress 3.0 para criativosPaulino Michelazzo
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenterPaulino Michelazzo
 
Criando e sustentando uma empresa livre
Criando e sustentando uma empresa livreCriando e sustentando uma empresa livre
Criando e sustentando uma empresa livrePaulino Michelazzo
 
CMS Livres Gestao de conhecimento para web
CMS Livres   Gestao de conhecimento para webCMS Livres   Gestao de conhecimento para web
CMS Livres Gestao de conhecimento para webPaulino Michelazzo
 
Criando e sustentando uma empresa livre - Solisc
Criando e sustentando uma empresa livre - SoliscCriando e sustentando uma empresa livre - Solisc
Criando e sustentando uma empresa livre - SoliscPaulino Michelazzo
 
1 Forum de SL de Duque de Caxias
1 Forum de SL de Duque de Caxias1 Forum de SL de Duque de Caxias
1 Forum de SL de Duque de CaxiasPaulino Michelazzo
 
Por quê blogar com e sem WordPress
Por quê blogar com e sem WordPressPor quê blogar com e sem WordPress
Por quê blogar com e sem WordPressPaulino Michelazzo
 

More from Paulino Michelazzo (20)

Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
 
Intercon 2011
Intercon 2011Intercon 2011
Intercon 2011
 
WordCamp 2011 - BuscaPé Developer
WordCamp 2011 - BuscaPé DeveloperWordCamp 2011 - BuscaPé Developer
WordCamp 2011 - BuscaPé Developer
 
Palestra OSCON 2011
Palestra OSCON 2011Palestra OSCON 2011
Palestra OSCON 2011
 
Como vender e ganhar dinheiro com software livre
Como vender e ganhar dinheiro com software livreComo vender e ganhar dinheiro com software livre
Como vender e ganhar dinheiro com software livre
 
Drupal 7 - Nova Versão para Novos Desafios
Drupal 7 - Nova Versão para Novos DesafiosDrupal 7 - Nova Versão para Novos Desafios
Drupal 7 - Nova Versão para Novos Desafios
 
Inquebrable Drupal
Inquebrable DrupalInquebrable Drupal
Inquebrable Drupal
 
HTML 5 - A mudança da Web
HTML 5 - A mudança da WebHTML 5 - A mudança da Web
HTML 5 - A mudança da Web
 
As novidades do WordPress 3.0 para criativos
As novidades do WordPress 3.0 para criativosAs novidades do WordPress 3.0 para criativos
As novidades do WordPress 3.0 para criativos
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenter
 
Inovação em software
Inovação em softwareInovação em software
Inovação em software
 
Criando e sustentando uma empresa livre
Criando e sustentando uma empresa livreCriando e sustentando uma empresa livre
Criando e sustentando uma empresa livre
 
CMS Livres Gestao de conhecimento para web
CMS Livres   Gestao de conhecimento para webCMS Livres   Gestao de conhecimento para web
CMS Livres Gestao de conhecimento para web
 
Criando e sustentando uma empresa livre - Solisc
Criando e sustentando uma empresa livre - SoliscCriando e sustentando uma empresa livre - Solisc
Criando e sustentando uma empresa livre - Solisc
 
CMS Livres na Dataprev
CMS Livres na DataprevCMS Livres na Dataprev
CMS Livres na Dataprev
 
CMS Livres - EDTED Recife
CMS Livres - EDTED RecifeCMS Livres - EDTED Recife
CMS Livres - EDTED Recife
 
Intercon 2009
Intercon 2009Intercon 2009
Intercon 2009
 
1 Forum de SL de Duque de Caxias
1 Forum de SL de Duque de Caxias1 Forum de SL de Duque de Caxias
1 Forum de SL de Duque de Caxias
 
Por quê blogar com e sem WordPress
Por quê blogar com e sem WordPressPor quê blogar com e sem WordPress
Por quê blogar com e sem WordPress
 
6º FGSL
6º FGSL6º FGSL
6º FGSL
 

Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP

  • 1. POG Nunca Mais! Técnicas e macetes para o desenvolvimento em PHP
  • 2. POG Nunca Mais! Técnicas e macetes para o tam b ém desenvolvimento em PHP MyS para QL
  • 5. Agenda O que é POG Exemplos de POG
  • 6. Agenda O que é POG Exemplos de POG Causas e causadores de POG’s
  • 7. Agenda O que é POG Exemplos de POG Causas e causadores de POG’s Mantendo a POG longe de seus sistemas
  • 8. Agenda O que é POG Exemplos de POG Causas e causadores de POG’s Mantendo a POG longe de seus sistemas Programando em PHP sem POG
  • 9. Agenda O que é POG Exemplos de POG Causas e causadores de POG’s Mantendo a POG longe de seus sistemas Programando em PHP sem POG Ferramentas contra POG
  • 10. Agenda O que é POG Exemplos de POG Causas e causadores de POG’s Mantendo a POG longe de seus sistemas Programando em PHP sem POG Ferramentas contra POG Dicas contra POG (inclui técnicas Chuck Norris)
  • 12. Palestrante Paulino Michelazzo Diretor da Fábrica Livre, empresa especializada no desenvolvimento não-POG com ferramentas de gestão livres (Drupal, Joomla e Magento) e PHP paulino@fabricalivre.com.br
  • 13. O que é POG?
  • 14.
  • 16. Definição de Gambiarra lâmpada instalada na extremidade dum comprido cabo elétrico para poder ser utilizada numa área relativamente grande* *Novo Dicionário Aurélio da Língua Portuguesa, p. 961
  • 17. Definição de gambiarra (coloquial) aquilo que é de difícil concepção, de inesperada execução para tornar fácil o uso de algo que sequer deveria existir* * http://desciclopedia.org/wiki/Pog
  • 19.
  • 21.
  • 23. ????
  • 24.
  • 26.
  • 27. equipe eu, mim e nós dois!
  • 28.
  • 31. Algumas causas Tempos escassos do jeito que está, vai...
  • 32. Algumas causas Tempos escassos do jeito que está, vai... Falta de documentação levantamentos, processos
  • 33. Algumas causas Tempos escassos do jeito que está, vai... Falta de documentação levantamentos, processos Erros de projetos Prazos, mão de obra, ferramentas
  • 34. Algumas causas Tempos escassos do jeito que está, vai... Falta de documentação levantamentos, processos Erros de projetos Prazos, mão de obra, ferramentas Mudanças de última hora esquecemos uma feature....
  • 36. Alguns causadores Clientes não sabem o que querem e como querem
  • 37. Alguns causadores Clientes não sabem o que querem e como querem Gerentes de Projetos pouca sinergia com o cliente (retorne ao 1)
  • 38. Alguns causadores Clientes não sabem o que querem e como querem Gerentes de Projetos pouca sinergia com o cliente (retorne ao 1) “Sofinhos” acham que sabem, dizem que sabem mas...
  • 39. Mantendo a POG longe de seu sistema
  • 41. Programando em PHP sem POG Não use “short tag's” <?=$var?> <?php echo $var?>
  • 42. Programando em PHP sem POG Não use “short tag's” Facilite a leitura de código <?=$var?> <?if($var==1): ... endif?> <?php echo $var?> <?php if($var == 1){ .... }?>
  • 43. Programando em PHP sem POG Use variáveis “humanas” $xyz = 1; $fdp = 2; $pqp = 3; $ValorEntrada = 1; $ValorRetorno = 2; $ValorSaida = 3;
  • 44. Programando em PHP sem POG Indente seu código e salve vidas <?php $var = 1;if($var==1){for($x=0;$x<100;$x++){echo $x;}}?> <?php $var = 1; if($var==1){ for($x=0;$x<100;$x++){ echo $x; } } ?>
  • 46. Programando em PHP sem POG Comente seu código define('SIMPLEPIE_TYPE_RSS_092', 8); define('SIMPLEPIE_TYPE_RSS_093', 16); define('SIMPLEPIE_TYPE_RSS_094', 32); define('SIMPLEPIE_TYPE_RSS_10', 64); define('SIMPLEPIE_TYPE_RSS_20', 128);
  • 47. Programando em PHP sem POG Comente seu código define('SIMPLEPIE_TYPE_RSS_092', 8); define('SIMPLEPIE_TYPE_RSS_093', 16); define('SIMPLEPIE_TYPE_RSS_094', 32); define('SIMPLEPIE_TYPE_RSS_10', 64); define('SIMPLEPIE_TYPE_RSS_20', 128); ????
  • 48. Programando em PHP sem POG Comente seu código // RSS 0.92 define('SIMPLEPIE_TYPE_RSS_092', 8); // RSS 0.93 define('SIMPLEPIE_TYPE_RSS_093', 16); // RSS 0.94 define('SIMPLEPIE_TYPE_RSS_094', 32); // RSS 1.0 define('SIMPLEPIE_TYPE_RSS_10', 64); // RSS 2.0 define('SIMPLEPIE_TYPE_RSS_20', 128);
  • 50. Programando em PHP sem POG Veja todos os erros E_ALL & ~E_NOTICE @mysql_conn($conn); E_ALL
  • 51. Programando em PHP sem POG Veja todos os erros Não acredite em usuários E_ALL & ~E_NOTICE <?php @mysql_conn($conn); system("ls $dir"); E_ALL ?>
  • 52. Programando em PHP sem POG Loopingsloopingsloopingsloopingsloopings if($x==1){...} if($x==2){...} if($x==3){...} if($x==4){...} switch($x){ case 1: case 2: case 3: case 4: }
  • 53. Programando em PHP sem POG Tipos de dados e colunas nome = varchar(255) data-nascimento = varchar(255) sexo = varchar(255) valor-trabalho = varchar(255) nome = varchar(150) data-nascimento = date sexo = enum('m','f') valor-trabalho = decimal(5,2)
  • 55. Programando em PHP sem POG Limpe a memória da máquina unset($var1, $var2...); mysql_close($conn);
  • 56. Programando em PHP sem POG Limpe a memória Limpe a SUA memória da máquina Cascão, Cebolinha, unset($var1, $var2...); Doritos, Heroes, JotaQuest, Playboy, mysql_close($conn); Rio Branco, Santa Helena, Tacacá, Wii...
  • 59. xDebug Extensão para “debugging” de scripts PHP
  • 60. xDebug Extensão para “debugging” de scripts PHP Análise de código
  • 61. xDebug Extensão para “debugging” de scripts PHP Análise de código Trace de funções e pilhas em mensagens de erro
  • 62. xDebug Extensão para “debugging” de scripts PHP Análise de código Trace de funções e pilhas em mensagens de erro Indicadores de nomes de funções e arquivos
  • 63. xDebug Extensão para “debugging” de scripts PHP Análise de código Trace de funções e pilhas em mensagens de erro Indicadores de nomes de funções e arquivos http://xdebug.org
  • 65. Firebug & FirePHP Extensões para Firefox
  • 66. Firebug & FirePHP Extensões para Firefox Depuração de código HTML, CSS, DOM, JS
  • 67. Firebug & FirePHP Extensões para Firefox Depuração de código HTML, CSS, DOM, JS Depuração de código PHP
  • 68. Firebug & FirePHP Extensões para Firefox Depuração de código HTML, CSS, DOM, JS Depuração de código PHP On-the-fly
  • 69. Firebug & FirePHP Extensões para Firefox Depuração de código HTML, CSS, DOM, JS Depuração de código PHP On-the-fly www.firephp.org
  • 71. PHP Debug Debug de código com geração de trace
  • 72. PHP Debug Debug de código com geração de trace Tempo de processamento (inclusive queries)
  • 73. PHP Debug Debug de código com geração de trace Tempo de processamento (inclusive queries) Verificação de performance
  • 74. PHP Debug Debug de código com geração de trace Tempo de processamento (inclusive queries) Verificação de performance http://sourceforge.net/projects/phpdebug
  • 75. Sem POG no MySQL
  • 76. Sem POG no MySQL MySQL Workbench modelagem de DB correta
  • 77. Sem POG no MySQL MySQL Workbench modelagem de DB correta innotop quem é a fominha do sistema?
  • 78. Sem POG no MySQL MySQL Workbench modelagem de DB correta innotop quem é a fominha do sistema? MySQL Report status do banco em diversos formatos
  • 79. Sem POG no MySQL MySQL Workbench modelagem de DB correta innotop quem é a fominha do sistema? MySQL Report status do banco em diversos formatos phpMyAdmin precisa dizer algo?
  • 82. Projetos Seja realista com os prazos propostos
  • 83. Projetos Seja realista com os prazos propostos pode-se ficar doente
  • 84. Projetos Seja realista com os prazos propostos pode-se ficar doente pode-se ter diarréia
  • 85. Projetos Seja realista com os prazos propostos pode-se ficar doente pode-se ter diarréia pode-se perder o backup e o backup do backup
  • 86. Projetos Seja realista com os prazos propostos pode-se ficar doente pode-se ter diarréia pode-se perder o backup e o backup do backup pode-se ficar sem conexão Internet
  • 87. Projetos Seja realista com os prazos propostos pode-se ficar doente pode-se ter diarréia pode-se perder o backup e o backup do backup pode-se ficar sem conexão Internet pode-se queimar a fonte
  • 90. Projetos Utilize uma metodologia (qualquer uma!) SCRUM
  • 91. Projetos Utilize uma metodologia (qualquer uma!) SCRUM Waterfall
  • 92. Projetos Utilize uma metodologia (qualquer uma!) SCRUM Waterfall eXtreme Programming
  • 93. Projetos Utilize uma metodologia (qualquer uma!) SCRUM Waterfall eXtreme Programming whateaver
  • 95. Clientes, clientes... Não se sente bem com o cliente, pule fora
  • 96. Clientes, clientes... Não se sente bem com o cliente, pule fora chato é diferente de ser correto
  • 97. Clientes, clientes... Não se sente bem com o cliente, pule fora chato é diferente de ser correto pede desconto em tudo
  • 98. Clientes, clientes... Não se sente bem com o cliente, pule fora chato é diferente de ser correto pede desconto em tudo “é só uma funçãozinha...”
  • 99. Clientes, clientes... Não se sente bem com o cliente, pule fora chato é diferente de ser correto pede desconto em tudo “é só uma funçãozinha...” “preciso para ontem”
  • 100. Clientes, clientes... Não se sente bem com o cliente, pule fora chato é diferente de ser correto pede desconto em tudo “é só uma funçãozinha...” Sempre existem “preciso para ontem” bons clientes para bons desenvolvedores
  • 102. Codificação Pare e pense no que vai fazer existem 1001 maneiras de fazer código ruim código bom = funcional, rápido, legível, documentado e com o mínimo de bug’s
  • 103. Codificação Pare e pense no que vai fazer existem 1001 maneiras de fazer código ruim código bom = funcional, rápido, legível, documentado e com o mínimo de bug’s O usuário é seu inimigo! feche as portas acredite na estupidez humana (ela existe!)
  • 105. Documentação Documente tudo! Processos, códigos, database, etc
  • 106. Documentação Documente tudo! Processos, códigos, database, etc Manuais, um mal necessário manual para usuário e administração manual de disaster recovery
  • 107. Técnicas de programação Chuck Norris (just for fun)
  • 108.
  • 109. O backup mais rápido do mundo, powered by Chuck Norris cp -R > /dev/null
  • 110. O backup mais rápido do mundo, powered by Chuck Norris cp -R > /dev/null Debugger Chuck Norris if($x==1){ echo 'passou aqui, é 1'; }else{ echo 'passou aqui, não é 1'; }
  • 111.
  • 112. Chuck nunca erra... E_ALL display_errors = off display_startup_errors = off log_errors = off
  • 113. Chuck nunca erra... E_ALL display_errors = off display_startup_errors = off log_errors = off E sempre conecta... GRANT ALL PRIVILEGES ON *.* TO '%'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
  • 114. Obrigado Paulino Michelazzo Fábrica Livre Soluções para Internet www.fabricalivre.com.br Twitter’s: @pmichelazzo - @fabricalivre