Março 3rd 2008

Integração contínua com CruiseControl + phpUnderControl

Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily, leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.”

Neste post pretendo apresentar algumas ferramentas que facilitam a utilização da Integração Contínua, como prática de desenvolvimento de seus projetos.

CruiseControl

O CruiseControl é uma ferramenta que automatiza o processo de build, provendo várias tarefas que facilitam o controle sobre o código, incluindo uma interface para visualizar os detalhes sobre cada build.

phpUnderControl

O phpUnderControl é um plugin para o CruiseControl que facilita a integração de algumas ferramentas voltadas para projetos PHP: phpDocumentor, PHPUnit, PHP_CodeSniffer.

Continue Reading »

Compartilhe:
  • del.icio.us
  • Google
  • Digg
  • Sphinn
  • Facebook
  • Mixx
  • LinkedIn
  • Live
  • Rec6
  • Technorati
  • TwitThis
1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (1 votos, média: 5 de 5)
Loading ... Loading ...

7 Comments »

Janeiro 15th 2008

Busca no site? Com Zend_Search_Lucene claro!

O Zend_Search_Lucene é uma módulo do Zend Framework que serve para indexar strings, o módulo é baseado no projeto Apache Lucene porém portado para PHP. Com ele é possível indexar o conteúdo de seu site e depois executar consultas baseadas no índice criado.

Nestes ultimos dias andei dando uma olhada no componente, então resolvi postar aqui no blog o exemplo que adaptei da apresentação de Wil Sinclair sobre o módulo do framework.

Não vou explicar detalhes sobre a implementação aqui no blog, sendo que o que fiz foi praticamente um copy e paste do exemplo dado na apresentação, mas aos que tiverem dúvidas, basta comentar aqui no blog ou postar lá no fórum http://www.zfbrasil.com/forum/, posso tentar dar uma ajuda.

Aos que quiserem mais informações a respeito do Zend_Search_Lucene, a uma boa documentação disponível no manual do framework.
http://framework.zend.com/manual/en/zend.search.lucene.html

Obs.: No exemplo que deixei dispoível para download abaixo, a um crawler com a url do meu blog apontada. Peço aos que testarem, que não fiquem executando muitas vezes o script com a url do blog, se não vai acabar estourando a minha cota de tranferência :).

Os arquivos do exemplo : zfsearch.zip

Abraço a todos.

Compartilhe:
  • del.icio.us
  • Google
  • Digg
  • Sphinn
  • Facebook
  • Mixx
  • LinkedIn
  • Live
  • Rec6
  • Technorati
  • TwitThis
1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (1 votos, média: 5 de 5)
Loading ... Loading ...

20 Comments »

Dezembro 17th 2007

Integrando PHPUnit com banco de dados

A partir da versão 3.2.0 o PHPUnit conta com uma extensão para fazer testes utilizando banco de dados, na pratica isto já era possível, mas o PHPUnit não contava com nenhum tipo de ferramenta para abstrair tarefas como: inserir dados para fazer testes, deletar dados apos as rotinas de testes, etc.

O fato e que esta extensão do PHPUnit é uma forma elegante de controlar a dependência entre o banco e sua aplicação.

Obs.: Aos que ainda não estão familiarizados com a utilização do PHPUnit recomendo a leitura destes posts:
http://blog.diegotremper.com/archives/15
http://blog.diegotremper.com/archives/97

Exemplo:
Vamos supor que você queira testar um método de sua aplicação que carregue um determinado registro do banco de dados. A questão é: como garantir que quando eu estiver rodando meu teste, o registro que eu vou tentar carregar para afirmar que meu método esta funcionando corretamente, estará lá?

Como você já deve ter pensado, primeiro teremos que inserir o registro na base de dados antes de executarmos nosso teste, e depois da execução, teremos que deletar o registro para que a base de dados não fique com registros inválidos.

Continue Reading »

Compartilhe:
  • del.icio.us
  • Google
  • Digg
  • Sphinn
  • Facebook
  • Mixx
  • LinkedIn
  • Live
  • Rec6
  • Technorati
  • TwitThis
1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (Nenhuma avaliação ainda)
Loading ... Loading ...

4 Comments »

Dezembro 5th 2007

array X ArrayIterator == cópia X referência

A questão é a seguinte, imagine que você precise imprimmir todos os elementos de um array, qual a solução para isso? use um foreach, óbvio.

Agora vamo imaginar que dentro deste foreach onde você esta imprimindo os elementos de seu array, tenha alguma lógica que pode adicionar ou não mais elementos ao array que você esta iterando no momento. Ex.:

PHP:
  1. $a = array('PHP', 'Java', 'Ruby');
  2.  
  3. foreach ($a as $value) {
  4.   if ($value == 'PHP') {
  5.     $a[] = 'PHP-GTK';
  6.   }
  7.  
  8.   echo $value . "\r\n";
  9. }

