Tuesday, October 20, 2009

Cuidado: O trim de vazio nao é vazio

Bem, pelo menos no caso do Oracle trim de vazio nao é vazio mas sim Nulo. Ok, comecei pela conclusao, entao vamos para a historia completa.

Estava eu depurando uma procedure no oracle e cheguei a conclusao que um dos sub-selects nao retornava nada e a partir dai a proc começava a perder o rumo das coisas. O select era algo bem simples:

Select campoA, campoB from Tabela where trim(campoC) = trim(parametro);

Como esse sistema veio de uma base legada temos varios campos cujo valor é ' ', ou seja, espaços em branco, por isso a proc precisa desse trim. O que estava acontecendo é que o select citado acima nao estava retornando valor nenhum. Verifiquei o valor do parametro passado e descobrir que era vazio ou ''. Lembre-se que vazio é diferente de nulo e diferente de zero. Como sabia que a tabela possui valores vazios no campo pesquisado, comecei a investigar. Eis os passos até a conclusão que decora o titulo desse post.

Primeiro eu rodei a seguinte query:

select 1 as result from dual --> retorna 1

select 1 as result from dual where trim('abc') = trim('abc')--> retorna 1

select 1 as result from dual where trim('abc') = trim('def')--> nao retorna nada

select 1 as result from dual where trim('') = trim('') --> nao retorna nada, ou seja, o where é falso

select 1 as result from dual where trim(' ') = trim(' ') --> nao retorna nada tambem, ou seja, o where é falso também. O que é estranho pois temos a mesma expressão dos dois lados do =.

Depois de pensar um pouco fiz o seguinte teste (depois de analisar algumas queries com length):

select 1 as result from dual where trim('') is null--> retorna 1

Aeeee entao descobri que o trim de vazio nao é vazio mas sim nulo! Entao o problema é quando o parametro passado é um valor vazio. Para valores nao vazios a query funciona mas quando quero comparar vazios, o select nao vai encontrar.

Para resolver esse problema acabei fazendo a query da seguinte forma, usando a funcao nvl:

select 1 as result from dual where nvl(trim(campo), ' ') = nvl(trim(parametro), ' ')

Explicacao: nvl é uma funcao que verifica se o primeiro parametro é nulo , se for a funcao retorna o segundo parametro. No meu caso eu verifico o trim do campo, se for nulo ele retorna um 1 espaco em branco. O mesmo é feito do outro lado do =, se ele vier vazio , o trim do vazio é nulo entao o nvl substitui por ' '. Se os dois forem espaco em branco, entao ' ' = ' ' , e o valor é retornado na query. Se os valores do campo e parametro forem diferentes de vazio, a query se comporta da mesma como se não tivesse o nvl.

Eis minha dica de hoje, que pode poupar algumas horas de debug na sua query. Talvez possa até haver uma maneira melhor de resolver esse problema, se houver , postem um comentário.

Have fun!

Thursday, October 1, 2009

Programação para iniciantes na MSDN

Ola Pessoal,

Recentemente eu li uma noticia muito interessante. A MSDN esta com um site muito legal com conteudo voltado para quem esta comecando no mundo da programação. Mas comecando mesmo, nunca programou , zero, nada, não sabe o que são variáveis , loops. Andei dando uma lida e olhada nesse material e está realmente muito bom. Infelizmente o site em inglês tem mais videos e conteúdo, mas o site em português tem alguma coisa também.

Vai ai uma dica : veja o conteudo do cantinho das crianças (kids corner), porque ele trás um bom nivelamento de conceitos basicos relacionados a computação. De infantil não tem nada.

Se você está interessando em iniciar no maravilhoso mundo do desenvolvimento de software este é um bom ponto de entrada. Welcome aboard : eu entrei nesse barco há quase 10 anos e não quero sair de jeito por nada! :)

Link:



É a Microsoft preparando a nova geracao de desenvolvedores a dar saltos ainda mais altos.

Have Fun!

Thursday, June 4, 2009

Palestra no Iowa Code Camp 2009 - Cedar Rapids, IA

Olá amigos,

No ultimo dia 2 de Maio eu palestrei no evento chamado Iowa Code Camp 2009 no Kirkwood College em Cedar Rapids, Iowa. O evento é organizado pelos grupos de usuários da regiao visando o publico acadêmico, proporcionando para quem está estudando na faculdade um encontro com a prática do dia a dia do mercado de trabalho, além de trazer por tabela quem já trabalha e quer ver as novidades. Todas as palestras foram 100% hands-on (low slides) e tivemos alguns foruns de discussao, uma sala onde o pessoal puxa um assunto e todo mundo começa a dar a sua opiniao. Uma atividade interessante que nao rolou por falta de tempo foi a que os inscritos trouxessem seus notebooks e tirassem duvidas sobre os seus trabalhos com uma banca formada pelos palestrantes. Fica ai a idéia para futuras reunioes/eventos de grupos (por favor, copie essa idéia).


