Twitter – Mudança de opinião em alguns minutos de uso

31 F Y

Eu não gostava do twitter. Sim, me apedrejem. Não via sentido nenhum em mensagens de 140 caracteres e até agora tinha visto muito pouco uso para essa ferramenta, um deles sendo a padaria que tuitava para avisar que tinha saido uma fornada de pão quentinho.

Aqui na Campus Party, é praticamente impossível ficar sem twitter. Se você quer saber o que está acontecendo, é obrigatório estar conectado. Promoções, horários de palestras, resenhas e divulgação em geral do que está acontecendo nesse evento com mais de 6000 pessoas se torna algo fácil de realizar!

Minha experiência foi a melhor possível… com 3 horas de twitter criado, ganhei uma passagem aérea da Azul, e ontem, após saber de mais uma promoção deles, ganhei outra passagem, um voucher e uma maquete de um Embraer EMB-190 (além da foto com esses aviões essas aeromoças).

A possibilidade de divulgar os eventos e promoções relâmpago que estavam sendo realizados pelos MSPs e pelo pessoal de interoperabilidade da Microsoft aqui na CP2010 e ter um retorno quase imediato finalmente abriu meus olhos para todo o poder dessas pequenas mensagens.

Enfim… acho que viciei. Vou tuitar isso 🙂

UPDATE:

A pedidos (de @filipecalegario, pra ser específico…), meu twitter é @amirtonchagas.


Prêmio Nacional da Interoperabilidade

30 F Y

Depois do sucesso do Desafio de Interoperabilidade proposto pela Microsoft aqui na Campus Party 2010, gostaria de lembrar vocês sobre o Prêmio Nacional da Interoperabilidade.

Esta competição realizada pelo Senai com apoio da Microsoft, tem como objetivo difundir as possibilidades de interoperabilidade de sistemas e ferramentas da Microsoft com as ferramentas e sistemas providos por outras empresas ou pessoas.

O Prêmio é focado em estudantes, e será tipo uma prévia da Imagine Cup, nos moldes do XNA Challenge, mas focado na categoria de Interoperabilidade. O tema, as 8 metas do milênio, é o mesmo da competição mundial. O vencedor NÃO está automaticamente classificado para a Imagine Cup, mas a competição é de grande ajuda para validar a idéia e conseguir aprimorar o projeto antes de submeter para a Imagine Cup.

A premiação também é muito interessante, um netbook por membro da equipe, mas em comparação com a experiência e conhecimentos adquiridos durante a realização do projeto, não é nada. Vale realmente muito a pena participar, principalmente se você tem como objetivo participar e ganhar de uma Imagine Cup.

Pra quem não sabe, atualmente, o Brasil é o campeão mundial da categoria Interoperability Award da Imagine Cup. Em 2009, eu e meus amigos da Proativa levamos o ProLearning para o Egito e ganhamos. Não podemos participar este ano por causa disso mas queremos que o Brasil mantenha o título. Uma iniciativa como esta ajuda muito a preparar o pessoal, não perca essa chance!

Por último, fazendo propaganda… Não posso participar como competidor, mas posso ser mentor de qualquer equipe nesta categoria. Se você tiver alguma idéia, entre em contato comigo para podermos trabalhar juntos e tentar levar sua idéia para o Prêmio de Interoperabilidade e posteriormente para a Imagine Cup 2010, na Polônia!


Atenção Campuseiros: Desafio de Interoperabilidade – Concorra a um Netbook Asus Eee-PC

26 F Y

Esta é pra quem está na Campus Party 2010. A Microsoft está propondo um desafio para vocês: Uma competição relâmpago, em que os campuseiros devem projetar um sistema que permita a interoperabilidade entre diversas ferramentas.

O tema da competição é: “O que você consegue fazer de mais criativo, integrando o Windows com outro Software?”. O regulamento completo está compartilhado no SkyDrive, basta seguir o link: https://cid-0009bc1640dc81c8.groups.skydrive.live.com/self.aspx/.Documents/Regulamento%20Desafio%20Interop/regulamento%5E_desafio%5E_interop.pdf

Eu e Lucas participaremos da avaliação dos projetos. Devido ao pouco tempo disponível, uma implementação completa não é obrigatória, mas um pouco de código ilustrando minimamente o objetivo de seu projeto é um diferencial. O mínimo para participar é responder as perguntas de 1 a 5 deste documento. Perceba que este documento é o mesmo documento do I Premio Nacional de Interoperabilidade, logo, participando deste desafio você já está se preparando para esta outra competição!

