Análise PureMVC & Cairngorm

5 views
Skip to first unread message

Pergentino Araújo

unread,
Aug 18, 2008, 12:50:21 PM8/18/08
to fle...@googlegroups.com
Olá Pessoal,

estou estudando estes dois frameworks (PureMVC & Cairngorm), afim de analisá-los e definir qual o melhor para utilizar em meu projeto de mestrado (específico).

Gostaria de opiniões de vocês sobre estes frameworks (preferencialmente quem trabalhou/brincou com ambos), pois o que eu vejo na literatura, é que a galera opta mais pelo Cairngorm, pelo fato de ser fácil de implementar e também de ser da própria adobe, mas parece que o mesmo está paralizado (isto é muito ruim).

Enfim, é mais pra uma troca de experiência e, quando o trabalho estiver concluído, compartilharei com vocês o resultado de minhas análises ;)

[]'s
--
Atenciosamente, Pergentino.

Vicente Maciel Junior

unread,
Aug 18, 2008, 2:54:26 PM8/18/08
to fle...@googlegroups.com
Uso Cairngorm e AirCairngorm (desenvolvido pelo Eric Feminella - http://www.ericfeminella.com/blog/2008/06/22/air-cairngorm-20/).

Me atende completamente, inclusive na questão dos Modules, que até pra mim já foi um mito mas que a arquitetura ModelLocator resolve facilmente. Implementando os módulos dentro do mesmo projeto, não tive problemas.

Pelo fato do Cairngorm (site do projeto) ter sido movido recentemente do labs.adobe.com para o opensource.adobe.com, acredito que uma atualização / novo release ou simplesmente alguma novidade esteja por vir (esperança?). Sinceramente o que mais me incomodou foi falta de suporte e o atraso em se ter uma implementação oficial do projeto para atender implementações em AIR (Business Objects). Inicialmente implementei uma solução própria mas depois adotei o AirCairngorm que ficou bem mais abstrato do que eu tinha feito na época do Apollo c/ SQLite.

Tenho muita curiosidade e vontade de utilizar o PureMVC, mas o tempo me obriga a só mergulhar em uma alternativa se ela for realmente necessária. Isso ainda não me ocorreu. Quase ocorreu em relação ao Modules, mas acabou sendo apenas influência do que eu ja tinha lido a respeito de Cairngorm x Modules.

Enfim, acho que a principal característica do Cairngorm você já citou: Simplicidade. E falo disso sem nem mesmo comparar ao PureMVC, mas que me parece ser aplicável no contexto de comparação sim.

Como instrutor, achei muito fácil inclusive ensinar o Cairngorm, enquanto eu mesmo nas poucas tentativas que fiz de tentar brincar com o PureMVC, senti uma certa complexidade que não experimentei com o Cairngorm. O legal nesse ponto é que consigo tranferir o conhecimento para eventuais pessoas que agrego na equipe de desenvolvimento, com muita facilidade. Esse seria também um ponto que eu consideraria ao adotar um padrão. E aliás foi o mesmo fator que me levou a adotar o ColdFusion como plataforma server-side.


--
Vicente Maciel Junior
Independent Web Developer & Consultant
Adobe Advanced Certified Developer
Adobe Certified Instructor (ColdFusion & Flash Platform)
+55 (71) 8120-0035 / 9212-0909 - MSN: maci...@gmail.com
http://teclandoalto.blogspot.com


2008/8/18 Pergentino Araújo <jperg...@gmail.com>

Pergentino Araújo

unread,
Aug 18, 2008, 6:23:57 PM8/18/08
to fle...@googlegroups.com
Hmmmm, foi bom saber da facilidade de trabalho com Modules, pois um dos itens que me preocupo na minha aplicação, é o tamanho dela, por que ela será acessada por vários usuários simultâneamente e, através da web... ou seja, quanto menos cargas desnecessárias, melhor.

Li um artigo falando que o Cairngorm deixa a desejar em relação a otimização da aplicação. :(

[]'s
2008/8/18 Vicente Maciel Junior <maci...@gmail.com>



--
Atenciosamente, Pergentino.

Vicente Maciel Junior

unread,
Aug 18, 2008, 6:26:27 PM8/18/08
to fle...@googlegroups.com
Vc possui esse artigo? Gostaria de ler.

Valeu!

Vicente Jr

2008/8/18 Pergentino Araújo <jperg...@gmail.com>

gabriela perry

unread,
Aug 18, 2008, 6:32:22 PM8/18/08
to fle...@googlegroups.com
Sobre cairngorm e módulos:
http://lab.arc90.com/2007/10/modular_1.php#more

 
Gabriela Trindade Perry - http://www.gabriela.trindade.nom.br




Date: Mon, 18 Aug 2008 19:26:27 -0300
From: maci...@gmail.com
To: fle...@googlegroups.com
Subject: [flexdev] Re: Análise PureMVC & Cairngorm

Invite your mail contacts to join your friends list with Windows Live Spaces. It's easy! Try it!

Pergentino Araújo

unread,
Aug 18, 2008, 6:35:16 PM8/18/08
to fle...@googlegroups.com
Vou ver se acho... rsrsrs

Foi um dos 290834987293478 que li a respeito, acho que perdi o link :(

Mas, assim que achar, envio aqui pra lista para quem se interessar, ler.
--
Atenciosamente, Pergentino.

Mário Júnior

unread,
Aug 18, 2008, 11:47:45 PM8/18/08
to fle...@googlegroups.com
Acho isso muito relativo.

Conheço os dois e atualmente não uso nem um, nem outro (já usei em alguns projetos)... oq se precisa ter em mente é saber usar a ferramenta certo para problemas específicos.
Nem sempre Cairngorm é bom, e poucas vezes vi uma aplicação do PureMVC que realmente seja necessária.

Oque tem que ter cuidado, é para não cometer o erro de "usar uma bazuca para matar uma mosca, e ainda errar a mosca", com já foi dito pelo nosso colega Daniel Schmitz, quando comentou esse bom artigo: http://blog.dclick.com.br/2008/03/14/flex-e-o-mvc/pt/



Abraços


2008/8/18 Pergentino Araújo <jperg...@gmail.com>



--
Mário de Souza Júnior
Programador Java / Flex : AS3 / PHP
(44) 4009-3550 Maringá-PR
http://blog.mariojunior.com
junin...@gmail.com (gtalk, msn, etc..)

Vicente Maciel Junior

unread,
Aug 19, 2008, 8:32:31 AM8/19/08
to fle...@googlegroups.com
Fiquei curioso para saber o que você usa.

A seleção/escolha de um framework para mim, além do que ela proporciona em suas principais características técnicas, objetiva determinar um padrão na integração de equipes (que no meu caso geralmente é remota) o que resulta para mim em benefícios não apenas no tempo de desenvolvimento, mas também no pós-projeto quando eu vou agregar outras pessoas à equipe, e por esse mesmo fator que citei a questão do treinamento.

Com isso, a questão vai muito além simplesmente das características técnicas do framework. Em qualquer ocasião, há de se analisar os benefícios de integração e unificação de raciocício que ela pode proporcionar, além de padronizar outras técnicas pré-produção (modelagem por exemplo). Enfim, ter um grupo falando (e escrevendo) a mesma "língua" é um enorme benefício da adoção de um framework.

Por essas e outras que particularmente eu não consigo ver uma equipe (trabalho de 1 programador(a) só é diferente) trabalhar sem adotar um padrão que pode vir normalmente da adoção de um framework.

Veja bem, não estou contra-criticando sua opinião Mário. Só estou querendo esclarecer que a adoção de um framework (seja ele qual for) pode ir além do "é necessário técnicamente" ou não para um projeto.



--
Vicente Maciel Junior
Independent Web Developer & Consultant
Adobe Advanced Certified Developer
Adobe Certified Instructor (ColdFusion & Flash Platform)
+55 (71) 8120-0035 / 9212-0909 - MSN: maci...@gmail.com
http://teclandoalto.blogspot.com


2008/8/19 Mário Júnior <junin...@gmail.com>

Hamad Amaral

unread,
Aug 19, 2008, 8:46:33 AM8/19/08
to "Mário Júnior"
Mário,

MJ> Conheço os dois e atualmente não uso nem um, nem outro (já usei em alguns
MJ> projetos)... oq se precisa ter em mente é saber usar a ferramenta certo para
MJ> problemas específicos.
MJ> Nem sempre Cairngorm é bom, e poucas vezes vi uma aplicação do PureMVC que
MJ> realmente seja necessária.

Alguém já testou o Mate (mate.asfusion.com)? Eu ainda não tive tempo
:-(


--
Hamad Amaral
ha...@hamad.com.br
www.hamad.com.br/blog

Mário Júnior

unread,
Aug 19, 2008, 11:07:08 AM8/19/08
to fle...@googlegroups.com
Justamente Vicente, vc não foi contra minha opinião, acho que só a reforçou mais ainda.

Para trabalhos remotos com pessoas espalhadas pelo brasil todo eu uso o cairngorm, justamente por ser mais propagado e para manter um padrão.

Eu quis dizer q a relatividade está em comparar qual o melhor: Cairngorm x PureMVC.

Quem é melhor?! Na minha opinão, nem um e nem outro. Depende! Para oq vai construir? Com quem vai construir? E, como pretende manter sua app depois de construída??? Tanto Cairngorm como PureMVC (e até os outros 7 fws mvcs propostos para o Flex - http://www.igorcosta.com/blog/?p=590) tem seus defeitos e suas vantagens. O que o pessoal precisa ter em mente é, justamente, algo que o Beck comentou no próprio artigo que eu passei antes, onde ele diz:

Beck -> "O principal problema é achar que o Framework sozinho é a sua salvação quando, na realidade, eles se tratam de excelentes pontos de partida."


Vejo que o pessoal estão focados no uso de um framework para resolver todos os seus problemas, enquanto poucos procuram estudar a engenharia que há por trás deles. Pq não param um pouco, analisem quais suas necessidades, pegue oq há de bom do cairngorm, oq há de bom do pureMVC e creim um padrão próprio, que seja voltado para suas necessidades e não necessidades dos desenvolvedores q fizeram tais frameworks... por isso que digo: "é muito relativo!".

Só finalizando a resposta para sua pergunta, sobre oq eu uso:
- Remotamente (com desenvolvedores a fora): Cairngorm

- Internamente (na Elotech, onde trabalho): Devemos dar um start para desenvolver nosso próprio framework, EloFlex. Desde sua arquitetura ao tratar requisições - desde os disparos até o tratamento das respostas - (isso já está praticamente pronto, falta melhorar pouca coisa), passando por padronização de telas flexíveis (isso vai dar trabalho), até a construção de componentes próprios (isso é simples).


Um abraço Vicente!

Mário Júnior

unread,
Aug 19, 2008, 11:09:41 AM8/19/08
to fle...@googlegroups.com
Sim... já vi... e esse esquema de usar Tags realmente é interessante pois vc mantém o  desenvolvedor sempre no seu controle, não dando "poderes" para que ele quebre o conceito que vc usa.

Para desenvolver FWs q serão usados por outros programadores (programadores de produção) é interessante...


Abraço.

Vicente Maciel Junior

unread,
Aug 19, 2008, 11:59:40 AM8/19/08
to fle...@googlegroups.com
Perfeito Mário! Concordo plenamente!

Junto aos exemplos teóricos que você citou, a questão que comentei inicialmente quanto ao Cairngorm não ser útil (sozinho) para aplicações AIR usando qualquer outra forma de acesso a dados que não seja os sugeridos pelo seu ServiceLocator (RemoteObject, HTTPService e WebService). Ou em outras palavras, ele só apresenta soluções de acesso a dados integrando um Middleware ou fonte fixa de dados (xml,txt,etc).

Isso exemplifica muito bem o que você está dizendo. Não sei se (ou como) o PureMVC ou outros frameworks para Flex/AIR apresentam funcionalidades para agregar a API de integração com o SQLite. (Aliás, se alguém conhecer um framework que englobe essa API do AIR, muito me interessa ter referências).

Como eu já disse aqui, inicialmente eu tive que criar uma implementação própria extendendo o ServiceLocator, mas depois passei a integrar o AIRCairngorm do Eric Feminella para resolver essa questão.

Realmente Framework(s) != Tudo



--
Vicente Maciel Junior
Independent Web Developer & Consultant
Adobe Advanced Certified Developer
Adobe Certified Instructor (ColdFusion & Flash Platform)
+55 (71) 8120-0035 / 9212-0909 - MSN: maci...@gmail.com
http://teclandoalto.blogspot.com

2008/8/19 Mário Júnior <junin...@gmail.com>
Justamente Vicente, vc não foi contra minha opinião, acho que só a reforçou mais ainda.

Beck Novaes

unread,
Aug 19, 2008, 12:53:53 PM8/19/08
to flexdev
******************************************************************
*
* Ministério da Saúde adverte: Lá vem post gigante
*
******************************************************************

Eu gostaria de reforçar a mensagem de que nem o Cairngorm nem o
PureMVC vai atender você 100%. Mas é errado usar isto como argumento
para não usar Framework algum. Eu sempre tive a impressão que as
pessoas que criticam o Cairngorm ou o PureMVC se baseam muito mais nas
suas crenças do que em conhecimento de verdade. É como se os
programadores que criticam sem conhecimento o fizessem assim por não
conhecerem algo que eu gosto de chamar de Conceptual Constraints.

Não há problema algum em dois programadores terem soluções distintas.
Isto é, de fato, a regra e não a exceção. Agora, o que acontece quando
vemos uma determinada solução e pensamos: "eu jamais faria assim";
"esta solução é tão distinta da minha que não consigo ver sentido
algum em fazer deste modo". Pior, o que acontece quando não entendemos
porque aquela solução que jamais imaginaríamos é a melhor? É aqui que
entram as Conceptual Constraints.

Definição
=======
Conceptual Constraints são conceitos que você mantém na mente e que
lhe obrigam a procurar outras alternativas para resolver um problema,
pois você sabe que as soluções que lhe ocorreram num primeiro instante
irão violar estes conceitos.

Basicamente, se dois programadores tem em mente as mesmas Conceptual
Constraints, ou seja, se eles sabem principalmente as coisas que eles
NÃO DEVEM fazer, isto irá permitir que, no mínimo, um entenda a
solução do outro - não descarto a hipótese que estes dois
programadores cheguem a soluções semelhantes graças ao fato de ambos
saberem o que NÃO DEVE ser feito.

Exemplos de Conceptual Constraints do Cairngorm:
- O ModelLocator não deve saber nada do Command nem da View
- O Command não deve saber nada da View
- A View não deve saber nada do Command
- O ModelLocator é possível manter o estado no cliente, mas os dados
nele armazenados devem ter um significado semântico. No lugar de
preço, nome e descrição, devemos ter um objeto Produto no
ModelLocator. Além disto, estes objetos, muitas vezes devem encapsular
lógica de negócio – o que possibilita a realização de testes unitários
- Os Commands são as Worker Classes do Cairngorm. Como tal, elas devem
prover a funcionalidade de negócios do seu aplicativo.
- Nada impede que o Command tenha apenas um método “execute”.

Resumindo o meu post que já está maior do que eu gostaria, o que eu
quero dizer simplesmente é que se você entende os conceitos seguidos
pelas pessoas que fizeram os Frameworks fica muito mais fácil entender
porque eles de fato agregam valor. Por outro lado, se você não conhece
as Conceptual Contraints que levaram o Cairngorm e o PureMVC a ser do
jeito que eles são, você vai sim achar que eles são ruins, não lhe
atendem e que você seria capaz de fazer algo bem melhor (não que não
seja desde que você saiba muito bem do que está falando).

[]'s
Beck Novaes






On Aug 18, 3:54 pm, "Vicente Maciel Junior" <macie...@gmail.com>
wrote:
> Uso Cairngorm e AirCairngorm (desenvolvido pelo Eric Feminella -http://www.ericfeminella.com/blog/2008/06/22/air-cairngorm-20/).
> +55 (71) 8120-0035 / 9212-0909 - MSN: macie...@gmail.comhttp://teclandoalto.blogspot.com
>
> 2008/8/18 Pergentino Araújo <jpergent...@gmail.com>

Beck Novaes

unread,
Aug 19, 2008, 1:02:00 PM8/19/08
to flexdev
Ah... eu só queria deixar claro que o post não é destinado a alguém
específico. Pretende ser apenas um complemento aos comentários do
Mário e o Vicente.

[]'s
Beck NOvaes

Vicente Maciel Junior

unread,
Aug 19, 2008, 1:44:16 PM8/19/08
to fle...@googlegroups.com

Citações/Questões...
 
Definição
=======
Conceptual Constraints são conceitos que você mantém na mente e que
lhe obrigam a procurar outras alternativas para resolver um problema,
pois você sabe que as soluções que lhe ocorreram num primeiro instante
irão violar estes conceitos.

Perfeito!
Pergunta: Na sua opinião, para uma equipe isso poderia ser induzido (regras) de forma a nivelar ou direcionar a ação que ela promove?
Fiquei com dois pensamentos distintos a respeito:
Sim... vamos induzir.
Esperado: Fluxo de pensamento e esforço no mesmo nível e direção.
Possível: Criatividade = nenhuma ou menos regras (positivo? negativo?)
 
Exemplos de Conceptual Constraints do Cairngorm:
- O  ModelLocator não deve saber nada do Command nem da View
- O Command não deve saber nada da View
- A View não deve saber nada do Command
- O ModelLocator é possível manter o estado no cliente, mas os dados
nele armazenados devem ter um significado semântico. No lugar de
preço, nome e descrição, devemos ter um objeto Produto no
ModelLocator. Além disto, estes objetos, muitas vezes devem encapsular
lógica de negócio – o que possibilita a realização de testes unitários
- Os Commands são as Worker Classes do Cairngorm. Como tal, elas devem
prover a funcionalidade de negócios do seu aplicativo.
- Nada impede que o Command tenha apenas um método "execute".

Excelente descrição da estrutura do Cairngorm. Pode ter passado despercebido por mim, mas é a primeira vez que a vejo em portugues de forma objetiva.
 

--
Vicente Maciel Junior
Independent Web Developer & Consultant
Adobe Advanced Certified Developer
Adobe Certified Instructor (ColdFusion & Flash Platform)
+55 (71) 8120-0035 / 9212-0909 - MSN: maci...@gmail.com
http://teclandoalto.blogspot.com

Mário Júnior

unread,
Aug 19, 2008, 2:36:59 PM8/19/08
to fle...@googlegroups.com
ehhehe... esses posts com avisos do ministério da saúde são muito bons sim, não se acanhe em fazê-los.

Bem, é exatamente como vc disse sobre o Conceptual Constraints. Vejo muita gente que vai fazer um simples crud de duas telas e se perguntando: devo usar Cairgorm ou PureMVC? Ou ainda, querer compará-los. Por isso, mais uma vez, digo que o uso de um fw é sim muito relativo. Mas por favor, não me entendam mal... não estou dizendo q não é para usar fws, nem disse q são ruins, só alerto para refletirem sobre o seu uso na natureza do seu projeto. É bem mais uma questão analítica do q técnica.

Um abraço.

Rodrigo Pereira Fraga

unread,
Aug 19, 2008, 3:16:43 PM8/19/08
to fle...@googlegroups.com
Acredito assim: Antes de definir/utilizar um framework, deve-se primeiro analisar o escopo e as necessidades técnicas do projeto.
Se este projeto necessita ser escalável, padrões/frameworks são sempre bem vindos.

Críticas quanto a fw todos tem (Conceptual Constraints), quem aqui nunca customizou um mínimo que seja o Cairngorm ou o PureMVC?

Como por exemplo, eu mesmo não uso um Singleton no ModelLocator.
Uma vez que trabalho a nível de casos de usos, e cada caso de uso geralmente contém um ModelLocator, é no mínimo custoso ter diversas instâncias de singletons em execução no cliente.
Para melhor me atender, apliquei o padrão MonoState nos ModelLocator, onde agora bascimente tenho apenas uma instância única que mantém os estados de todos os ModelsLocator. Para terem idéia eu instâncio assim um ML:

var modelLocator:MeuModelLocator = new MeuModelLocator();

Fora evitar objetos anêmicos (http://martinfowler.com/bliki/AnemicDomainModel.html), e construir objetos inteligentes detentores de estado(Um estado local) e comportamento.

Enfim, sou adepto de frameworks mas sempre levando em conta o escopo do projeto.

Abraços e tenham uma boa tarde.

Atenciosamente:
-----------------------------------------------
| Rodrigo Pereira Fraga|
http://www.digows.com/
http://forum.flexbrasil.com.br/
-----------------------------------------------

2008/8/19 Mário Júnior <junin...@gmail.com>



--

Marvin Froeder

unread,
Aug 19, 2008, 4:41:44 PM8/19/08
to fle...@googlegroups.com
Dae,

Cara, se teu inglês estiver legal, recomendo uma olhada no seguinte site:
http://www.rmaug.com/rmaug/community/forum/messageview.cfm?catid=5&threadid=77&enterthread=y

Vai em Watch the meeting online via Adobe Connect

Cara, muito show, os malucos fizeram um encontro e apresentaram o Mate, Swiz, Pure MVC e Cairngorn.
Eu cheguei a assistir ao vivo, e dos frames apresentados o Swiz foi quem mais me surpreendeu, tu não precisa de 50 classes pra fazer um hello world nele. =D


VELO

2008/8/18 Pergentino Araújo <jperg...@gmail.com>

Vicente Maciel Junior

unread,
Aug 19, 2008, 10:37:23 PM8/19/08
to fle...@googlegroups.com
Oi Gabriela,

Não sei se sua intenção foi fornecer o link indicando mais informações quanto a questão Cairngorm + Modules ou quanto a usar o Modular para resolver qualquer questão relacionada ao uso de Cairngorm + Modules, que aliás muito se houve falar por ai ser tão problemático. Pelo que eu entendi, todos os problemas que já vi sendo relatados eram relacionados a estrutura da aplicação (arquitetura) e até mesmo lógica, mas nada diretamente ligado ao Cairngorm.

Um exemplo comum de erro estrutural da aplicação é fazer com que os Modules tenham seu próprio ServiceLocator quando na verdade basta consumir a instância já definida na aplicação pai.

De qualquer forma, eu só quero dizer que eu uso Cairngorm + Modules sem a necessidade de qualquer utilitário/adendo ao Cairngorm.

Eu já tive alguns problemas sim quando meus modules estavam sendo criados/definidos em um projeto separado no FlexBuilder, mas mesmo assim acho que foi algum vacilo meu em termos de configuração do compilador. Qualquer dia vou procurar fazer um teste novamente para tentar descobrir que vacilo foi esse.

Enfim, definindo os Modules no mesmo projeto da aplicação que os irá consumir/controlar, não tenho experimentado problemas.

Esse PDF ajuda a compreender o normal funcionamento do Cairngorm com Modules, além de outras dicas úteis:
http://blogs.adobe.com/borre/Modularizing_Flex_Cairngorm_and_Modules.pdf



--
Vicente Maciel Junior
Independent Web Developer & Consultant
Adobe Advanced Certified Developer
Adobe Certified Instructor (ColdFusion & Flash Platform)
+55 (71) 8120-0035 / 9212-0909 - MSN: maci...@gmail.com
http://teclandoalto.blogspot.com


2008/8/18 gabriela perry <gabrie...@hotmail.com>

Beck Novaes

unread,
Aug 20, 2008, 9:51:09 AM8/20/08
to flexdev
> Pergunta: Na sua opinião, para uma equipe isso poderia ser induzido (regras)
> de forma a nivelar ou direcionar a ação que ela promove?
Eu acho que sim. Talvez o real benefício do que eu chamei de
Conceptual Constraints seja "resumir" determinados conceitos numa
espécie de "Guidelines do que NÃO DEVE ser feito".

Este conceito nasceu de um problema que enfrentamos com uma equipe de
desenvolvedores que, na época, estavam começando a desenvolver em
Flex. Primeiro falamos para eles trabalharem com eventos e logo havia
eventos desnecessários espalhados por toda a aplicação. Depois
voltamos atrás e falamos para tirar proveito do DataBinding, mostramos
o ChangeWatcher e logo havia ChangeWather toda a aplicação. Foi então
que percebemos que não deveríamos falar como fazer e sim o que não
deve ser feito num nível conceitual.

O problema é que solução alguma atenderá todas as situações e quando
você impõe uma solução são grandes as chances dela ser mal usada em
diversas situações para as quais ela não é adequada. Agora, quando
você diz o que não deve ser feito num nível mais conceitual, creio que
aumentam as chances dos desenvolvedores encontrarem boas soluções para
as mais variadas situações. E justamente por não conhecer o que não
deve ser feito num nível mais conceitual muitos desenvolvedores acabam
achando que o Cairngorm ou o PureMVC e desnecessário.

[]'s
Beck Novaes

On Aug 19, 2:44 pm, "Vicente Maciel Junior" <macie...@gmail.com>
wrote:
> +55 (71) 8120-0035 / 9212-0909 - MSN: macie...@gmail.comhttp://teclandoalto.blogspot.com

Vicente Maciel Junior

unread,
Aug 20, 2008, 9:54:36 AM8/20/08
to fle...@googlegroups.com
Valeu Beck!

Vicente Maciel Jr

2008/8/20 Beck Novaes <beck....@gmail.com>
+55 (71) 8120-0035 / 9212-0909 - MSN: maci...@gmail.com
http://teclandoalto.blogspot.com
Reply all
Reply to author
Forward
0 new messages