Confessionário: bizarrices que você cometeu e sempre escondeu mas agora teve coragem de contar

[quote=windsofhell][quote=raf4ever][quote=almircampos]Interessante… 111 visualizações, mas apenas 3 casos e meio… :smiley:
Dá a impressão de que tem mais gente querendo ver as bizarrices dos outros do que contar as próprias.
[/quote]

Ta todo mundo com medo de confessar seus ‘podres’ :smiley: :smiley: :smiley: [/quote]

Eu diria eh que o povo nem tem desconfia que fez alguma bizarrice. :slight_smile:

//Daniel[/quote]

Esse comentário do Daniel é assustador!!! Talvez os outros lendo as nossas, reconheçam a suas, nelas. :wink:

[quote=asaudate][quote=Luiz Augusto Prado]
Outro podre…
Eu acho Hibernate uma merda.

[/quote]

O saoj também. Quais os seus motivos?[/quote]

Eu sei, eu e ele até já trocamos umas idéias sobre aqui:

1 - Gosto do SQL (DAO com JDBC)
2 - Prefiro eu mesmo montar os meus Objetos
3 - Acho a forma dele mapear os objetos estranhas. Tando em XML como nas anotations
4 - Eu usei o Link to SQL e achei muito legal. Me viciei nele. Certamente que por ele parecer mais com o SQL tenho essa opinião quando comparo com o Hibernete.

5 - Essa é especial:
Isso aconteceu a uns 3 anos. Sabe quando vc tem uma tabela com autorelacionamentos? Era para um Grafo, mas nesse caso eu tinha que pegar o grafo só até uma determinada profundidade: 3. Na época não consegui fazer funcionar de forma nenhuma. Se vc colocava em modo lazy, ele só pegava o primeiro nivel. Se eu utilizava EAGER ele travava. Acho que entrava em loop infinito.
Acabei usando o HQL. HUahuahua…
Como vcs fariam isso?

Me parece com algum bug… esse auto-relacionamento era um pra um ou um pra muitos? Faz sentido que ele trave com eager, mas não com lazy. Eu mesmo já tive essa necessidade uma vez e foi tranquilo.

[quote=Luiz Augusto Prado][quote=asaudate][quote=Luiz Augusto Prado]
Outro podre…
Eu acho Hibernate uma merda.

[/quote]

O saoj também. Quais os seus motivos?[/quote]

Eu sei, eu e ele até já trocamos umas idéias sobre aqui:

1 - Gosto do SQL (DAO com JDBC)
2 - Prefiro eu mesmo montar os meus Objetos
3 - Acho a forma dele mapear os objetos estranhas. Tando em XML como nas anotations
4 - Eu usei o Link to SQL e achei muito legal. Me viciei nele. Certamente que por ele parecer mais com o SQL tenho essa opinião quando comparo com o Hibernete.

5 - Essa é especial:
Isso aconteceu a uns 3 anos. Sabe quando vc tem uma tabela com autorelacionamentos? Era para um Grafo, mas nesse caso eu tinha que pegar o grafo só até uma determinada profundidade: 3. Na época não consegui fazer funcionar de forma nenhuma. Se vc colocava em modo lazy, ele só pegava o primeiro nivel. Se eu utilizava EAGER ele travava. Acho que entrava em loop infinito.
Acabei usando o HQL. HUahuahua…
Como vcs fariam isso?
[/quote]

Luiz Augusto Prado, juro que não fui procurar =)

http://www.infoq.com/br/news/2012/08/praticas-ineficazes

na época eu ainda programava em php+joomla

tinha um componente joomla que mostrava uma imagem que não devia aparecer, a solução seria alterar o css do componente, mas por muita pressa/falta de conhecimento, coloquei um javascript(puro) que dava display:none nessa imagem rs, então coloquei o javascript no final da página kkkkkkkkkkk,

se o usuário tivesse uma vista muito apurada, ele via a imagem sumindo depois que a página carregasse.