A organização do evento foi simplesmente impecável, com café da manha, almoço, lanche, refri e agua liberada para TODOS. Foram 5 tracks de palestras simultaneas durante todo o sábado. No final sorteio com direito a Xbox, Zune, iPod, etc. Eu , como sempre, nao ganhei nada! Na verdade o que acontece é o seguinte, todos os que ficam ao meu redor ganham menos eu. Sempre foi assim. Mas um dia a minha vez vai chegar e vou ganhar meu Xbox no sorteio.


Minha palestra foi sobre Desenvolvendo asp.net web parts, onde mostrei todos os controles da aba de web parts, as zones, os editor, tudo. Foi uma experiencia maravilhosa poder palestrar pela primeira vez em outro pais, outro idioma, mesm já dando aula na faculdade aqui há 1 ano. O desafio foi grande mas já estou pronto para a proxima.


Meu forte agradecimento ao Chris Sutton, Greg, Tim Barcz e a toda a galera do Crineta (Cedar Rapids User Group) pela força e incentivo e também ao Tulio, Thomaz, Jorge e Rafael (brazucas que foram dar uma força lá para o conterrâneo) :).


Fica ai algumas fotos do evento:







Have Fun!

Wednesday, April 1, 2009

Videos da MIX 09

Olá pessoal,

Aconteceu recentemente aqui nos eua, a conferencia MIX 09 da Microsoft, que tem por objetivo apresentar tudo que há de mais novo e inovador quando pensamos em aplicaçoes para WEB. Web é o tema principal deste evento, que a cada ano tem sido um show a parte, atraindo tantos conferencistas quanto outros eventos já consagrados como Tech ed e PDC. Felizmente, para aqueles que nao puderam comparecer foi disponibilizado um link com todos os videos das sessões. Destaque para os videos sobre ASP.NET 4.0, Silverlight 3 e .NET RIA Services.


http://videos.visitmix.com/MIX09

Have Fun!

Tuesday, March 3, 2009

Para onde a tecnologia está nos levando

O ano era 2003. Eu fui ao primeiro TTT (Train the trainers) da Microsoft. Esse era evento fechado para um grupo de pessoas que estavam comprometidas a trabalhar com a comunidade para divulgar e introduzir a plataforma .NET tanto para o mercado quanto para o mundo acadêmico. Naquela época eu havia recé, criado uma célula de estudos para a plataforma .NET na Unicarioca (www.unicarioca.br), faculdade onde estudei e agora estava lecionando algumas disciplinas. Para quem nao sabe lecionar é uma das minhas grandes paixões.

Enfim, durante esse evento nós assistimos uma série de videos "Futuristicos" do que a plataforma .NET seria capaz de fazer num futuro próximo. Assumo que quando acabei de assistir o vídeo do Zoo (para quem lembra) eu fiquei em choque por alguns minutos. São nesses momentos que voce reconhece que voce realmente está na área certa.

Navegando na internet acabei descobrindo outro desses videos inpiracionais recém produzidos pela microsoft. Esse video mostra aonde estaremos em 2019. Embora o video nao passe de uma ficção ou de uma projeção eu me sinto muito motivado e desafiado a participar desse momento da história, me sinto impulsionado a colaborar de alguma forma para que ele ou boa parte dele se torne realidade. Se eu assistir novamente o video que vi em 2003 já nao vou me surpreender tanto assim, pois muito do que parecia mera ficção , de uma foram ou de outra já virou realidade.

Deleite-se com as visões do futuro:

<a href="http://video.msn.com/?mkt=en-GB&playlist=videoByUuids:uuids:a517b260-bb6b-48b9-87ac-8e2743a28ec5&showPlaylist=true&from=msnvideo" target="_new" title="Future Vision Montage">Video: Future Vision Montage</a>

Have fun!

Friday, January 23, 2009

Destravando a virtual machine do Visual Studio 2010 CTP

Ano novo, vida nova , Visual Studio novo também. Começei a dar uma olhada e a testar as novas funcionalidades do Visual Studio 2010 CTP. Estou bastante animado com as novidades na área de testes manuais (ou web) e das novidades no TFS. Confesso que quando li a primeira vez sobre o Visual Studio 2010 pouco depois do lançamento do VS 2008 , fiquei um pouco chateado e pensando: caramba acabaram de lançar o 2008 e ja estao anunciando o que vem no 2010. Porém quando começei a ver os videos sobre o que virá no 2010, passei a pensar: caramba ainda falta muito tempo (nem um ano vai) até a versao final, e eu estou precisando usar isso e isso e isso. Acho que essa é a grande diferença desta versao 2010: muitas coisas realmente úteis, que sentimos falta. Desta vez eles fizeram um grande trabalho de ouvir os feedbacks da comunidade.

Bem esse blog nao é sobre o que tem no Visual Studio, mas como voce poderá fazer para testá-lo. A microsoft disponibilizou a versão CTP do Visual Studio 2010 na forma de download de uma Virtual Machine. O problema é que essa virtual machine está configurada para nao funcionar mais a partir de 1/1/2009. Então o que fazer se voce quiser começar a brincar com ele.

