POG Nunca Mais!
 Técnicas e macetes para o
  desenvolvimento em PHP
POG Nunca Mais!
 Técnicas e macetes para o   tam
                                 b
                                ém
  d...
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...
Agenda
O que é POG

Exemplos de POG

Causas e causadores de POG’s

Mantendo a POG longe de seus sistemas

  Programando em...
Agenda
O que é POG

Exemplos de POG

Causas e causadores de POG’s

Mantendo a POG longe de seus sistemas

  Programando em...
Palestrante
Palestrante
               Paulino Michelazzo

Diretor da Fábrica Livre, empresa especializada no
  desenvolvimento não-PO...
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
    ...
Definição de gambiarra
                        (coloquial)

  aquilo que é de difícil concepção, de inesperada
execução par...
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 p...
Algumas causas
Tempos escassos

  do jeito que está, vai...

Falta de documentação

  levantamentos, processos

Erros de p...
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 (...
Alguns causadores
Clientes

  não sabem o que querem e como querem

Gerentes de Projetos

  pouca sinergia com o cliente (...
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?>               <?...
Programando em PHP
      sem POG
   Use variáveis “humanas”
     $xyz = 1;
     $fdp = 2;
     $pqp = 3;


     $ValorEntr...
Programando em PHP
              sem POG
Indente seu código e salve vidas
<?php $var = 1;if($var==1){for($x=0;$x<100;$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',...
Programando em PHP
       sem POG
Comente seu código
define('SIMPLEPIE_TYPE_RSS_092', 8);
define('SIMPLEPIE_TYPE_RSS_093',...
Programando em PHP
      sem POG
  Comente seu código
  // RSS 0.92
  define('SIMPLEPIE_TYPE_RSS_092', 8);
  // RSS 0.93
 ...
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
 ...
Programando em PHP
          sem POG
Loopingsloopingsloopingsloopingsloopings
  if($x==1){...}
  if($x==2){...}
  if($x==3...
Programando em PHP
      sem POG
Tipos de dados e colunas
  nome = varchar(255)
  data-nascimento = varchar(255)
  sexo = ...
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ã...
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 er...
xDebug
 Extensão para “debugging” de scripts PHP

   Análise de código

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

   Análise de código

   Trace de funções e pilhas em mensagens
   de er...
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

    ...
Firebug & FirePHP

  Extensões para Firefox

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

    Depuração de código PHP

    ...
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

...
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

  stat...
Sem POG no MySQL
MySQL Workbench

  modelagem de DB correta

innotop

  quem é a fominha do sistema?

MySQL Report

  stat...
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...
Projetos
Seja realista com os prazos propostos

  pode-se ficar doente

  pode-se ter diarréia

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

  pode-se ficar doente

  pode-se ter diarréia

  pode-se perder o backup e...
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 tu...
Clientes, clientes...
Não se sente bem com o cliente, pule fora

  chato é diferente de ser correto

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

  chato é diferente de ser correto

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

  chato é diferente de ser correto

  pede desconto em tu...
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, ...
Codificação
Pare e pense no que vai fazer

  existem 1001 maneiras de fazer código ruim

  código bom = funcional, rápido, ...
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 adm...
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
 ...
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...
Obrigado

           Paulino Michelazzo
 Fábrica Livre Soluções para Internet
         www.fabricalivre.com.br
Twitter’s: ...
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Próximos SlideShares
Carregando em…5
×

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

3.069 visualizações

Publicada em

Palestra proferida na 1 Semana de Integração Tecnológica do IFRR em Boa Vista, Roraima em 27/08/2009

Publicada em: Tecnologia
0 comentários
6 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.069
No SlideShare
0
A partir de incorporações
0
Número de incorporações
34
Ações
Compartilhamentos
0
Downloads
61
Comentários
0
Gostaram
6
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP

    1. 1. POG Nunca Mais! Técnicas e macetes para o desenvolvimento em PHP
    2. 2. POG Nunca Mais! Técnicas e macetes para o tam b ém desenvolvimento em PHP MyS para QL
    3. 3. Agenda
    4. 4. Agenda O que é POG
    5. 5. Agenda O que é POG Exemplos de POG
    6. 6. Agenda O que é POG Exemplos de POG Causas e causadores de POG’s
    7. 7. Agenda O que é POG Exemplos de POG Causas e causadores de POG’s Mantendo a POG longe de seus sistemas
    8. 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. 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. 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)
    11. 11. Palestrante
    12. 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. 13. O que é POG?
    14. 14. Programação Orientada a Gambiarras
    15. 15. 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
    16. 16. 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
    17. 17. Exemplos de POG’s
    18. 18. disco -99???
    19. 19. F1 sem teclado?
    20. 20. ????
    21. 21. erro com sucesso!
    22. 22. equipe eu, mim e nós dois!
    23. 23. Causas e Causadores da POG
    24. 24. Algumas causas
    25. 25. Algumas causas Tempos escassos do jeito que está, vai...
    26. 26. Algumas causas Tempos escassos do jeito que está, vai... Falta de documentação levantamentos, processos
    27. 27. Algumas causas Tempos escassos do jeito que está, vai... Falta de documentação levantamentos, processos Erros de projetos Prazos, mão de obra, ferramentas
    28. 28. 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....
    29. 29. Alguns causadores
    30. 30. Alguns causadores Clientes não sabem o que querem e como querem
    31. 31. Alguns causadores Clientes não sabem o que querem e como querem Gerentes de Projetos pouca sinergia com o cliente (retorne ao 1)
    32. 32. 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...
    33. 33. Mantendo a POG longe de seu sistema
    34. 34. Programando em PHP sem POG
    35. 35. Programando em PHP sem POG Não use “short tag's” <?=$var?> <?php echo $var?>
    36. 36. 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){ .... }?>
    37. 37. Programando em PHP sem POG Use variáveis “humanas” $xyz = 1; $fdp = 2; $pqp = 3; $ValorEntrada = 1; $ValorRetorno = 2; $ValorSaida = 3;
    38. 38. 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; } } ?>
    39. 39. Programando em PHP sem POG
    40. 40. 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);
    41. 41. 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); ????
    42. 42. 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);
    43. 43. Programando em PHP sem POG
    44. 44. Programando em PHP sem POG Veja todos os erros E_ALL & ~E_NOTICE @mysql_conn($conn); E_ALL
    45. 45. 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 ?>
    46. 46. 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: }
    47. 47. 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)
    48. 48. Programando em PHP sem POG
    49. 49. Programando em PHP sem POG Limpe a memória da máquina unset($var1, $var2...); mysql_close($conn);
    50. 50. 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...
    51. 51. Ferramentas contra POG
    52. 52. xDebug
    53. 53. xDebug Extensão para “debugging” de scripts PHP
    54. 54. xDebug Extensão para “debugging” de scripts PHP Análise de código
    55. 55. xDebug Extensão para “debugging” de scripts PHP Análise de código Trace de funções e pilhas em mensagens de erro
    56. 56. 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
    57. 57. 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
    58. 58. Firebug & FirePHP
    59. 59. Firebug & FirePHP Extensões para Firefox
    60. 60. Firebug & FirePHP Extensões para Firefox Depuração de código HTML, CSS, DOM, JS
    61. 61. Firebug & FirePHP Extensões para Firefox Depuração de código HTML, CSS, DOM, JS Depuração de código PHP
    62. 62. Firebug & FirePHP Extensões para Firefox Depuração de código HTML, CSS, DOM, JS Depuração de código PHP On-the-fly
    63. 63. 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
    64. 64. PHP Debug
    65. 65. PHP Debug Debug de código com geração de trace
    66. 66. PHP Debug Debug de código com geração de trace Tempo de processamento (inclusive queries)
    67. 67. PHP Debug Debug de código com geração de trace Tempo de processamento (inclusive queries) Verificação de performance
    68. 68. 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
    69. 69. Sem POG no MySQL
    70. 70. Sem POG no MySQL MySQL Workbench modelagem de DB correta
    71. 71. Sem POG no MySQL MySQL Workbench modelagem de DB correta innotop quem é a fominha do sistema?
    72. 72. Sem POG no MySQL MySQL Workbench modelagem de DB correta innotop quem é a fominha do sistema? MySQL Report status do banco em diversos formatos
    73. 73. 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?
    74. 74. Dicas contra POG
    75. 75. Projetos
    76. 76. Projetos Seja realista com os prazos propostos
    77. 77. Projetos Seja realista com os prazos propostos pode-se ficar doente
    78. 78. Projetos Seja realista com os prazos propostos pode-se ficar doente pode-se ter diarréia
    79. 79. 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
    80. 80. 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
    81. 81. 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
    82. 82. Projetos
    83. 83. Projetos Utilize uma metodologia (qualquer uma!)
    84. 84. Projetos Utilize uma metodologia (qualquer uma!) SCRUM
    85. 85. Projetos Utilize uma metodologia (qualquer uma!) SCRUM Waterfall
    86. 86. Projetos Utilize uma metodologia (qualquer uma!) SCRUM Waterfall eXtreme Programming
    87. 87. Projetos Utilize uma metodologia (qualquer uma!) SCRUM Waterfall eXtreme Programming whateaver
    88. 88. Clientes, clientes...
    89. 89. Clientes, clientes... Não se sente bem com o cliente, pule fora
    90. 90. Clientes, clientes... Não se sente bem com o cliente, pule fora chato é diferente de ser correto
    91. 91. Clientes, clientes... Não se sente bem com o cliente, pule fora chato é diferente de ser correto pede desconto em tudo
    92. 92. 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...”
    93. 93. 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”
    94. 94. 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
    95. 95. Codificação
    96. 96. 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
    97. 97. 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!)
    98. 98. Documentação
    99. 99. Documentação Documente tudo! Processos, códigos, database, etc
    100. 100. 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
    101. 101. Técnicas de programação Chuck Norris (just for fun)
    102. 102. O backup mais rápido do mundo, powered by Chuck Norris cp -R > /dev/null
    103. 103. 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'; }
    104. 104. Chuck nunca erra... E_ALL display_errors = off display_startup_errors = off log_errors = off
    105. 105. 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;
    106. 106. Obrigado Paulino Michelazzo Fábrica Livre Soluções para Internet www.fabricalivre.com.br Twitter’s: @pmichelazzo - @fabricalivre

    ×