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
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
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....
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...
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;
}
}
?>
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...
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
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
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?
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
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!)
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
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';
}
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