Campeão Mundial de Interoperabilidade – Imagine Cup 2009!!!

8 Julho 2009

PROATIVA TEAM GANHOU O PRÊMIO DE INTEROPERABILIDADE NA IC2009!!!

Conseguimos superar os (ótımos, diga-se de passagem) projetos da Jordânia e da Polônia, e trazer o primeiro lugar novamente para o Brasil e para O CIn!

Depois escrevo com mais detalhes ;)


Imagine Cup 2009 – 05/07 e 06/07 – Só na Folia

8 Julho 2009

Tô reservando espaço pra escrever aqui depois, =)


Imagine Cup 2009 – 04/07 – Apresentação para os Jurados

8 Julho 2009

Depois de tanto trabalho, finalmente chegou a hora de apresentar o ProLearning. Passamos a manhã e a tarde melhorando a apresentação, depoıs do feedback dado pelo pessoal da Mıcrosoft Brasil, do Bradesco e da Super Produçoes, que estavam nos acompanhando. Treınamos exaustıvamente, até vermos que não podıamos maıs fazer nada além de esperar a hora da apresentação.

17:50 entramos na sala de julgamento e rapidamente montamos nosso ambıente sem problemas. Esperamos até os juızes chegarem, trocarem algumas palavras conosco. Luz verde no cronometro, e a apresentação estava valendo. Me bateu uma leveza, uma tranquilidade na h0ra, que eu não havıa sentıdo em nenhum treıno. Apresenteı minha parte sem problemas, Lucas fez a demo, voltei a apresentar a parte técnıca. Dava para ver que alguns dos jurados estavam gostando do que viam. Sorrisos, cutucadas no outro apontando algumas coisas, prıncipalmente onde sabiamos que o projeto era forte. Particularmente, isso me deu uma confiança muito grande durante a apresentação.

O tempo acabou no ultımo slıde, que falava sobre planos futuros. A prımeıra pergunta de um dos jurados foı exatamente o que pretendıamos fazer a partır de agora com o ProLearnıng :) . Graças a ajuda de todos os nossos amıgos, que nos fızeram várıas perguntas sobre o projeto, fıcamos bem preparados, e as outras perguntas tambem foram facilmente respondidas.

Resumindo, gostamos muıto da apresentação! Agora é esperar o resultado!

PS: desculpem os erros de dıgıtação… estou usando um teclado bizarro.


Imagine Cup 2009 – 03/07 – Abertura da Imagine

8 Julho 2009

Depois de um pequeno descanso, a equipe brasileira se reuniu para a passagem de algumas informações da competição. Depois disso, nós da Proativa voltamos a trabalhar na apresentação, e conseguimos finalizar algumas partes que estavam nos incomodando. No início da tarde, fomos levados ao local onde iria ocorrer à noite a abertura da Imagine Cup 2009, que ocorreu na Cidadela no Cairo. Depoıs de conhecer a linda mesquita de Mohamed Alı (nao é o lutador…), e fazer muita bagunça junto com as outras equipes, começou a abertura.

O lugar foi impecavelmente preparado. Após a entrada das delegaçoes de cada país, falaram varias pessoas, como o vice presıdente da Mıcrosoft para o Orıente Médio e Áfrıca, o mınıstro de tecnologia do Egıto e o Chief Software Archıtect da Microsoft, Ray Ozzie. Claro que nao poderıa faltar a presença de Joe Wılson, que foı o mestre de cerımonia.

Como um todo, a abertura foı emocionante. Pra quem aında nao tiınha “caido a fıcha”, aquele foı o momento certo. Confesso que meus olhos encheram de lágrimas em alguns vários momentos… Muita emoçao ver tanto trabalho ser reconhecido, e estar entre os melhores do mundo.

No fim, conseguimos tirar fotos com Ray Ozzie, com uma mulher que estava representando a prımeıra dama do Egito e com algumas meninas muçulmanas.

Bem, por enquanto é isso… depoıs escrevo maıs!


Imagine Cup 2009 – 01/07 a 03/07 – A viagem interminável

5 Julho 2009

A viagem foi muito longa… Em São Paulo, a equipe brasileira embarcou no vôo Sao Paulo-Istambul da Turkish Airways em clima de festa. O entrosamento que foi iniciado no evento em São Paulo continuou no avião, principalmente pois haviam novos membros, notadamente, Gringo, um uruguaio super gente boa que é câmeraman da equipe da Record que está nos acompanhando.