ahh, lembrei, era um projeto freela, ainda coloquei um comentario acima do script kkkkkkkkk, muito tenso…

acho que ganhei no teor de bizarrice

[quote=asaudate]Luiz Augusto Prado, juro que não fui procurar =)

http://www.infoq.com/br/news/2012/08/praticas-ineficazes

[quote]
Oliver condena, ainda, a utilização de interações nativas com bancos de dados, ao invés de se usufruir de soluções de mapeamento objeto-relacional já existentes. Para ele, não vale a pena perder todos os benefícios trazidos por uma solução desse tipo.
[/quote][/quote]O autor do livro Pro JPA 2 também defende a mesma teoria. [=

Eu prefiro crer em algum erro de utilização do que um real problema da ferramenta. [=

[quote=asaudate][quote=Luiz Augusto Prado]
5 - Essa é especial:
Isso aconteceu a uns 3 anos. Sabe quando vc tem uma tabela com autorelacionamentos? Era para um Grafo, mas nesse caso eu tinha que pegar o grafo só até uma determinada profundidade: 3. Na época não consegui fazer funcionar de forma nenhuma. Se vc colocava em modo lazy, ele só pegava o primeiro nivel. Se eu utilizava EAGER ele travava. Acho que entrava em loop infinito.
Acabei usando o HQL. HUahuahua…
Como vcs fariam isso?
[/quote]

Me parece com algum bug… esse auto-relacionamento era um pra um ou um pra muitos? Faz sentido que ele trave com eager, mas não com lazy. Eu mesmo já tive essa necessidade uma vez e foi tranquilo. [/quote]

No lazy não dava problema, mas também não pegava os nós filhos, que era os que eu precisava.

Valeu asaudate…
Ainda trabalho com hibernate, mas nos meus projetos pessoais e prefiro deixa-lo de lado para ir melhorando meu ORM.
Sabe como é filho… Filho todo pai acha bonito, por mais feio que ele seja para os outros. :lol: :lol: :lol:

FOR UPDATE…

Estava louco com um trecho de código que não funcionava, debugava e a princípio tudo certo! Claro que eu estava com uma tabela em lock no PL…

[quote=douglaskd]na época eu ainda programava em php+joomla

tinha um componente joomla que mostrava uma imagem que não devia aparecer, a solução seria alterar o css do componente, mas por muita pressa/falta de conhecimento, coloquei um javascript(puro) que dava display:none nessa imagem rs, então coloquei o javascript no final da página kkkkkkkkkkk,

se o usuário tivesse uma vista muito apurada, ele via a imagem sumindo depois que a página carregasse.

ahh, lembrei, era um projeto freela, ainda coloquei um comentario acima do script kkkkkkkkk, muito tenso…

acho que ganhei no teor de bizarrice[/quote]

Cara, tá muito bem cotado!!! kkkkkkkk 8)

Se eu botar no confessionário que já encontrei código com trechos da bíblia publicados, eu irei queimar no mármore do inferno?

Não vale código dos outros, né? Mas caramba… essa eu quero ver! Hhasoauishaishauishas

Promete que não vai contar os meus podres que tá tudo certo!!! Hahahahahahaha!!

A maior que eu me lembro foi tentando, de madrugada, fazer um relatorio de fechamento mensal bater com o valor correto para ser divulgado no dia seguinte.

O meu ultimo dialogo com o usuario antes de finalmente conseguir fazer com que o relatorio mostrasse o valor correto foi:

“Quanto tem que dar?”

[quote=YvGa]A maior que eu me lembro foi tentando, de madrugada, fazer um relatorio de fechamento mensal bater com o valor correto para ser divulgado no dia seguinte.

O meu ultimo dialogo com o usuario antes de finalmente conseguir fazer com que o relatorio mostrasse o valor correto foi:

“Quanto tem que dar?”[/quote]

Cara… kkkk… pela pergunta a gente imagina o resto… kkkkkkkk…

KKKKKKKKKKKKK

(rindo à-tôa)

Eu duvido que vc queira mexer nesse troço :smiley: :smiley: :smiley:

Bom, não estou lembrando agora, mas já encontrei função em Java Script com nome bizarros (feito por freelancer):

  function telekinesis(){
						        tbl = document.getElementById("cLumFilterTable");
						        var novaLinha = tbl.insertRow(3);
						        var cell1=novaLinha.insertCell(0);
								cell1.className="cLumLabelTd";
						        cell1.innerHTML = document.getElementById("td1").innerHTML;
								var cell2=novaLinha.insertCell(1);
								var cell3=novaLinha.insertCell(2);
								cell3.innerHTML = document.getElementById("td3").innerHTML;
						        document.getElementById("parentTempTable").style.display="";
						        var div = document.getElementById("parentTempTable");
						        var tempTable = document.getElementById("tempTable");
						        div.removeChild(tempTable);
						    }
						    telekinesis();

[quote=raf4ever][quote=adriano_si]
Pelo menos fui “perdoado” pela equipe… Por ironia do destino estou voltando para esse projeto e fiquei sabendo que ninguém mexeu no monstro… Ou seja, estou tendo a chance de me redimir… :stuck_out_tongue:
[/quote]

Eu duvido que vc queira mexer nesse troço :smiley: :smiley: :smiley: [/quote]Pois é…

Sabe aquela coisa que você não fez que ficou te incomodando ??? Pois é… Essa é uma delas… Se bem que eu já ouvi de alguns que tem tanta regra nova pra implementar “pra ontem” que talvez acabe ficando pro fim da fila mesmo… rsrs :wink:

Abs[]

A que vou contar agora, fui buscar no fundo do baú…

No início dos anos 90, trabalhei num projeto onde coordenei o desenvolvimento de 11 sistemas integrados, na plataforma Unix V, utilizando um computador da brasileira Sisco (não confundam com a Cisco). Na época eu não sabia nada de Unix. Então, tivemos um treinamento rápido e depois caimos em campo. Bem, além de coordenar, eu também desenvolvia e fazia o papel de suporte operando o UNIX. Vocês podem imaginar o quando liguei para o suporte da Sisco para pegar informações ou - pior - para reverter as bobagens que eu fazia. Liguei tanto, que já conhecia o pessoal pelo nome e eles também me conheciam pelo nome!

Resumo da história: num dos atendimentos o técnico e eu acabamos conversando sobre assuntos gerais e acabei descobrindo que eles tinham um ranking interno relativo aos usuários que faziam as maiores bizarrices no mês. Descobri, por fim, que em mais de uma ocasião eu fui agraciado com o primeiro lugar, o que me dava direito ao Trofeu A.N.T.A., onde tão singela sigla significava “Analista Notório em Tecnologia Avançada”!!!

Ou seja, minha premiação não foi uma bizarrice específica, mas pelo “conjunto da obra”, digamos assim. :lol:

Bom… o post nem é tão velho, vou comentar porque me diverti com a minha bizarrice.

A minha é recente, foi semana passada. Vamos lah…

Eu tinha criado um relatório pelo iReport e tinha configurado o dataset com uma determinada SQL. Funcionou de boa mas depois que inclui um parametro ($p{variavel}) nessa SQL começou a dar pau… ao criar o preview o iReport vomitava um monte de stacktrace que eu não consegui identificar o erro na SQL, simplesmente dava SQLExecption e ponto final!.

Copiei a SQL que constava no stacktrace e rodei direto no pgAdmim e realmente não rodou, a explicação do erro não era claro. Eu examinava a SQL umas trocentas vezes e não via erro de sintaxe.
Como eu tinha essa mesma SQL em outro lugar, copiei as duas e coloquei num editor de texto, uma em cada linha e ia comparando caracter por caracter (na esperança de que fosse uma virgula no lugar de um ponto)… nada! As duas eram idênticas mas só uma funcionava! Passei um MD5 nas duas e o hash dava diferente… ai fiquei com raiva… criei um metodo em Java para comparar o número do char:

[code]public class ComparaString {
public static void main (String[] args){
String phraseOne = “SELECT l.id AS id_locacao, r.id AS id_receber, c.id AS id_cliente, l.data_fim, r.id AS id_receber, r.valor, r.pago_em, r.juros, r.id_extrato, r.pro_rata, r.pro_rata, c.nome || ’ ’ || c.sobrenome AS nome_completo_cliente FROM a_receber r INNER JOIN locacao l ON l.id = r.id_locacao INNER JOIN cliente c ON c.id = l.id_cliente WHERE TO_DATE((TRIM(TO_CHAR(DATE_PART(‘year’, l.data_fim), ‘9999’)) || ‘-’ || TRIM(TO_CHAR(DATE_PART(‘month’, l.data_fim), ‘99’)) || ‘-01’), ‘yyyy-mm-dd’) = TO_DATE(‘2013’||’-’||‘01’||’-01’, ‘yyyy-mm-dd’) AND DATE_PART(‘day’, l.data_fim) = 15”;
String phraseTwo = “SELECT l.id AS id_locacao, r.id AS id_receber, c.id AS id_cliente, l.data_fim, r.id AS id_receber, r.valor, r.pago_em, r.juros, r.id_extrato, r.pro_rata, r.pro_rata, c.nome || ’ ’ || c.sobrenome AS nome_completo_cliente FROM a_receber r INNER JOIN locacao l ON l.id = r.id_locacao INNER JOIN cliente c ON c.id = l.id_cliente WHERE TO_DATE((TRIM(TO_CHAR(DATE_PART(‘year’, l.data_fim), ‘9999’)) || ‘-’ || TRIM(TO_CHAR(DATE_PART(‘month’, l.data_fim), ‘99’)) || ‘-01’), ‘yyyy-mm-dd’) = TO_DATE(‘2013’||’-’||‘01’||’-01’, ‘yyyy-mm-dd’) AND DATE_PART(‘day’, l.data_fim) = 15”;

    char[] phraseOneChars = phraseOne.toCharArray();
    char[] phraseTwoChars = phraseTwo.toCharArray();
    
    System.out.println("Tamanho da primeira string:"+phraseOneChars.length);
    System.out.println("Tamanho da segunda string:"+phraseTwoChars.length);
    
    System.out.println("Sao iguais?:"+phraseOne.equals(phraseTwo));
    
    for (int i = 0; i<phraseOneChars.length; i++){
        if (phraseOneChars[i] != phraseTwoChars[i]){
            System.out.println("('"+phraseOneChars[i]+"'<>'"+phraseTwoChars[i]+"')");
            System.out.println((int)phraseOneChars[i]);
            System.out.println((int)phraseTwoChars[i]);
            break;
        }
        else{
            System.out.print(phraseOneChars[i]);
        }
    }
}

}
[/code]

Dessa forma eu constatei que havia um caracter no meio da SQL que não batia com a outra… visualmente as duas SQLs eram identicas mas na SQL que funcionava tinha um char[32] (space na tabela ASCII) e na SQL que dava erro tinha um char[160] (caracter não representável, ou seja, um espaço idêntico!).

Não vale código dos outros, né? Mas caramba… essa eu quero ver! Hhasoauishaishauishas[/quote]

Para código dos outros tem esse outro tópico de 62 páginas:

Eu me lembro que erroneamente usei variáveis estáticas em C# para fazer um cache. Mas não me lembrava que na empresa onde eu trabalhava, usavam um webfarm e cada servidor teria seu próprio conjunto de statics…
Isso reforçou ainda mais minha teoria de que statics são coisas do mal e em 99% dos casos levam a problemas…

Aliás, a maior parte dos memory leaks que já detectei em códigos meus, também vieram de statics.