Reparem que no exemplo acima a saida final seria:

PHP
Java
Ruby

E o PHP-GTK por que não imprimiu?
Isto acontece porque o PHP faz com que o foreach trabalhe com um 'cópia' do array que você passou como parametro assim quando você adiciona um elemento para o seus array, não irá influenciar na cópia que esta sendo usada pelo foreach.

Esta situação é facilmente resolvida se você utilizar um objeto que implemente a interface Iterator, como o ArrayIterator por exemplo.

Se você passar um objeto do tipo Iterator como parametro para o comando foreach ele não irá criar uma cópia de seu objeto, irá utilizar a referência. Desta maneira é possível garantir que todos os elementos de seu array serão iterados. Ex.:

PHP:
  1. $a = array('PHP', 'Java', 'Ruby');
  2. $a = new ArrayIterator($a);
  3.  
  4. foreach ($a as $value) {
  5.   if ($value == 'PHP') {
  6.     $a[] = 'PHP-GTK';
  7.   }
  8.  
  9.   echo $value . "\r\n";
  10. }

Espero que a informação tenha sido util, infelizmente na documentação do
PHP este tipo de situação não esta "bem documentada". :P

Abraço a todos.

Compartilhe:
  • del.icio.us
  • Google
  • Digg
  • Sphinn
  • Facebook
  • Mixx
  • LinkedIn
  • Live
  • Rec6
  • Technorati
  • TwitThis
1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (1 votos, média: 5 de 5)
Loading ... Loading ...

2 Comments »

Dezembro 1st 2007

Palestra do PHP Conference

Após uma semana cheia de tarefas finalmente o PHP Conference 2007...
Infelizmente não aproveitei praticamente nada do evento, na sexta-feira meu vôo para São Paulo atrasou, assim acabei chegando no final do dia. Já no hotel conheci alguns palestrantes, o pessoal muito gente boa, fomos a uma churrascaria, foi a maior farra. Mas voltando ao que interessa, sábado apresentei minha palestra sobre qualidade de software com o PHPUnit, a palestra não estava completamente lotada, mas haviam muitos conferencistas, o pessoal mostrou interesse pelo assunto. Pelo que percebi, a utilização do PHPUnit ainda não é uma coisa muito comum entre a comunidade, procurei esclarecer as dúvidas de todos, espero ter conseguido. Tive alguns problemas com o projetor e o Ubuntu, então precisei que apresentar utilizando o Windows Vista, foi uma pena, pois havia preparado o ambiente com alguns exemplos legais para a apresentação. Após a palestra, apresentei a alguns conferencistas mais interessados alguns exemplos práticos e algumas configurações necessárias para rodar os softwares que mencionei na palestra.

Aos conferencistas que estiveram em minha palestra espero que tenham gostado, este neste post abro espaço para críticas, sugestões, elogios, etc. No caso de ter ficado alguma dúvida, é só fazer um contato que eu procuro ajudar.

Slides da palestra: Qualidade no desenvolvimento de Software com PHPUnit

Abraço a todos.

Compartilhe:
  • del.icio.us
  • Google
  • Digg
  • Sphinn
  • Facebook
  • Mixx
  • LinkedIn
  • Live
  • Rec6
  • Technorati
  • TwitThis
1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (2 votos, média: 3 de 5)
Loading ... Loading ...

9 Comments »

Novembro 27th 2007

PHP Conference Brasil 2007 - Novidades!

PHP Conference Brasil 2007 Confirmando o que já havia falado anunciado aqui no blog, este sábado estarei palestrando no PHP Conference Brasil 2007, miha palestra será no proximo sábado das 11h30 às 13h00, o titulo da palestra? "Qualidade no desenvolvimento de Software com PHPUnit".

Programação do evento: http://www.prophp.com.br/phpconference/2007/programacao.htm

Informações Gerais:
Data: 30 de Novembro e 1º de Dezembro
Sexta e sábado, das 9h00 às 18h00

Local: UNIFIEO
Av. Franz Voegeli, 300 (próximo ao Shopping Continental, Terminal Rodoviário de Osasco e uma loja de Material para Construção chamado Tela Norte) - Vila Yara - Osasco - CEP 06020-190

A tem mais! Estou distribuindo inteiramente grátis três cortesias para o evento, os primeiros que manifestarem o interesse estarão levando!

Obs.: Os que manifestarem o interesse deverão ficar comprometidos de realmente irem no evento, para não tirar a vaga de algum interessado.

Aos que ganharem, nos vemos por lá!

Abraço a todos.

Compartilhe:
  • del.icio.us
  • Google
  • Digg
  • Sphinn
  • Facebook
  • Mixx
  • LinkedIn
  • Live
  • Rec6
  • Technorati
  • TwitThis
1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (Nenhuma avaliação ainda)
Loading ... Loading ...

1 Comment »

Novembro 17th 2007