Após longas 6 horas de vôo noturno – a melhor parte foi ir observando cada cidade que passava na janela no monitor com o GPS mostrando onde o avião estava, que eu lembre, deu pra ver Salvador e Recife, onde o avião puxa pra direita e vai em direção a Dakar – chegamos em nossa primeira escala, a capital do Senegal, Dakar. Foi uma escala bem demorada, quase uma hora e meia, e quando abriram a porta traseira do avião pro pessoal da limpeza sair, pudemos chegar lá e tirar algumas fotos e filmar um pouco o que dava pra ver de lá.

Daí seguimos para Istambul no mesmo A330 que havia nos levado à Dakar. A comida do avião foi um ponto a parte. Não são aqueles Maxi Goiabinha dos voos da Gol, são refeições bem decentes, no entanto, um tanto diferentes… Algumas pessoas não gostaram muito, mas eu n tenho frescura mesmo pra comida, detonei tudo.

Este trecho Dakar-Istambul foi ótimo. Primeiro, porque eu descobri que cada duas poltronas do avião tinham uma tomada, então o pessoal pode voltar a trabalhar, ganhando 6 horas pra produzir. Depois, porque a paisagem vista era espetacular. Primeiro o deserto do Saara, gigantesco. Depois, começamos a passar por cima de lugares como Itália e Grécia, até finalmente chegarmos em Istambul.

O aeroporto de lá é bem legal, grande e com boa estrutura. Ficamos lá para fazer a conexão Istambul-Cairo, durante aproximadamente 3 horas. Deu pra uma galera ligar pra casa, comer, ver preços das coisas em Duty-Free e por ai vai. Finalmente embarcamos para a ultima etapa de nossa viagem, novamente em um voo da Turkish Airlines, desta vez em um A321. Uma coisa que nos impressionou <sarcasm>foi a delicadeza da tripulação neste voo.</sarcasm>

Na hora prevista, chegamos ao aeroporto internacional do Cairo. Foi um choque de culturas, pois logo ao descermos, vimos aquele monte de gente vestida com roupas árabes (como era de se esperar…), mulheres de burca e por ai vai… Passamos pela verificação de temperatura (por causa da gripe e tals) e depois pela <sarcasm> imigração muito organizada </sarcasm>. Resumindo bem, o areoporto é um inferno. Muita gente, pouco espaço e pouca organização. Sorte nossa que tinha o pessoal da Imagine Cup agilizando o processo pra quem era da competição. Daí, pegamos um ônibus, já misturados com gente da Alemanha e mais alguns paises, e fomos levados aos nossos hoteis, no complexo Citystars, aqui na cidade do Cairo. Depois de um demorado check-in, finalmente pudemos tentar descansar. Antes, como já estava sendo servido o café da manhã (as 6 da manhã), eu e Flávio fomos comer, enquanto os meninos foram logo dormir. Resumindo, fomos descansar da viagem (lembrando que eu só dormi 2 horas, entre Recife e Dakar, e daí fiquei acordado o tempo todo), as 07:30…

Em breve eu conto mais sobre as outras coisas que aconteceram depois da viagem.


Imagine Cup 2009 – Dia 30/06 – Chegada em São Paulo

1 Julho 2009

Pessoal, este é o primeiro de uma série de posts cobrindo a ida de minha equipe, a Proativa Team, para as finais da Imagine Cup 2009 no Egito.

Após sairmos de Recife às 8:30, e passarmos algumas horas num vôo tranquilo, sem maiores incidentes tirando o medo de Luciano (Game Dev), chegamos ao Aeroporto Internacional de Guarulhos às 11:40. Jean, da empresa que está auxiliando a Microsoft na organização do evento aqui em SP, estava a nossa espera, e logo saímos em duas vans para o hotel. O ótimo trânsito de São Paulo nos fez levar apenas duas horas e dez minutos para chegarmos no hotel (errado), e mais 5 minutos para chegarmos no hotel certo. Infelizmente, já estávamos em cima da hora, e tivemos que ir direto para a Microsoft, para o desespero do estômago (vazio) de todos. Lá chegando, almoçamos (muito bem) no Zig do shopping que existe no empresarial onde fica a Microsoft.