Se você estiver interessado em participar e precisar de ajuda, orientação ou só conversar pra discutir a idéia, deixe um comentário neste post ou procure por mim ou por Lucas na CP. Também pode falar com os MSPs que estão na feira. Se eles não souberem ajudar, vão saber onde nós estamos 😉

Tentem, vale a pena, e ainda serve como aquecimento para uma competição maior, o I Prêmio Nacional de Interoperabilidade. Vale lembrar que ontem a Microsoft confirmou a presença da categoria Interoperability Award na Imagine Cup 2010, logo, seu trabalho também vai ser uma preparação para esta competição incrível. Além de tudo, o prêmio, um netbook, não é de se deixar escapar fácil!

Para maiores informações da competição, se cadastre no grupo da Live feito para os campuseiros.


Na Campus Party 2010

26 F Y

Depois de um atraso de quase 2 horas do voo, estou aqui na Campus Party 2010. Daqui a pouco vou palestrar no palco de Desenvolvimento, junto com Lucas da Proativa e Marinez da Microsoft, mostrando o ProLearning e falando sobre Interoperabilidade.

Vejam o trabalho que deu pro n00b aqui montar a barraca (sem duplo sentido…):

Armando a barraca

Na barraca montada


Campus Party 2010, aí vou eu!

24 F Y

Post rápido e pequeno… Só pra avisar que estarei na Campus Party esse ano, a convite do pessoal da Microsoft, pra participar da apresentação de Interoperabilidade mostrando, junto com Lucas, o ProLearning, que pra quem não sabe, é o projeto que levamos para a Imagine Cup 2009 e ganhamos na categoria de Interoperabilidade.


Apocalipse no CIn – BSOD geral nos grads

15 F Y

O dia: 03/09/2008. A hora: 12:12. O local: Laboratórios de graduação no CIn/UFPE.

Eu havia acabado de deslogar da máquina que estava usando no Grad 1. Ia almoçar e depois ir para o estágio (na época, eu estava estagiando na FAST). Logo depois de pegar minhas coisas, mas antes de levantar, vi o computador que eu havia usado com uma Tela Azul da Morte (BSOD, Blue Screen of Death, tela de “perdeu preibói” do Windows…).  O do lado direito, também. O do lado esquerdo, idem. Levanto. Todos os monitores do grad exibiam aquele tom azul velho conhecido de quem usou muito Windows 98 com hardware safado sem driver decente…

Alguns alunos ficam simplesmente olhando para a tela, com a cara de “perdi meu projeto de [IP/PG/lista de algoritmos]” (afinal, só Jesus salva!)… outros ficam olhando entre si, querendo saber quem ou o que causou aquilo. Saio do Grad 1, e vejo que o Grad 2 está do mesmo jeito. A disposição das máquinas no G2 é melhor que no G1, saco meu telefone com camera VGA super safada e registro o momento:

BSOD geral no CIn!

Ao sair e passar na frente do suporte, através daquelas paredes de vidro quem quisesse podia ver algumas máquinas lá dentro também na tela azul, e um dos caras do suporte olhando com uma cara de surpresa que parecia demais com a dos alunos…

Fim dos dias? Ataque terrorista? Apocalipse? Algum “ráquer v1d4 l0k4” (© TolicesDoOrkut) fazendo estrago?

Não… Depois, conversando com alguém do suporte, se não me engano o problema teve algo haver com o anti-vírus, alguma dll do Kaspersky tinha feito o estrago (provavelmente desatualizada, ele explicou direitinho o que tinha causado isso, mas faz tempo e não lembro mais). Parece que a bronca foi resolvida fácil, e até onde eu sei, outro BSOD day não aconteceu.

Minha sincera solidariedade com o pessoal que perdeu algum trabalho com isso, mas que deu uma foto “nerdmente” legal, ninguém pode negar 🙂

PS: Demorei pra postar isso pois só agora achei essa foto, que pensei ter perdido quando esse telefone velho (que btw ainda uso) deu uma bronca e precisou ser formatado e ir pra assistência…


Pedindo confirmação antes de fechar sua aplicação .NET

14 F Y

Seu usuário pode fechar sem querer sua aplicação. Foi maximizar a janela, errou e clicou no botão de fechar… já era. O mesmo para menus ou outras opções de encerrar o programa. Em alguns casos isso não é tão ruim, basta abrir novamente. Mas em outros, as consequências podem ser bem sérias. Exibir uma confirmação de que o usuário realmente deseja fechar a aplicação é interessante nesses casos.

Confirmação para fechar o programa

Exibir esta dialog para confirmação no .NET Framework é bem simples. O primeiro passo é tratar o evento FormClosing da tela principal de sua aplicação. Ao disparo deste evento, seu método irá receber como parâmetro uma instância da classe FormClosingEventArgs.