Vamos a soluçao:

1 - Faça esses passos ANTES de executar a sua VM pela primeira vez, para garantir que tudo vai funcionar direitinho.

2- Abra no bloco de notas(ou similar) o arquivo da VM que voce extraiu com extensao .vmc.

3 - Procure pelo nó
<integration>
<microsoft>
<mouse>
<allow type="boolean">true
</mouse>

4 - Abaixo de adicione o seguinte código
<components>
<host_time_sync>
<enabled type="boolean">false
</host_time_sync>
</components>

5 - deixe o resto como está.

6 - Inicie a VM e digite del (o mais rapido que puder,pois o tempo é curto para teclar del) para entra na BIOS.

7 - Altere o horário do sistema para uma data anterior a 1/1/2009. Nao exagera pq eu coloquei 2006 e deu problema mais na frente, coloque alguma durante 2008, aproximadamente, até porque em alguns meses devem sair as versões beta.

Voilá!

Detalhe: O Windows 2008 vai continuar pedindo para ser ativado. Mas NAO ative. Se tiver algum recado pedindo para ativar, nao ative. Aguarde alguns segundos e clique em ativar depois.

Clique aqui para baixar o Visual Studio 2010 CTP

Have Fun!

Monday, January 19, 2009

Filtrando a lista de usuários nos campos Assigned To

Vai ai uma dica bem útil para quem trabalha com o TFS. Quando criamos um novo bug ou task ou qualquer outro work item precisamos "assign" para alguém. Neste momento verás que o campo "Assign To" listará todo os usuários do seu AD. Blehh, horrivel isso. Mas para consertar é fácil, precisamos apenas editar a definição do work item (terá que fazer isso em cada work item). Procure pelo nó <field name="Assigned To" refname="System.AssignedTo" type="String">

Eis o que precisa ser mudado:

<field name="Assigned To" refname="System.AssignedTo" type="String" >
<ALLOWEDVALUES filteritems="excludegroups">

<LISTITEM value="[project]\Project Administrators" />
<LISTITEM value="[project]\Contributors" />
</ALLOWEDVALUES>
</field>


Com isso voce está dizendo que apenas os usuários dos grupos Project Administrators e Contributors do seu projeto sao valores válidos para serem listados.

Dica da dica: utilizando o Power Tools para TFS 2008, voce pode fazer a edição de Work Items visualmente.

26/01/2009 - Eu estava implementando aqui em um projeto e atualizei o XML pois reparei que estavam faltando alguns "/>".

Have Fun!

O Especialista

Um especialista foi chamado para solucionar um problema com computador de grande porte e altamente complexo... Um computador que vale 12 milhões de dólares. Sentado em frente ao monitor, pressionou algumas teclas, balançou a cabeça, murmurou algo para si mesmo e desligou o computador. Tirou uma chave de fenda do seu bolso e deu volta e meia em um minúsculo parafuso.Então ligou o computador e verificou que tudo estava funcionando perfeitamente. O presidente da empresa se mostrou surpreendido e ofereceu pagar a conta no mesmo instante.

- Quanto lhe devo? - perguntou.
- São mil dólares, por favor.
- Mil dólares? Mil dólares por alguns minutos de trabalho? Mil dólares por apertar um parafuso? Eu sei que meu computador vale 12 milhões de dólares, mas mil dólares é um valor absurdo! Pagarei somente se receber uma nota fiscal com todos os detalhes que justifique tal valor.

O especialista balançou a cabeça e saiu. Na manhã seguinte, o presidente recebeu a nota fiscal, leu com cuidado, balançou a cabeça, e saiu para paga-lá, no mesmo instante, sem reclamar.
A nota fiscal dizia:
Serviços Prestados:
Apertar um parafuso.....................1 dólar.
Saber qual parafuso apertar.............999 dólares.

Dizem que não se cobra pelo que se faz, mas pelo que se sabe!

Excelente texto enviado pelo amigo Gustavo Barizon administrador do site (http://www.jdefusion.com/)

Have Fun!

Friday, January 16, 2009

Poster .Net Framework 4.0

Nada melhor do que começar 2009 falando do assunto que certamente será o mais comentado e discutido do ano: .Net Framework 4.0.

Bem, vamos começar devagar. Segue abaixo o link para o Poster com os hot topics e novidades do .Net Framework 4.0. Não deixe olhar a versão Deep Zoom , está muito legal. Pelo poster voce já pode ir sentindo o que virá pela frente. Meus destaques são a reformulaçao do Workflow Foundation, as bibliotecas do Asp.Net MVC e as classes de manipulaçao de XAML.

Esse framework promete!

Confira: http://blogs.msdn.com/brada/archive/2008/10/29/net-framework-4-poster.aspx

Fonte: Blog do amigo Renato Guimarães

Have Fun!