A tarde foi ótima, com uma ótima conversa com Eliane, que está ajudando as equipes com as apresentações a serem feitas no Egito. Fomos apresentadosa todo o pessoal da Microsoft Brasil responsável pelo evento e ao pessoal do Bradesco que nos acompanhará na viagem. Vale ressaltar o presentinho que ganhamos: Uma mochila Targus (enorme), com livro sobre o Egito, camisa da equipe Brasileira, Seguro de Saúde enquanto estivermos no Egito e várias outras coisinhas.

Já deu pra começar a socializar com o resto do pessoal, das equipes daqui de São Paulo. Na van e no hotel na hora do jantar, ficou todo mundo misturado e conversando. Nós da Proativa compramos o acesso a internet (R$ 8,00 8 horas) e ficamos até 3 da manhã trabalhando na apresentação, para ter algumas coisas para apresentar hoje no treinamento para apresentações.

Estou indo tomar café da manhã correndo, pois o tempo está bem curto, e a programação bem cheia!

Até a próxima!

PS: Depois eu atualizo esse post com fotos!


Pesquisa de Imagens do Bing se garantindo

16 Junho 2009

Já imaginou fazer uma busca de imagens e só receber uma página de respostas? Até agora, isso significava que a busca retornou poucos resultados. Quando você pesquisa, por exemplo, no Google Images, e obtém uma quantidade razoável de resultados, eles vem espalhados por várias e várias páginas. Cada vez que você quer ver mais resultados, tem que abrir a nova página, e carregar tudo de novo.