Ganhe um livro!?

A Consciência Hacker
Inspirado no post feito pelo Urubatan a algum tempo, estou doando um livro.
As regras são:

  • Postar um link em seu próprio blog (se tiver) para o home do meu blog
  • Esrever 1 tutorial sobre algum assunto atual e me enviar para que seja postado aqui no blog

O assunto? PHP.

O primeiro que me enviar o tutorial ta levanto o livro gratuitamente (frete não incluso :P).

Ta bom, sei que o livro não é grandes coisas, mas vale a brincadeira.

[]'s

Compartilhe:
  • del.icio.us
  • Google
  • Digg
  • Sphinn
  • Facebook
  • Mixx
  • LinkedIn
  • Live
  • Rec6
  • Technorati
  • TwitThis
1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (2 votos, média: 4 de 5)
Loading ... Loading ...

2 Comments »

Novembro 11th 2007

PHP Conference Brasil 2007

PHP Conference Brasil 2007Na semana passada foi divulgada a grade temaria preliminar do PHP Conference Brasil 2007, evento promovido pela Tempo Real Eventos em parceria com o ProPHP, que reúne mais de 1000 congressistas, tutoriais, palestras conceituais e técnicas, casos de sucesso e outras atividades de altíssima qualidade! Entre os palestrantes divulgados para o evento, uma surpresa, eu! :)

A grade divulgada pela Tempo Real Eventos ainda não está completa, inclusive a minha palestra também não está com o titulo definitivo, está como "PHP UNIT". Apresentarei a importância da ferramenta na qualidade do desenvolvimento de software, casos de uso e tópicos avançados.

Esta semana estarei conversando com o pessoal da Tempo Real Eventos para acertar todos os detalhes sobre minha participação no evento, no mais, estou muito contente com a notícia, quando tiver mais informações posto aqui no blog.

PHP Conference

Data: 30 de Novembro e 1º de Dezembro
Sexta e sábado, das 9h00 às 18h00
Local: UNIFIEO
Av. Franz Voegeli, 300 (próximo ao Shopping Continental, Terminal Rodoviário de Osasco e uma loja de Material para Construção chamado Tela Norte) - Vila Yara - Osasco - CEP 06020-190
Público Alvo: Comunidade PHP Brasil (Profissionais e Estudantes que já desenvolvem para internet utilizando PHP)

Aos que poderem comparecer, será um prazer poder compartilhar conhecimentos neste grande evento.

[]'s

Grade de programação: http://www.prophp.com.br/phpconference/2007/programacao.htm

Compartilhe:
  • del.icio.us
  • Google
  • Digg
  • Sphinn
  • Facebook
  • Mixx
  • LinkedIn
  • Live
  • Rec6
  • Technorati
  • TwitThis
1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (Nenhuma avaliação ainda)
Loading ... Loading ...

6 Comments »

Outubro 26th 2007

Utilizando listas encadeadas

Listas encadeadas representam uma coleções de elementos organizados linearmente, onde cada elemento aponta para o próximo elemento da lista. Uma lista encadeada é uma seqüência de zero ou mais itens X1,X2,...,Xn, onde Xi é de um determinado tipo e n é o tamanho da lista, sendo que:

  • X1 é o primeiro item da lista, Xn é o último
  • Xi precede Xi+1
  • Xi sucede Xi-1

A inserção e remoção de elementos no meio de uma lista encadeada é uma operação prática.

Continue Reading »

Compartilhe:
  • del.icio.us
  • Google
  • Digg
  • Sphinn
  • Facebook
  • Mixx
  • LinkedIn
  • Live
  • Rec6
  • Technorati
  • TwitThis
1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (Nenhuma avaliação ainda)
Loading ... Loading ...

Páginas: 1 2 3

3 Comments »

Outubro 24th 2007

Erro pra lá de estranho no PHP

Hoje um erro muito estranho aconteceu em um dos servidores da empresa onde trabalho. O erro ocorre quando há dois foreach para um mesmo array e o foreach interno possui um break.

Este é o código necessário para reproduzir o erro.

PHP:
  1. <?php
  2.  
  3. $array = array('A', 'B');
  4.  
  5. foreach ($array as $item) {
  6.   echo '1st nest, item ' . $item . '<br>';
  7.   foreach ($array as $sItem) {
  8.     echo '&nbsp; 2nd nest, item ' . $item . '<br>';
  9.     break;
  10.   }
  11. }

Ao rodar esse código, o PHP entra em loop infinito.
O detalhe é que este erro só acontece no PHP 5.2.1.

[]'s

Compartilhe:
  • del.icio.us
  • Google
  • Digg
  • Sphinn
  • Facebook
  • Mixx
  • LinkedIn
  • Live
  • Rec6
  • Technorati
  • TwitThis
1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (Nenhuma avaliação ainda)
Loading ... Loading ...

2 Comments »

« Prev - Next »