Hibernate, o assunto era Reinventar a roda, mas isso não tem mais importância...  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4205
Localização: São Paulo
Offline

saoj wrote:
Paulo Silveira wrote:
Repare que o proprio site da oracle esta falando sim de writer bloquear reader.


Não tenho certeza, mas acho que o MySQL e outros já possuem essa característica que no passado já foi o trunfo do Oracle, afinal alguma coisa tinha que justificar pagar 100 mil reais por um software.


Tambem acho. Esses caras se copiam assim como Java e .NET se copiam.

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
bandrade
GUJ Ranger

Membro desde: 20/01/2003 15:45:15
Mensagens: 782
Offline

louds wrote:O problema de reinventar a roda é quando os frameworks existentes foram criados pensando exclusivamente no usuário final e não que serão consumidos por outros. Isso é um erro grave que até hoje ainda é uma praga no mundo Java.


Frameworks que são usados por outros desenvolvedores é o que dá mais trabalho, principalmente quando ele não tme outra escolha. Trabalhei com isso, fazendo o framework que seria utilizado desenvolvimento de vários outros produtos.

O Hibernate tem a facilidade de ser apenas java (tá, também tem para C#, mas com essas atualizações do VS2008 e a vinda do LINQ não sei como vai ficar) e na minha opinião as primeiras versões não foram muito bem discutidas antes da implementação, mas as versões mais recentes estão ótimas, o que mostra a evolução das pessoas e a proposta de alguns projetos Open Source.

Voltando ao tópico, "reinventar a roda" as vezes é uma necessidade, voltando ao exemplo de quando eu fazia o framework, tinha que criar bibliotecas em C (BREW), Java (J2ME) e C (SYMBIAN). assim, o mesmo código "compilava" em todas essas plataformas (era necessário trocar . -> ::, etc. mas era um avanço) e algumas coisas tinha que ser adaptadoas em cima das implementações que já existiam (do proprio SDK e dos diversos frameworks q já existiam). Se você rpecisa de algo, vai lá e faz. Não adianta cadastrar seu problema no forum do framework, escrever no JIRA porque o andar desses projetos pode não atender aos seus prazos.


Will Code For Food
boaglio
Moderador
[Avatar]

Membro desde: 09/09/2002 21:23:39
Mensagens: 1865
Localização: Sampa City
Offline

Paulo Silveira wrote:
saoj wrote:
Paulo Silveira wrote:
Repare que o proprio site da oracle esta falando sim de writer bloquear reader.


Não tenho certeza, mas acho que o MySQL e outros já possuem essa característica que no passado já foi o trunfo do Oracle, afinal alguma coisa tinha que justificar pagar 100 mil reais por um software.


Tambem acho. Esses caras se copiam assim como Java e .NET se copiam.


Assim como a Oracle copiou o conceito de triggers da Sybase, e por aí vai.

Hoje no Oracle schema e user é a mesma coisa, já em MySQL, PostgreSQL são coisas distintas; eu acho que em breve veremos numa nova versão do Oracle essa "grande inovação" de ter isso separado. Até pouco tempo atrás nem tabela temporária tinha e até hoje coisas básicas, como por exemplo uma coluna do tipo boolean não existe e somos obrigados a usar gambiarras.

Sobre a discussão de lock, o que é interessante do Oracle é que tudo isso ele implementa internamente, vc faz um UPDATE de 10 linhas e pronto, ele já locou essas linhas para a sua sessão, somente você vê as alterações fazendo SELECT, mais ninguém. Se outra pessoa fizer um update em algumas dessas 10 linhas, a sessão dela vai esperar a sua commitar a transação ou desfazer com rollback.


 

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de Java via MP!
[WWW]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

volnei wrote:
Ok, o tópico fala sobre abstração de complexidade e não de quantidade de benefícios ou coisa parecida, agora se quer algo melhor que o hibernate aí vc abre um tópico só seu e aposto que vai ter gente que prefere JDBC à Hibernate. Nem tudo que te agrada agrada aos outros.


O resto deste tópico tem até algum mérito mas eu discordei do que você dise com relação ao Hibernate. Este tópico não é 'só seu', se você não está interessado em discutir suas opiniões não as expresse em um fórum público.

volnei wrote:
Não sabia que fazem a mesma coisa, aliás sequer citei isso quando me referi ao objetivo. Qual o principal objetivo do Java? Bem diferente do C++ e mais ainda do C# neh?


AHm? Todas são linguages Orientadas a Objetos de uso eral. Todas azem a mesma coisa, de maneiras diferentes.

volnei wrote:
pcalcado wrote:
Eu consigo fazer uma aplicação web em assembly. No final tudo vira código de máquina mesmo, porque eu usaria Java?

Tambem consegue fazer uma aplicação web usando todos os frameworks quanto possivel, mas isso seria tão estúpido quanto. Tambem consegue matar uma mosta com uma metralhadora mas não precisa de uma não é??


Ahm? Você quem falou que HQL vira SQL, então dá pra fazer tudo em SQL. Eu concordei e ainda falei que Bytecode vra código de máquina, então vamos fazer tudo em código de máquina. O que framework web tem a ver com isso?

volnei wrote:Nossa isso é totalmente relativo, não tem como falar que não funciona... à não ser que exista algum framework pronto chamado "caseiro" eu acho que se vc implementar bem vai funcionar.


Pois é, eu aposto que quando você tentar vai mudar de idéia. Pense num grafo simles, um administrador <-> grupo <-> usuario. Agora faça consultar lazy-loaded que tragam todos os usuários de um grupo, pegue todos os grupos de todos estes usuários num conjunto e depois retorne todos os administradores de todos os grupos que esses usuários pertencem a.

volnei wrote:
Sério, e a CGLIB? É apenas mais uma das dezenas de apis que o hibernante usa?


CGLIB faz manipulação de bytecode, não lazy loading. Por favor, conheça a ferramenta antes de criticar.

volnei wrote:
O ow... mais uma vez vc distorceu minha resposta, em nenhum momento eu disse que polimorfismo é ridiculo, apenas falei sobre as queries polimórficas. Então oque você falou não faz o menor sentido!


Se você não tem queries polimórficas como vai ter polimorfismo? Como eu consigo uma consulta que me traga todas as instâncias da classe Usuario e de sas subclasses, segundo o modelo uma-tabela-por-classe ?

volnei wrote:Você disse que meu programa não era transacional, apenas gostaria de saber que sistema você está falando. Quanto ao commit e rollback o hibernate não inventou nada mesmo, apenas que você tinha que commitar consultas sql. rsrs


Se você não gosta disso basta criar um wrapper.

volnei wrote:
Pela última vez não estou falando de hibernate tá, sugiro que você leia o post inicial que apenas sita um exemplo do hibernate além do mais tudo que é feito com ele é possivel fazer com java -mesmo que vc não acredite- caso contrário ele teria sido desenvolvido em outra linguagem.


Hibernate é Java então dizer que tudo que se faz com ele se faz 'em java' nao faz sentido. Se você quiser reimplementar o Hibernate -ou um subset dele- em cada projeto esrevendo JDBC boa sorte.

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

pcalcado wrote:
volnei wrote:
Pela última vez não estou falando de hibernate tá, sugiro que você leia o post inicial que apenas sita um exemplo do hibernate além do mais tudo que é feito com ele é possivel fazer com java -mesmo que vc não acredite- caso contrário ele teria sido desenvolvido em outra linguagem.


Hibernate é Java então dizer que tudo que se faz com ele se faz 'em java' nao faz sentido. Se você quiser reimplementar o Hibernate -ou um subset dele- em cada projeto esrevendo JDBC boa sorte.


O caso é um pouco mais curioso, pois não usando nenhum framework de ORM não é possivel implementar persistencia em um RDBMS só (apenas) com Java, já que não tem como escapar de usar SQL com JDBC. SQL não é Java, por mais que se queira argumentar, não é. Já com Hibernate, é sim possivel implementar só com Java e nenhuma outra linguagem externa. Esse argumento contra Hibernate que com "só Java" é mais simples/facil/produtivo me faz rir pela própria falha na sua construção.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
Leonardo3001
GUJ Ranger

Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline

Juro que eu não entendi esse negócio de "reinventar a roda" que o Volnei anda dizendo tanto. É só uma expressão sem sentido pra dizer que determinada criação é ruim, sem usar argumentos sólidos!

O interessante é que, enquanto "reinventar a roda" tem um sentido depreciativo, a palavra "reinventar" sozinha tem um sentido positivo, de rejuvenecimento.. É claro que, para o Volnei, tudo parece que é apenas "reinventar a roda", o que é uma pena. Imagine a época em que foi criado o C para substituir a escrita em Assembly, foi uma reinvenção ou uma reinvenção da roda? E a criação do Java para substituir o C e C++? E a criação dos web frameworks para substituir a escrita direta em Servlets ou CGIs? Tudo isso foi reinvenção da roda?

Ah, mas tem aquele argumento manjado de que Java tem zilhões de frameworks, todos fazendo coisas parecidas entre eles. Mas amigo, o mundo do software livre é assim. Vários desenvolvedores criaram seus frameworks ou suas bibliotecas acreditando ter ideias interessantes pra comunidade. E não dá pra barrá-los dizendo: "Desculpe cara, não dá! Um outro framework faz exatamente o que você faz.". Fosse assim e a liberdade iria pro saco! A comunidade acaba fazendo suas escolhas, claro! Mas ninguém é obrigado a segui-las se achar que fazendo diferente dos demais, vai fazer melhor.

Leonardo Veríssimo
-------------------------------------------------
Objectzilla
[WWW]
rafaelglauber
GUJ Master
[Avatar]

Membro desde: 07/09/2007 23:05:20
Mensagens: 1065
Localização: Feira de Santana
Offline

Mesmo não concordando com a FORMA que o volnei demonstra seus argumentos, acredito que algumas pessoas estão aparentemente destorcendo seu post, o que ele parece querer é verificar se a desculpa de "reinventar a roda" não seria algo prejudicial, acabando por não permitir que ideias mais simples da mesma coisa possam surgir. No quisito "exemplo" do post é que o volnei pecou, foi falar logo do Hibernate!!!
volnei
JavaEvangelist
[Avatar]

Membro desde: 29/01/2003 11:36:27
Mensagens: 354
Offline

louds wrote:
O caso é um pouco mais curioso, pois não usando nenhum framework de ORM não é possivel implementar persistencia em um RDBMS só (apenas) com Java, já que não tem como escapar de usar SQL com JDBC. SQL não é Java, por mais que se queira argumentar, não é. Já com Hibernate, é sim possivel implementar só com Java e nenhuma outra linguagem externa. Esse argumento contra Hibernate que com "só Java" é mais simples/facil/produtivo me faz rir pela própria falha na sua construção.

HQL é java? Qual JSR??

Acho que você não leu tudo até aqui, mas quando me refiro a só java quero dizer algo que implementa alguma especificação, no caso JDBC e vc entendeu isso. Ninguem aqui é contra o hibernate, o tópico só foi criado para que pudessemos discutir sobre a abstração de uma determinada complexidade e como ela é entregue ao desenvolvedor tanto no hibernate como em qualquer outro framework.

Volnei Granado Munhoz

[Email] [MSN]
volnei
JavaEvangelist
[Avatar]

Membro desde: 29/01/2003 11:36:27
Mensagens: 354
Offline

pcalcado wrote:
O resto deste tópico tem até algum mérito mas eu discordei do que você dise com relação ao Hibernate. Este tópico não é 'só seu', se você não está interessado em discutir suas opiniões não as expresse em um fórum público.

Certo, o tópico não é só meu mas eu acho que seria no mínimo respeitoso manter o assunto com o qual ele foi iniciado e você moderador?? oq acha??

pcalcado wrote:
AHm? Todas são linguages Orientadas a Objetos de uso eral. Todas azem a mesma coisa, de maneiras diferentes.

O objetivo do java é na minha concepção ser uma linguagem altamente portável o que a torna diferente do c# por exemplo WORA...

pcalcado wrote:
Ahm? Você quem falou que HQL vira SQL, então dá pra fazer tudo em SQL. Eu concordei e ainda falei que Bytecode vra código de máquina, então vamos fazer tudo em código de máquina. O que framework web tem a ver com isso?

Você entendeu sim, quando você foi irônico no seu comentário que era possivel fazer tudo em assembly e realmente é, eu apenas disse que tambem é possivel usar uma quantidade escumunal de frameworks e em ambos oque tem que prevalecer é o bom senso, mas honestamente se não são capazes de seguir o assunto de um tópico nao posso exigir muito disso neh??


pcalcado wrote:
Pois é, eu aposto que quando você tentar vai mudar de idéia. Pense num grafo simles, um administrador <-> grupo <-> usuario. Agora faça consultar lazy-loaded que tragam todos os usuários de um grupo, pegue todos os grupos de todos estes usuários num conjunto e depois retorne todos os administradores de todos os grupos que esses usuários pertencem a.

OK, todos tem direito de se expressar, mas se eu não mudar de idéia? Se você não tem capacidade para abstrair oque falou continua usando hibernate, mas não menospreze os outros.


pcalcado wrote:
CGLIB faz manipulação de bytecode, não lazy loading. Por favor, conheça a ferramenta antes de criticar.

E o hibernate o usa para fazer o lazy loading, ou seja dá na mesma!

pcalcado wrote:
Se você não tem queries polimórficas como vai ter polimorfismo? Como eu consigo uma consulta que me traga todas as instâncias da classe Usuario e de sas subclasses, segundo o modelo uma-tabela-por-classe ?

Nossa a única forma de fazer isso é assim?????????????????? Você é que precisa conhecer um pouco mais de programação.

pcalcado wrote:
Se você não gosta disso basta criar um wrapper.

Ou criar um framework em cima desse?? Nossa vocês estão parecendo doentes ao falar do hibernate...

pcalcado wrote:
Hibernate é Java então dizer que tudo que se faz com ele se faz 'em java' nao faz sentido. Se você quiser reimplementar o Hibernate -ou um subset dele- em cada projeto esrevendo JDBC boa sorte.

Não estou questinando o hibernate dá um pesquisada no tópico quantas vezes eu disse isso e vai ver, estou apenas questionando a forma que o desenvolvedor recebe ele, ou seja o que tem que ser by hand é realmente simples.

PCalcado, eu sinceramente encerro a discussão sobre qualquer assunto relacionado a hibernate aqui, eu repeti várias vezes que o objetivo não era esse e sequer tenho conhecimento para discutir isso a fundo. Só vou te dizer uma coisa, seus comentários são pejorativos e sinceramente não é postura de alguem que está a frente de uma comunidade, cuidado com isso. Se quiser responder a isso fique a vontade eu sequer vou me dar o trabalho de ler.


Volnei Granado Munhoz

[Email] [MSN]
volnei
JavaEvangelist
[Avatar]

Membro desde: 29/01/2003 11:36:27
Mensagens: 354
Offline

Leonardo3001 wrote:Juro que eu não entendi esse negócio de "reinventar a roda" que o Volnei anda dizendo tanto. É só uma expressão sem sentido pra dizer que determinada criação é ruim, sem usar argumentos sólidos!

Não essa é a expressão mais utilizada quando alguem quer te dizer que não precisa pensar mais nisso, alguem já pensou ou seja, continua sempre da mesma forma.

Leonardo3001 wrote:
O interessante é que, enquanto "reinventar a roda" tem um sentido depreciativo, a palavra "reinventar" sozinha tem um sentido positivo, de rejuvenecimento.. É claro que, para o Volnei, tudo parece que é apenas "reinventar a roda", o que é uma pena. Imagine a época em que foi criado o C para substituir a escrita em Assembly, foi uma reinvenção ou uma reinvenção da roda? E a criação do Java para substituir o C e C++? E a criação dos web frameworks para substituir a escrita direta em Servlets ou CGIs? Tudo isso foi reinvenção da roda?

Nossa você não leu mesmo o tópico, sugiro uma leitura antes de tecer seus comentários.
Primeiro pelo fato de avaliar a expressão "reinventar a roda" e não a palavra reinventar ok?? voce sabe o significado disso não é???

É claro que, para o Volnei, tudo parece que é apenas "reinventar a roda"

Acho que está me confundindo... mais uma vez, leia o tópico antes e se ver que errou tenha coragem de criticar a pessoa certa.

Leonardo3001 wrote:
Ah, mas tem aquele argumento manjado de que Java tem zilhões de frameworks, todos fazendo coisas parecidas entre eles. Mas amigo, o mundo do software livre é assim. Vários desenvolvedores criaram seus frameworks ou suas bibliotecas acreditando ter ideias interessantes pra comunidade. E não dá pra barrá-los dizendo: "Desculpe cara, não dá! Um outro framework faz exatamente o que você faz.". Fosse assim e a liberdade iria pro saco! A comunidade acaba fazendo suas escolhas, claro! Mas ninguém é obrigado a segui-las se achar que fazendo diferente dos demais, vai fazer melhor.

Mas uma vez, se você ler o tópico vai ver que eu estou defendendo essa idéia, a de criar e criar e criar... o fato de já haver algo pronto não significa que não se pode criar algo melhor, pelo menos no meu ponto de vista.

Volnei Granado Munhoz

[Email] [MSN]
volnei
JavaEvangelist
[Avatar]

Membro desde: 29/01/2003 11:36:27
Mensagens: 354
Offline

Olha, pessoal não me levem a mal, mas tenho que desabafar.

1. Se vocês não entenderam o tópico, diga apenas não entendi antes de tirar conclusões precipitadas.
2. Jamais menospreze alguem que você sequer conhece.
3. Leia sempre o tópico inteiro antes de entrar e criticar a pessoa que tem menos mensagens no fórum.
4. Incentivar ou desestimular pode ser confundido quando se usa determinados termos.
5. A melhor maneira de discordar de alguem é expondo e não impondo e sempre com respeito.
6. Esse tópico não tinha intenção de discutir sobre hibernate.

PCalcado, não isso não serve só para você mas honestamente, esperava um pouco mais de um dos líderes de uma comunidade tão importante.

Encerro minha participação neste tópico sem sequer ter discutido o que eu havia proposto, por conta de alguns fanáticos o assunto do tópico foi totalmente desfigurado ao longo das ofensas e tentativas de se retornar ao assunto em pauta. Talvez eu tenha me expressado mal em alguns momentos e confesso que esse não é o meu forte, mas tenho certeza que não faltou empenho em tentar explicar.

Se alguem se sentiu ofendido aqui, peço desde já minhas desculpas.

Um abraço a todos.

Volnei Granado Munhoz

[Email] [MSN]
Leonardo3001
GUJ Ranger

Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline

Talvez seja você que não sabe respeitar a opinião dos outros. Lembre-se:
1. o tópico não é seu;
2. o fato de abri-lo não lhe dá direito de ter poderes sobre os outros;
3. o Calçado é irônico sim, mas suas argumentações (a do Calçado, não a de você, Volnei!) são consistentes e não ficam mudando ao sabor da discussão;
4. eu li todo o tópico sim, afirmar o contrário não é justificativa para invalidar minhas argumentações;
5. não tenho pena de pessoas que se fazem de vítima.

Passar bem.

This message was edited 1 time. Last update was at 17/01/2008 23:53:56


Leonardo Veríssimo
-------------------------------------------------
Objectzilla
[WWW]
volnei
JavaEvangelist
[Avatar]

Membro desde: 29/01/2003 11:36:27
Mensagens: 354
Offline

Leonardo3001 wrote:Talvez seja você que não sabe respeitar a opinião dos outros. Lembre-se:
1. o tópico não é seu;
2. o fato de abri-lo não lhe dá direito de ter poderes sobre os outros;
3. o Calçado é irônico sim, mas suas argumentações (a do Calçado, não a de você, Volnei!) são consistentes e não ficam mudando ao sabor da discussão;
4. eu li todo o tópico sim, afirmar o contrário não é justificativa para invalidar minhas argumentações;
5. não tenho pena de pessoas que se fazem de vítima.

Passar bem.


Respeitar a opinião dos outros?? Leia suas mensagens.... afff

Obrigado, mas isso não muda em nada...
1. Desde quando meu nome está como autor eu acho que ele é meu, direitos autorais?? conhece??
2. Eu reinvindiquei poderes tambem nesse tópico?? Onde?? Você tá vendo demais ou de menos...
3. É segurança dele? Me diga onde o pcalcado disse algo referente ao tópico que foi consistente?
4. Se tivesse lido não tinha dito tanta besteira, ou tinha? Se disse que eu estou errado está tendo inconsistencias e se disse que os que tem opinião diferente da minha estão certos segue inconsistente...
5. Eu tenho pena de você.

This message was edited 2 times. Last update was at 18/01/2008 00:52:22


Volnei Granado Munhoz

[Email] [MSN]
jack_-_ganzha
JavaEvangelist
[Avatar]

Membro desde: 31/03/2003 13:18:12
Mensagens: 315
Localização: Recife - Pernambuco
Offline

volnei wrote:HQL é java? Qual JSR??

Acho que o louds se referia a poder usar anotações (Java) para mapeamento e Criteria API (Java) para realizar consultas. Bom, só com JDBC não tem como escrever apenas código Java, tem?

Mas entendi o ponto do tópico. Minha opinião: tenha bom senso - e bons argumentos - para decidir usar ou não algum framework/abstração.

valeuz...

Marcos Silva Pereira

http://www.javafree.org
http://marcospereira.wordpress.com
[MSN] [ICQ]
maquiavelbona
JWizard
[Avatar]

Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline

volnei wrote:...
HQL é java? Qual JSR??
....

http://java.sun.com/javaee/5/docs/tutorial/doc/bnbtg.html

JSRs:
317: JPA 2.0 -> http://jcp.org/en/jsr/detail?id=317 ( podemos contar a HQL aqui! )
Java Persistence API 2.0 wrote:Section 2: Request

2.1 Please describe the proposed Specification:

The Java Persistence API is the Java API for the management of persistence and object/relational mapping for Java EE and Java SE environments.

The purpose of the Java Persistence 2.0 specification is to augment the Java Persistence API to include further features requested by the community, including additional object/relational mapping functionality and query language capabilities, a criteria-based query API, and standardization of features currently designated as optional, and to align it with related JSRs that are currently in-process and/on in-plan for the Java EE 6 timeframe.

Aspects that should be considered by the Expert Group for inclusion in this work include, but are not limited to, the following:

* Expanded object/relational mapping functionality, including greater flexibility in combining existing mapping options, support for collections of embedded objects, multiple levels of embedded objects, ordered lists, combinations of access types, etc.
* Additions to the Java Persistence query language
* An API for "criteria" queries
* Standardization of sets of "hints" for query configuration and for entity manager configuration
* Standardization of additional metadata to support DDL generation and "Java2DB" mapping
* Expanded pluggability contracts to support efficient passivation and replication of extended persistence contexts in Java EE environments
* Standardization of additional contracts for entity detachment and merge, and persistence context management
* Support for validation

The goal of the Expert Group will be to investigate these issues and identify and pursue directions for enhancement for the overall programming model and facilities of the Java Persistence API.


Até!

This message was edited 1 time. Last update was at 18/01/2008 01:24:07


----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)

"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781)
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team