O Bing, nova ferramenta de busca da Microsoft, trouxe uma mudança significativa na sua busca de imagens (http://www.bing.com/images). É apresentada apenas uma página ao usuário, contendo os resultados em um painel com rolagem vertical. O comportamento natural do usuário, ao precisar de mais imagens, é rolar a barra para baixo, e na medida em que o usuário desce para ver mais resultados, o Bing requisita as próximas imagens via Ajax. O resultado é uma interface que ajuda MUITO, e de várias formas o usuário:

  1. Não tem que ficar mudando de página, pedindo mais imagens. É só descer a barra e mais imagens virão;
  2. Todas as imagens que o usuário já viu continuam lá. Não é necessário ficar voltando de página para ver alguma imagem que você gostou mas passou;
  3. Bom para conexões lentas. Quando você precisa de mais resultados, ele só requisita as imagens, não tendo que recarregar toda a página. Em minha conexãozinha de 153kbps, isso faz uma diferença absurda!
  4. Ao clicar em uma imagem, a página de origem abre no painel. Enquanto isso, os outros resultados da busca ficam em um painel lateral, permitindo que o usuário continue vendo todos os resultados, na mesma janela.

Além disso, a interface é suficientemente limpa, e existem vários modos de visualização dos resultados. Pode-se alterar a visualização para 7, 5 ou 4 imagens por linha, sem recarregar a página, bem rápido. A visualização padrão ajuda no visual clean do site, pois são apenas exibidas as imagens, sem nenhuma informação como o site de origem, tamanho e dimensões do arquivo. Basta passar o mouse em cima da imagem que estas informações aparecem, além de ser exibida a imagem um pouco maior.

O Google Images ainda oferece mais resultados que o Bing Images, mas até o momento, as buscas que fiz no Bing sempre me retornaram uma imagem que atendia minhas necessidades. Ele é minha busca de imagens padrão no momento. Agora é esperar para ver qual será a reação do Google!


Proativa no Egito!!! Finalistas na Imagine Cup 2009!!!

4 Junho 2009
É nois no Egito!

É nois no Egito!

Como diria Flávio Almeida, é com incomensurável prazer que venho por meio deste post informar que a Proativa Team, formada por mim, Lucas Mello, Flávio Almeida e João Paulo Oliveira, é uma das finalistas mundiais no prêmio de Interoperabilidade da Imagine Cup 2009. As finais acontecerão entre os dias 3 e 8 de Julho, em Cairo, no Egito! Já estamos entre os 3 melhores projetos de interoperabilidade do mundo!

Agora é a correria para tirar a papelada toda pra viajar, e trabalhar insanamente pra sermos campeões!

Todos nós da Proativa também estamos extremamente felizes pelo pessoal da equipe pernambucana LevvIT, formada por nossos amigos Edgar Neto, Diogo Burgos, Luciano José, Vinicius Ottoni e Victor Rafael, que são finalistas na categoria de Game Development, e já estão entre os 5 melhores do mundo.

É tempo de se preparar e trabalhar muito, para poder representar muito bem nosso país. Temos a informação de que este ano será a maior delegação brasileira em finais de Imagine Cup! Parabéns a todos os classificados, muito obrigado a todas as pessoas que nos ajudaram na conquista, e que o resultado das equipes brasileiras sirva de incentivo para que todos os estudantes brasileiros participem destas competições divulgando o nome de nosso país e a qualidade de nossos estudantes e futuros profissionais para o mundo!

Só de motivação, algumas coisas q eu provavelmente vou ver por lá!

Pirâmides

Pirâmides

Esfinge

Esfinge

Cidade Antiga do Cairo

Cidade Antiga do Cairo


Perigos da validação client-side (ou Sempre valide client E server side)

14 Maio 2009

Desenvolvo para a web há praticamente 8 anos. Pude ver muita coisa surgindo, tecnologias, conceitos, frameworks, aplicações, serviços… O bom de aprender cedo a desenvolver é que você presta atenção as falhas dos outros para não comete-las em seus projetos. Já vi absurdos completos, como um site em que os dados do login eram enviados via GET, usuário e SENHA, plaintext, na url de destino… Outros erros comuns, que por vezes me deparo são mais mascarados, mas qualquer desenvolvedor com o mínimo de experiência os conhece e deve tentar evitá-los. Um exemplo é SQL Injection… a técnica é conhecida desde sempre, no entanto, grandes portais ainda são vulneráveis a este “ataque” trivial, que qualquer usuário pode realizar. Já vi o site de um jornal importante, de grande circulação, abrindo as pernas para um “‘or 1 = 1′ ” colocados como usuário e senha… Mas o foco deste post não é este tipo de problema. Quero discutir aqui sobre outra fragilidade de aplicações web, ainda mais fácil de tratar do que SQL Injections ou XSS: Confiar na validação client-side.

Muita gente que desenvolve aplicações web atualmente, vem do mundo da programação desktop normal. Ao validar um campo (um textbox por exemplo), basta validar o valor inserido pelo usuário e processar aquele valor normalmente (se for o caso de inserção em banco de dados, vale a pena colocar validação no banco também, tanto para desktop como principalmente para web). Se quiser desabilitar algum campo, apenas desabilite ele na interface gráfica e pronto, o usuário não vai ter acesso à ele (não na prática, com facilidade suficiente). Ao desenvolver para web, assumir isto pode ser fatal para sua aplicação.

Modificar o conteúdo exibido em uma página, ou mesmo alterar os valores enviados via POST são atividades triviais, que um usuário com conhecimentos mínimos de HTML e/ou do protocolo HTTP podem fazer, usando complementos para o Firefox como o Firebug e o TamperData.

Através do Firebug, é muito fácil alterar por exemplo, o valor de um <option>, para enviar o valor que o usuário desejar, ao invés dos valores pré-definidos. Remover um “disabled” de um input checkbox ou radiobutton é trivial. Com a mesma facilidade, podem ser removidas as chamadas às funções javascript que realizam validação client-side. Confiar em validações feitas em javascript já não é algo muito inteligente, pois praticamente qualquer browser tem opções fáceis de desabilitar a execução de tais scripts.

A validação client-side no entanto não deve ser esquecida. Para o usuário honesto, sem intenção de quebrar o sistema ou explorar vulnerabilidades, ela é muito útil, diminuindo o tempo de resposta caso algum dado esteja incorreto (evitando que os dados sejam enviados, processados pelo servidor, verificados como incorretos e só então ser enviada uma mensagem de erro para o cliente corrigir os dados não conformes), melhorando assim a experiência do usuário.

Frameworks como ASP.NET oferecem facilidades para o desenvolvedor no momento de validar tanto client como server side. Os componentes de validação realizam uma validação client-side, no entanto, todas as verificações são novamente realizadas no momento em que os dados chegam no servidor. Caso estes não sejam válidos, Page.IsValid irá retornar false, e cabe ao desenvolvedor realizar uma verificação ao valor desta propriedade antes de usar os dados. No entanto, deve-se escolher corretamente as validações a serem realizadas em cada cenário, caso contrário, ainda assim poderão passar dados que não deveriam.

Se você acredita que isto é muito teórico, não acontece na prática, está enganado. Nestes dias, um amigo meu foi se inscrever em um curso. Eu e outro amigo já haviamos conseguido nos inscrever, mas as inscrições eram gratuitas, e as vagas haviam se esgotado quando este outro amigo tentou. Quando analisamos a página (escrita em ASP puro, não ASP.NET), percebemos que o radiobutton para escolher o curso que ele desejava estava com um disabled. Resolvemos alterar via Firebug (apenas remover o atributo disabled=”disabled” da tag), selecionar o curso e enviar o formulário. Resultado: Inscrição realizada com sucesso, e quando ele foi ao curso, estava o nome dele lá na lista de inscritos… Até certificado ele recebeu, tudo normal.

Num caso destes, teria que ser verificado se ainda existiam vagas no momento em que o servidor recebe a solicitação. Não precisaria nem de Firebug para um sistema que apenas valida client-side receber mais candidatos inscritos do que deveria. Uma página guardada em cache visitada antes do fim das vagas poderia inscrever várias pessoas. Outro cenário possível era se existisse apenas uma vaga aberta, mas 5 usuários tivessem carregado a página de inscrição ainda com esta vaga restante. Todos eles conseguiriam se cadastrar pela falta de uma validação server-side.

Neste caso, o efeito foi inofensivo. Não faltou lugar, comida (ótimo coffee-break por sinal :) ) nem nenhum outro recurso necessário ao bom andamento do curso por causa desta inscrição adicional. No entanto, cenários em que o dano causado pela falta de verificações semelhantes podem ser consideráveis não são difíceis de imaginar.