Esta classe possui duas propriedades:

  • CloseReason. Esta propriedade informa qual o motivo de sua aplicação estar sendo encerrada. Por exemplo, seu valor pode informar que o programa está sendo fechado pois o sistema operacional está sendo desligado ou pois o usuário pediu, entre várias outras razões. Esta propriedade é read-only.
  • Cancel. Esta propriedade informa se o fechamento da aplicação deve ser cancelado. Se ao final do método o valor desta propriedade for true, seu programa não será encerrado. Seu valor padrão é false.

No método tratando o evento FormClosing, você deve primeiro observar a propriedade CloseReason. Escreva uma verificação para evitar que a confirmação seja mostrada quando o sistema está sendo desligado, por exemplo.

Depois, exiba uma dialog através de MessageBox.Show, informando qual deve ser o texto, o título, o ícone e quais botões devem estar na dialog. O normal é como na imagem acima: Um texto explicando o que pode acontecer caso a aplicação seja fechada, ícone de aviso (Warning) e botões Sim/Não.

Usando o retorno do MessageBox.Show (uma instância de DialogResult, que informa qual botão foi pressionado na tela de confirmação), verifique se o usuário escolheu não fechar a aplicação. Caso isto tenha acontecido, mude o valor da propriedade Cancel de sua instância de FormClosingEventArgs para true.

Para ficar mais claro, segue um exemplo do código deste método, para criar a confirmação da imagem do começo do post:

private void FormClosingEvt(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason != CloseReason.WindowsShutDown)
    {
        DialogResult result = MessageBox.Show(
            "Closing the application will stop changing your background image.\n\nAre you sure you want to leave?",
            "Are you sure?", MessageBoxButtons.YesNo,
            MessageBoxIcon.Warning);

        if (result == DialogResult.No)
        {
            e.Cancel = true;
        }
    }
}

Atribuindo este método para o evento de FormClosing do formulário principal de sua aplicação e alterando as mensagens para algo que se encaixe melhor no contexto do seu programa, você terá uma janela de confirmação evitando o fechamento acidental de sua aplicação.

Qualquer dúvida, deixe um comentário e responderei assim que puder.


GMail Weather Fail: Nevando em Recife

13 F Y

Uso o tema Tree do GMail, que, em teoria, mostra como está o clima na cidade escolhida na configuração de temas… É legal pra quem passa 12, 18, 24 horas preso dentro de um laboratório sem janelas, pra saber como provavelmente está o tempo lá fora, um restinho de contato com o mundo real.

Em Recife, geralmente o tema mostra que o tempo está ou ensolarado, ou com algumas nuvens ou de vez em quando chovendo. Estou passando essas férias em Maceió, e para minha surpresa, ao abrir o GMail no último domingo, dia 10, perto das 19 horas, me deparo com isso:

GMail Weather Fail - Nevando em Recife

Fui nas configurações de tema, pra ver se a cidade tinha sido resetada, mas continuava Recife lá… Tirei o print, recarreguei e a neve persistiu. Quando voltei a olhar, aproximadamente meia hora depois, estava ensolarado. Mas o print registrou o dia que nevou em Recife, pelo menos de acordo com o GMail 🙂


Adicionando um menu ao ícone na bandeja

12 F Y

Depois de mostrar como colocar um ícone na bandeja para a sua aplicação e a mostrar o balão de notificação a partir deste ícone, irei neste post descrever o passo-a-passo para atribuir um menu para este ícone de sua aplicação .NET. Este menu será acessado através do clique com o botão direito do mouse sobre o ícone.

ContextMenuStrip na toolbar do Visual Studio 2008

O primeiro passo é adicionar um controle ContextMenuStrip ao seu formulário. Como ilustrado na imagem acima, o controle se encontra na aba Menus & Toolbars da Toolbox do VS2008.

Clique e arraste para dentro do seu form, e a representação do seu controle ficará embaixo, fora do form, assim como o NotifyIcon fica quando é arrastado. Quando você clicar no controle, irá aparecer um menu no formulário. Não se preocupe, ele está ali apenas para facilitar seu trabalho durante a edição do menu, e não aparecerá naquele lugar durante a execução da sua aplicação.

Edit Items

Configure o menu de acordo com seu desejo, mudando sua aparência e adicionando itens. Tudo isso pode ser feito através da tela Edit Items, disponível ao clicar na imagem de “play” que surge ao clicar no componente.

Quando acabar, é só adicionar os eventos de clique para cada item do menu. Isto não pode ser feito através da tela Edit Items. Para acessar os eventos, deixe a janela de propriedades do Visual Studio visível e clique no componente. Quando o menu aparecer no form, clique no item desejado. Depois, clique no botão com um “raio” na janela de propriedades para exibir os eventos, e escolha qual evento você deseja adicionar algum comportamento. Provavelmente você irá escrever código para o evento Click.

