Archive for August, 2008

Click on one of the items below to go to the post

Tracer Bullet

Uma dica simples, mas que é capaz de nos livrar de muitas dores-de-cabeça é o uso de códigos testadores de ambiente, ou como o livro Pragmatic Programmer chama, Tracer Bullet. Se preocupar com o ambiente em que sua aplicação irá rodar é tão importante quanto escolher a framework certa para desenvolvê-la. Precisamos ter certeza sobre quais sãos os módulos suportados pelos servidores envolvidos, diretórios com permissão de escrita, configurações diversas do web server e outros itens que sempre nos preocupamos por último.

Deixar para testar o ambiente de produção com o software que irá ser entregue (ainda que seja a versão alpha) é tão insensato quanto fazer o checkup do seu carro 30 min antes de viajar do Rio para Bahia com toda a família. Se tiver que alterar qualquer coisa, já era.

Tendo esse problema nas mãos, entende-se então a técnica de Tracer Bullet, onde criamos um pequeno código, com o mínimo de linhas necessárias para fazer um teste geral no ambiente. Por exemplo, em uma aplicação qualquer pode-se testar a conexão em um CRUD simples com as bases de dados que serão usadas, o uso de componentes terceirizados, envio de emails, permissões de diretórios e usuários, extensões do web server ou qualquer outro recurso que sua aplicação final poderá usar. Não gaste tempo tentando fazer uma tela bonitinha pra mostrar pro cliente, a função do Tracer Bullet é informar pra equipe de desenvolvimento e infra o que terá que ser alterado antes do primeiro deployment. E como grande parte da infra será testada de forma direta, isso refletirá na redução de testes posteriores ao primeiro processo de deployment.

MySQL Workbench 5.1 Alpha para Linux

Saiu no blog do MySQL Workbench que em menos de 30 dias teremos disponível para Linux a versão alpha da ferramenta de ERM da MySQL. Obviamente, a ferramenta ainda não terá todas as opções da versão estável, mas já terá a principal que é montar o ERM e criar uma DDL a partir do mesmo. Abaixo mais uma tela.

Dica: The Pragmatic Programmer

Vou usar o blog para indicar alguns livros interessantes que tenho tido contato. Embora pareça ser puro “jabá”, a idéia é passar pra vocês o que tenho lido e que tem trazido benefícios reais no meu dia-a-dia.

Embora não tenha terminado de ler, tenho gostado muito do The Pragmatic Programmer. É um livro obrigatório, servindo de introdução geral para Refatoração, Source Control, TDD, técnicas DRY, e vários outros recursos que estão de uma forma ou de outra, englobados dentro dos processos ágeis de desenvolvimento.

Além de não ter uma linguagem chata e usar várias analogias interessantes, o livro é realmente prático, traz muitas situações que facilmente encontramos no dia-a-dia.

PHP para aplicações Enterprise

Esta discursão é antiga, mas foi bem explanada por Ivo Jansch na PHP London Conference 2008. O PHP tem recursos interessantes para o desenvolvimento de aplicações Enterprise, mas parece que a comunidade aqui no Brasil não acordou para isso. Fica a dica de usar os tópicos explanados na apresentação para nortear os estudos!

Falando em Agile 2008


A Caelum vai estar promovendo nos dias 23 (Quinta) e 24 (Sexta) de Outubro o evento “Falando em Agile 2008″ sobre metodologias ágeis. Com palestrantes de referência nacional, serão abordados cerca de 12 temas sobre o assunto. O valor está em R$295,00 inscrevendo-se até dia 15/09. Para quem quiser saber mais, clique aqui.

Usando abas no VIM


Gosto de usar o VIM no dia-a-dia e encontrei um recurso muito útil disponível a partir da versão 7 deste super editor: abas!

Basta usar o :tabnew para abrir uma nova aba. Você pode opcionalmente fornecer o arquivo que deseja abrir na nova aba, passando o caminho como parâmetro.

Para navegar entre as abas, basta usar o :tabn n, onde n é a posição da aba, começando do 0. Para avançar ou voltar entre as abas, use o :tabnext e o :tabprev. Existe também o :tabfirst e :tablast, que respectivamente avançam para a primeira ou última aba.

Mate processos no Windows à la Unix

Sempre tenha o tasklist e o taskkill a mão. O primeiro você usará para pegar os processos abertos e seus PIDs, e com o segundo, você mata o processo.

Um exemplo prático:

C:\Documents and Settings\pmendes\Desktop>tasklist

Image Name                   PID Session Name     Session#    Mem Usage========================= ====== ================ ======== ============System Idle Process            0 Console                 0         28 KSystem                         4 Console                 0        304 Ksmss.exe                     648 Console                 0        392 Kcsrss.exe                    712 Console                 0      4.424 Kwinlogon.exe                 736 Console                 0      1.788 Kservices.exe                 808 Console                 0      3.464 Klsass.exe                    820 Console                 0      1.828 Ksvchost.exe                 1012 Console                 0      4.840 Ksvchost.exe                 1080 Console                 0      4.360 Ksvchost.exe                 1168 Console                 0     35.352 Ksvchost.exe                 1276 Console                 0      3.636 Ksvchost.exe                 1412 Console                 0      4.732 Kspoolsv.exe                 1568 Console                 0      5.284 Kapache.exe                  1760 Console                 0     21.632 Kavgwdsvc.exe                1812 Console                 0      2.888 KmDNSResponder.exe           1828 Console                 0      2.836 Kmysqld-nt.exe               1976 Console                 0      5.792 KNMSAccessU.exe              2020 Console                 0      1.828 Ksvchost.exe                  248 Console                 0      4.172 Kapache.exe                  2000 Console                 0     31.460 Kavgrsx.exe                  5276 Console                 0     40.048 Kalg.exe                     5676 Console                 0      3.588 Kexplorer.exe                6664 Console                 0     34.880 Kctfmon.exe                  7192 Console                 0      3.272 Kjusched.exe                 7244 Console                 0      6.148 Kavgtray.exe                 7580 Console                 0      6.180 KBabylon.exe                 8152 Console                 0     21.432 Kxampp-control.exe           5308 Console                 0      3.332 Kjucheck.exe                 7564 Console                 0      6.492 Kfirefox.exe                 7912 Console                 0    187.140 Keclipse.exe                 6512 Console                 0    107.316 KDAP.exe                     6768 Console                 0      5.032 Kpidgin.exe                  6296 Console                 0      5.332 Kcmd.exe                     8036 Console                 0      2.732 Kwmiprvse.exe                6788 Console                 0      6.044 Ktasklist.exe                6272 Console                 0      4.516 K

Supondo que eu queira matar o Eclipse, a ideia seria a seguinte:

C:\Documents and Settings\pmendes\Desktop>taskkill /PID 6512SUCCESS: The process with PID 6512 has been terminated.

A idéia é simples. Claro que o kill do Unix é mais flexível, mas sejamos mais modestos. No taskkill você também tem o parâmetro -f para forçar o termino do processo e também pode matar o processo pelo nome.

Já tive vezes que o taskkill disse que o processo morreu mais o processo tava mas pra Highlander do que pra Gasparzinho. Vai entender. Não sei também como o taskkill funciona com as árvores de processos. Quem tiver algo mais a compartilhar, sinta-se a vontade.

Eu não vou nem dizer que na universidade eu consegui matar um software de controle de usuário pelo console usando essa dupla tão simpática, até porque seria um estimulo a desordem na instituição.