Fica o recado, SEMPRE valide seus dados server-side para evitar problemas! Apesar do “trabalho” adicional (que varia consideravelmente dependendo da tecnologia que você estiver usando), vale a pena para garantir o comportamento que você ou seu cliente esperam do seu sistema.


OpenDNS – Resolvendo problemas com o servidor DNS do seu provedor

9 Maio 2009

A Lei de Murphy é implacável… quando você mais precisa enviar aquele email importante, do nada, seu GMail não abre. Você tenta abrir google, globo.com, uol, qualquer coisa que está SEMPRE no ar, mas nada abre. Teoricamente, “a internet caiu”. Com meu Giro da Embratel, isso acontecia direto, principalmente durante a semana em horário comercial. A questão é que, se você tentar abrir algum daqueles sites pelo seu endereço IP, ele abre. E agora, qual é o problema?

A resposta para isso é o servidor DNS do seu provedor. Resumindo, este servidor converte o endereço que você conhece (que é um “apelido”), como www.google.com, para um número como 64.233.169.103, que é o endereço IP, o endereço “real”, pelo qual o seu computador vai conseguir entrar em contato com o google na prática (o buraco é bem mais embaixo do que isso que eu tou falando, mas não tem pra que complicar aqui. Este link leva para uma página explicando melhor o que é e como funciona DNS).

Servidores DNS mal configurados ou dimensionados podem causar sérios problemas, pois ninguém é obrigado a decorar IPs (pra isso o DNS foi criado). Infelizmente, vários provedores não oferecem servidores DNS de qualidade, o que dificulta a experiência do usuário, e muitas vezes impossibilita a navegação (novamente, usuários do Giro que o digam…).

Para resolver problemas de performance, segurança, diponibilidade e por fim melhorar a experiência do usuário, em 2005 foi lançado um serviço chamado OpenDNS. Eles oferecem um endereço IP que você irá colocar como seu servidor DNS, passando por cima do servidor de seu provedor. Quando uma requisição for feita para este “servidor”, ela será realizada na verdade por algum dos diversos servidores da rede do OpenDNS. Por possuirem vários servidores, é garantido que haverá uma resposta para a sua requisição. Apesar destes servidores estarem localizados nos EUA e na Europa, a qualidade do serviço oferecido em relação aos servidores toscos oferecidos por alguns provedores faz com que o tempo de resposta do OpenDNS seja melhor mesmo em relação à maquinas aqui no Brasil mesmo.

O melhor de tudo é o custo…  0800,  grátis, Zero. É só configurar a conexão para usar o OpenDNS e pronto. Estou usando na minha conexão do Giro, e estou conseguindo usar durante a semana em horário comercial tranquilamente, o que não vinha acontecendo há algum tempo. Em outros blogs, vi que tem gente usando ele também em conexões Velox e diminuiu a quantidade de problemas, tanto de disponibilidade como de performance.

Para configurar, siga estes links (em inglês, com as imagens das telas, bem intuitivo):

Para usuários de “discadas” em geral, ao invés de (no caso do XP) escolher “Local Area Network”, no passo 3 escolha a sua conexão.