Depois de atribuir o que deve acontecer quando cada item do menu for clicado, é hora de atribuir este menu ao seu ícone da bandeja. Para isso, clique no componente do ícone, e na janela de propriedades altere o valor da propriedade ContextMenuStrip para o menu que você acabou de criar. Isto irá associar este menu ao seu ícone, e automaticamente quando o ícone for clicado, seu menu irá ser mostrado para o usuário. No meu projeto de exemplo, o resultado é o seguinte:

Ícone na bandeja com menu

Pronto, é só isso! Seu menu está funcionando. Se forem bem escolhidos, os itens deste menu irão refletir as atividades mais comuns e que não exigem que toda a interface seja mostrada. Através deste menu, o usuário poderá então ser mais produtivo ao utilizar a aplicação.

Apesar de meu exemple ter sido feito em C#, o passo-a-passo deste artigo (e dos anteriores também) pode ser utilizado tranquilamente para quem prefere usar VB.NET.

Clique aqui para baixar um projeto com o código final deste exemplo. Este projeto tem o mínimo de código necessário para colocar o ícone na bandeja, exibir balões de notificação e atribuir um menu para o ícone.


Exibindo balões em ícones da bandeja

11 F Y

No post anterior, expliquei como colocar um ícone na bandeja para sua aplicação .NET. Mostrei apenas o básico, mas que já é suficiente para alguns usos. Outras características possíveis de se adicionar nestes botões, como os balões de notificação e os menus, trazem um poder muito grande ao seu pequeno ícone.

Configurando e exibindo balões de notificação para ícones na bandeja

Estes são aqueles balões que gerenciadores de download mostram quando um arquivo acaba de ser baixado, ou que o Windows mostra quando há algum problema de segurança, tipo anti-vírus desatualizado ou firewall desabilitado.

Balão de Notificação

Usá-los é bem simples. Você pode configurar um balão padrão, para mostrar quando o mouse é deixado em cima do ícone por exemplo, ou exibir um balão para avisar de algum evento ocorrido na execução de sua aplicação como o término de um download, no caso dos gerenciadores citado anteriormente.

Propriedades de NotifyIcon para o Balão

Para configurar um balão padrão, basta atribuir valores para as propriedades BalloonTipIcon, BalloonTipText e BaloonTipTitle de NotifyIcon, na janela de propriedades. Para mostrar o balão, chame a seguinte linha de código:

notifyIcon1.ShowBalloonTip(10000);

Onde, 10000 é um timeout, um tempo em milissegundos até o balão desaparecer. De acordo com algumas fontes que li, mesmo que você bote 3000ms por exemplo, o sistema operacional vai deixar por no mínimo entre 10 e 30 segundos. No teste que fiz com o XP, o mínimo foram 10s.

Para fazer o balão aparecer quando o mouse passa por cima do ícone*, basta chamar a linha de código acima no evento de MouseMove do seu NotifyIcon. O resultado desta chamada para as propriedades com os valores da imagem acima é o seguinte:

Balão com dados setados na janela de propriedades

Para mostrar um balão com outro texto, algo que necessite por exemplo de dados de tempo de execução, eu recomendo não alterar aquelas propriedades, mas sim chamar outra assinatura deste método. Esta outra assinatura recebe mais três parâmetros além do timeout:

notifyIcon1.ShowBalloonTip(timeout, tituloDoBalao, textoDoBalao, tipoDoBalao);

O título e o texto são auto-explicativos. O tipo do balão é um valor do tipo ToolTipIcon que definirá a imagem que aparece dentro do balão. Este parâmetro pode assumir o valor ToolTipIcon.Info, que diz que o balão representa uma informação qualquer, ToolTipIcon.Error, no qual o balão representa um erro e ToolTipIcon.Warning, que irá conter um aviso para o usuário.

De cima para baixo: Info, Error e Warning

Para exibir o balão, basta em qualquer lugar de seu código, chamar a linha de código acima passando os parâmetros desejados. Você pode avisar sobre algum evento que aconteceu durante a execução da sua aplicação, e mesmo que o usuário esteja com a atenção em outra aplicação, poderá ver o aviso através do balão.

Fica para o próximo post o tutorial de como colocar um menu, acessível ao clicar com o botão direito no ícone da bandeja, onde o usuário poderá acessar algumas funcionalidades de sua aplicação.

* Não recomendo mostrar o balão ao passar o mouse por cima do ícone, pois dificulta clicar no ícone e a também complica a exibição do menu.