Como ser um maluco da contra-cultura

Sempre que vejo muita gente (a maioria) fazendo alguma coisa desconfio na hora. Alguns exemplos:

:arrow: 90% da população mundial é religiosa (teista). Eu não sou religioso (teista) (não confundir com ateu, pois sou deista)

:arrow: 80% aprovam Lula. Eu acho que Lula e o PT é o que há de pior em termos de política. Os princípios do PT são os mesmos princípios de Hitler: Um bom fim justifica qualquer meio.

:arrow: Eu nao gosto de Hibernate. http://amplicate.com/hate/hibernate. Por que eu odeio hibernate vai consumir 10 páginas. http://maryniuk.blogspot.com/2009/09/orm-sucks-hibernate-sucks-even-more.html

:arrow: Eu nao gosto de Spring. O pessoal que trabalha no Google também. Vide Guice.

:arrow: Eu nao gosto de Maven. Uma minoria também: http://stackoverflow.com/questions/1163173/why-use-gradle-instead-of-ant-or-maven

:arrow: Eu nao gosto de log4j. Se eu quero logar alguma coisa faço assim: Debug.log(asdf, asdf, asdf, asdf) and that’s it. log4j.properties me irrita.

:arrow: Eu nao gosto de XML e Annotations. Acho que código tem que ser limpo e qualquer tipo de configuração / setup tem que ser feita via configuração programática, independente e separada, com properties externalizadas por ambiente. (vide http://www.mentaframework.org/)

Oi saoj,

90% da população mundial é religiosa (teista). Eu não sou religioso (teista) (não confundir com ateu, pois sou deista)

Fiz uma pesquisa rapida e não consegui entender direito o que é deista,será que você pode explicar… :roll:

A maioria das pessoas que conheço critica as coisas que a maioria das pessoas faz…rs

Os seus dois primeiros exemplos não vou comentar pois, além de quebrar as regras do fórum, costumam partir para o lado emocional mais do que racional.

Acredito que a maioria nem usa Hibernate…Usam JDBC, com statement e nem frequentam o guj…

Acho que o Hibernate está no meio do caminho ainda… Melhor do que escrever queries na mão, mas ainda não alcançou a perfeição.
Mas não quero daqui a 10 anos continuar precisando escrever queries pra acesso…essa parte tem que ficar totalmente transparente uma hora ou outra.

Tem uma boa questão aí: quando o spring surgiu, que opções nós tinhamos?
É quase obrigação criar algo melhor depois que um pioneiro apareceu para dar a cara a tapa.
Já viu todos os pontos fortes e fracos da solução anterior.
(Detalhe: Não trabalhei com o Guice, não posso dizer se é melhor ou não)

Também não gosto de Annotations, mas por enquanto é um mal necessário…

Não vejo onde properties levam vantagem sobre XML. Prefiro o segundo. (Questão de gosto)

Agora o que me fez responder este post, foi seu comentário em outro tópico , sobre como Mavem é muita mágica para você.
Não vejo isso só de você, muitos programadores vivem dizendo que gostam de ter controle sobre o que faz.

Me veio na cabeça um imaginário programador C++ há 10/15 atrás dizendo:
Java? Garbage Collection? Gerenciamento de Memória? Não obrigado, gosto de saber quando as coisas entram e saem da memória…

Ouvi em algum lugar que “Qualquer tecnologia suficientemente avançada é indistiguível da mágica”.

Eu particulamente desejo que mais e mais ferramentas avançadas e mágicas apareçam e facilitem meu trabalho.
Não tenho problema nenhum em concorrer com monkeys.
Se a ferramenta for fácil o bastante para eles fazerem softwares de qualidade, imagina o que eu não farei com elas?

[quote=Anime]Oi saoj,

90% da população mundial é religiosa (teista). Eu não sou religioso (teista) (não confundir com ateu, pois sou deista)

Fiz uma pesquisa rapida e não consegui entender direito o que é deista,será que você pode explicar… :roll:

[/quote]

Deista é aquele que acredita em Deus, porém questiona alguns dogmas, como a revelação divina, ou a criação.
Deistas, na maioria das vezes são pessoas que veem a coisa pelo lado científico, não se conformando apenas com a frase “Porque Deus quis”, porem, acreditam que exista alguma força divina agindo de alguma forma.

Um exemplo seria a criação do universo, tudo veio do Big Bang(cientificamente) porem, e antes do big bang??

Eu vejo uma das primeiras frases da biblia em Genesis que diz “E Deus disse, que se faça a luz, E (Big Bang) a luz se fez”, e penso que o resto foi consequência.

Com relação aos outros pontos, acredito que cada um usa o que é melhor para a sua necessidade, não necessariamente porque muita gente usa é ruim, pode ser bom pra mim, mas ruim pra vc.
Eu já gosto de Hibernate, porem, existem casos em que não vale a pena usa-lo.
Não sou fã do log4j tb.
Gosto da ideia de que o codigo tem que ser limpo, mas acho que annotations são melhores do que XMLs

Há dezenas de excelentes query builders e query helpers. Vou citar dois que eu conheço e gosto: iBatis e MentaBeans.

O Spring tem o mérito de ter popularizado o conceito de IoC. Eu não gosto do Spring porque ele é um monstro controlado por XML. Parece que agora, depois do sucesso do Guice, o pessoal do Spring resolveu lançar o tal do JavaConfig, que é o Spring con configuração programática.

Para configuração estática, usar XML é um overkill. Não faz qualquer sentido.

O problema é que XML é usado pra tudo. Desde build.xml até app-context.xml. Péssimo !!!

Annotation é um pouco melhor, mas ainda é markup. A solução é configuração independente e separada por código.

Abstrair complexidade com algo tão ou mais complexo é loucura.

Nesse caso a mágica foi perfeita !!! Abstraiu totalmente essa complexidade SEM INTRODUZIR NENHUMA OUTRA.

No caso do Hibernate abstrai-se a complexidade do banco-de-dados, introduzindo outra. Claro que muitos dirão que vale a pena pagar esse preço para ter uma coisa mais OO.

Boa observação. Tenho que concordar com vc. Se a coisa for bem-feita e realmente abstrair a complexidade então todo mundo sai ganhando. O que eu não gosto é trocar uma complexidade por outra. Quando vc muda de assembly para Java, vc claramente está trocando uma complexidade por outra MUITO MENOR. Mesma coisa com memory management.

A questão do Maven é igual a questão do Maker. Troca-se complexidade por mágica. O problema é que a coisa fica totalmente engessada. Eu acho que FLEXIBILIDADE é fundamental.

No caso de Garbage Collection, vc não precisa de flexibilidade para memória. Isso só foi possível porque memória virou algo abundante, então usa-se sem qualquer preocupação.

Obrigada saoj e Hildebrando Pedroni, entendi…

Nossa, quanto ódio no coração! rsrssrrsrs

Relaxa bro. Tá muito tenso. Num gosta? Esquece!

[quote=saoj]Sempre que vejo muita gente (a maioria) fazendo alguma coisa desconfio na hora. Alguns exemplos:
:arrow: 80% aprovam Lula. Eu acho que Lula e o PT é o que há de pior em termos de política. Os princípios do PT são os mesmos princípios de Hitler: Um bom fim justifica qualquer meio.
[/quote]
Assino em baixo.

O problema é que as pessoas que utilizam o Hibernate acham que ele é e tem solução para todos os problemas no que se refere a persistência e acesso os BD…
iBatis é uma ótima opção

Vejo que o Spring nasceu, cresceu e virou um “monstro”…

Acho um lixo, totalmente dispensável… plugins + plugins + plugins para fazer um build… (rs)

Deste eu não abro mão log4j … THE BEST!!!

O problema é abusam das Annotations utilizando-as de forma errada e indiscriminada.
XML como arquivo de configuração ainda passa, mas um simples arquivo de properties vai melhor.

[quote=saoj]Sempre que vejo muita gente (a maioria) fazendo alguma coisa desconfio na hora. Alguns exemplos:

:arrow: 90% da população mundial é religiosa (teista). Eu não sou religioso (teista) (não confundir com ateu, pois sou deista)
[/quote]
+1, eu costumo chama-lo de “O Todo”, mas vamos deixar isto para outra hora :wink:

+100

Neste caso tenho que admitir que estou na correnteza junto com a maioria, e nunca fui atraz de outra coisa para subtitui-lo.
Mas agora, estudando scala, estou vendo que existe um mundo la fora, com coisas bem legais e simples :smiley:

What is Spring? Seria primavera? Não sei dizer nada, pois nunca usei, acreditem.

Em Scala os caras criaram o Simple Build Tool(SBT), suporta projetos misto Java/Scala, não sei se daria para usa-lo em projetos puramente java. Nele toda a configuração é feita programaticamente, em Scala.

Parece que o pessoal de Scala tem essa mentalidade, vide SBT, e tambem o framework web Lift onde as config tambem são feitas programaticamente em Scala, num arquivo chamado Boot.scala.
Sobre annotations, eu não acho ruim uma anotaçãozinha aqui outra acola, mas ver um Entity anotado com Named Queries e tudo mais, realmente é muito poluido.

na real a politica em si é um MERDA BEM GRANDE e SEMPRE SERÁ …

odeio todos esse porras safados,eu conheço pq ja trabalhei la dentro e sei como que é…e são msm!!!

abrxx

[quote=saoj]Sempre que vejo muita gente (a maioria) fazendo alguma coisa desconfio na hora. Alguns exemplos:

:arrow: 90% da população mundial é religiosa (teista). Eu não sou religioso (teista) (não confundir com ateu, pois sou deista)
[/quote]

Sim, eu sou ateu.

Acho que esse molusco deve voltar para o mar e parar de atrapalhar o desenvolvimento do pais.

[quote=saoj]
:arrow: Eu nao gosto de Hibernate. http://amplicate.com/hate/hibernate. Por que eu odeio hibernate vai consumir 10 páginas. http://maryniuk.blogspot.com/2009/09/orm-sucks-hibernate-sucks-even-more.html [/quote]

Sonho todo o dia com algo melhor :smiley:

[quote=saoj]
:arrow: Eu nao gosto de Spring. O pessoal que trabalha no Google também. Vide Guice.[/quote]
Eu mechi pouco no Spring, na epoca não havia annotations, mas configurar aquele caminhão de XML é uma droga

Eu curto o maven, mas achei o Gradle interessante, só queria saber se ele gera JNLP, não achei nada disso.

Sempre uso a API padrão

Também acho que XML e Annotations, se tornaram mais lixo que ajuda, o pessoal estrapola, mas em muitos casos é muito util, principalmente annotations, mas sem exagero, quando posso optar por uma solução mais programada, prefiro.

Eu uso o MentaBean, que é um query helper para quem gosta e sabe escrever SQL. Veja o exemplo abaixo:

   public List<Performance> loadMine(int user_id) throws Exception {
    	
    	Connection conn = getConn();
    	
    	PreparedStatement stmt = null;
    	ResultSet rset = null;
    	
    	try {
    		
    		StringBuilder query = new StringBuilder(512);
    		
    		query.append("select ").append(session.buildSelect(Performance.class, "p"));
    		
    		query.append(", ").append(session.buildSelect(User.class, "u"));
    		
    		query.append(" from performances p, users u");
    		
    		query.append(" where p.user_id = ? and p.status in (?,?,?,?)");
    		
    		query.append(" and p.user_id = u.id order by p.since");
    		
    		stmt = conn.prepareStatement(query.toString());
    		
    		int index = 1;
    		
    		stmt.setInt(index++, user_id);
    		stmt.setInt(index++, Status.ASSIGNED);
    		stmt.setInt(index++, Status.RE_ASSIGNED);
    		stmt.setInt(index++, Status.BEING_REVIEWED);
    		stmt.setInt(index++, Status.ESCALATED);
    		
    		rset = stmt.executeQuery();
    		
    		List<Performance> list = new LinkedList<Performance>();
    		
    		while(rset.next()) {
    			
    			Performance p = new Performance();
    			
    			session.populateBean(rset, p, "p");
    			
    			User u = new User();
    			
    			session.populateBean(rset, u, "u");
    			
    			p.setUser(u);
    			
    			list.add(p);
    		}
    		
    		return list;
    		
    	} finally {
    		
    		close(rset, stmt);

    	}
    }

Eu, há 5 anos atrás, fui chamado de maluco, mas agora até o Spring partiu para configuração programática. :expressionless:

Mais informações: http://forum.mentaframework.org/posts/list/2401.page

[quote=saoj][quote=“Private Messsage”]
vi que você não é fã do Hibernate, e nisso concordamos, gostaria de saber se você usa algum outro tipo de framework de persistencia.
[/quote]

Eu uso o MentaBean, que é um query helper para quem gosta e sabe escrever SQL. Veja o exemplo abaixo:

[code]
public List loadMine(int user_id) throws Exception {

	Connection conn = getConn();
	
	PreparedStatement stmt = null;
	ResultSet rset = null;
	
	try {
		
		StringBuilder query = new StringBuilder(512);
		
		query.append("select ").append(session.buildSelect(Performance.class, "p"));
		
		query.append(", ").append(session.buildSelect(User.class, "u"));
		
		query.append(" from performances p, users u");
		
		query.append(" where p.user_id = ? and p.status in (?,?,?,?)");
		
		query.append(" and p.user_id = u.id order by p.since");
		
		stmt = conn.prepareStatement(query.toString());
		
		int index = 1;
		
		stmt.setInt(index++, user_id);
		stmt.setInt(index++, Status.ASSIGNED);
		stmt.setInt(index++, Status.RE_ASSIGNED);
		stmt.setInt(index++, Status.BEING_REVIEWED);
		stmt.setInt(index++, Status.ESCALATED);
		
		rset = stmt.executeQuery();
		
		List<Performance> list = new LinkedList<Performance>();
		
		while(rset.next()) {
			
			Performance p = new Performance();
			
			session.populateBean(rset, p, "p");
			
			User u = new User();
			
			session.populateBean(rset, u, "u");
			
			p.setUser(u);
			
			list.add(p);
		}
		
		return list;
		
	} finally {
		
		close(rset, stmt);

	}
}

[/code][/quote]

Só pra ressaltar, que a mensagem privada foi minha :D.

esse seu modo de usar essas queries dinâmicas, não torna muito especifico? No seu where, vc tem campos fixos (pode ser só pelo exemplo, mas me chamou atenção).

Não acho que o JPA seja algo assim tão bom, por que aquele amontoado de anotação as vezes mais confunde e dificulta. Eu penso em algo mais KISS e DRY, o nome do Field ter algum padrão pra identificar o nome da coluna algo como numeroCPF ser o campo numero_cpf, por ai vai, até estruturei algo assim, mas não dei continuidade.

Sem falar que o Hibernate não é flexivel, não existe uma maneira de usa-lo por exemplo num NOSQL, a não ser que crie um driver JDBC que converta SQL em queries que o Banco NoSQL entenda. Algo muito chato e inapropriado…

Se mudar o nome do campo no banco-de-dados vc vai ter que mudar na query. Poderia ter até alguma coisa para te retornar o campo do banco para o campo do objeto…

Qual é a sua preocupação? Refactoring do nome do campo no DB?

[quote=saoj][quote]
esse seu modo de usar essas queries dinâmicas, não torna muito especifico? No seu where, vc tem campos fixos (pode ser só pelo exemplo, mas me chamou atenção).
[/quote]

Se mudar o nome do campo no banco-de-dados vc vai ter que mudar na query. Poderia ter até alguma coisa para te retornar o campo do banco para o campo do objeto…

Qual é a sua preocupação? Refactoring do nome do campo no DB?[/quote]

Dependo a quantidade de queries parametrizadas que você tem o refactoring é pesado para ser feito somente em tempo de execução, para saber quais consultas quebram com alteração no banco. Também é possivel corrigir com um Teste Unitário como faço pro Hibernate, definindo os tipos das colunas dos objetos já que ele não consegue converter.

mas não vejo vantagem sobre usar Queries SQL nativas dessa forma, acho muito pouco OO. E normalmente é mais propenso a erros de digitação.

[quote=saoj][quote]
Parece que o pessoal de Scala tem essa mentalidade, vide SBT, e tambem o framework web Lift onde as config tambem são feitas programaticamente em Scala, num arquivo chamado Boot.scala.
Sobre annotations, eu não acho ruim uma anotaçãozinha aqui outra acola, mas ver um Entity anotado com Named Queries e tudo mais, realmente é muito poluido.
[/quote]

Eu, há 5 anos atrás, fui chamado de maluco, mas agora até o Spring partiu para configuração programática. :expressionless:

Mais informações: http://forum.mentaframework.org/posts/list/2401.page[/quote]

heuheueheueheu saoj sempre aproveitando pra fazer Marketing do Menta…

Cara, não se preocupe, você não é o único, eu mesmo já me imaginei sendo um lunático… Aprendi Hibernate por pressão e Spring também… Gosto de anotações (pelo menos prefiro ao XML) e até agora não enxerguei a vantagem de usar o Maven… Ah… e assim que sobrar um tempo vou dar uma olhada no Menta…

Abs :wink:

Gosto muito do JDBC, tanto que desenvolvemos classes para facilitar o trabalho. Não estou nem aí se fazer queries é pouco “OO”, acredito que o poder que tenho assim é muito maior que o que pode ser feito pelo Hibernate.

Também não gosto de XML para configurações, acho um saco ficar mexendo naquilo.

Inté.

[quote=marciosantri]Gosto muito do JDBC, tanto que desenvolvemos classes para facilitar o trabalho. Não estou nem aí se fazer queries é pouco “OO”, acredito que o poder que tenho assim é muito maior que o que pode ser feito pelo Hibernate.

[/quote]

++ :wink: