Posts de April, 2009

[Rodolfo Carvalho] Planeta Globo.com

Tuesday, April 21st, 2009

Há muuuuito tempo o Meyer deu uma idéia da fazer uma coisa que eu também sempre quis fazer mas nunca arrumava um tempo. Mas agora foi. Acabo de criar para nós o Planeta Globo.com: http://planeta-globo.com/

A idéia é criar um agregador de todos os blogs pessoais da galera que trabalha na Globo.com. Já tivemos uma experiência de criar um blog corporativo [...], mas acabou ficando um pouco abandonado porque as pessoas não gostaram de ter que blogar em dois lugares diferentes (eu inclusive). Então, a idéia do Planeta é que todos os posts que nós escrevermos em nossos blogs pessoais vão automaticamente para lá sem dar trabalho adicional. [...]

Outra coisa importante é que a idéia principal é falar sobre coisas técnicas que fazemos na Globo.com (desenvolvimento de software, desenvolvimento client-side, user experience, design, arquitetura de inf., administração de sistemas, etc.). [...] A idéia é que o Planeta seja um blog técnico sobre coisas envolvidas no processo de criação de produtos para Internet.

Guilherme Chapiewski, em 11 de Abril, 2009

E foi assim que o GC introduziu a idéia do Planeta Globo.com! Agora todos podem acompanhar os diversos blogs do pessoal da globo.com, tudo agregado em planeta-globo.com!

E o LifeAtMyMind está presente lá/aqui, apenas com posts selecionados por relevância.

[Guilherme Cirne] will_paginate sem carregar ActiveRecord

Tuesday, April 21st, 2009

Update: A solução abaixo não é mais necessária. Criei um fork do will_paginate no meu GitHub com um pequeno patch que habilita o will_paginate mesmo quando não temos o ActiveRecord carregado (obviamente, só habilita as partes que não precisam do ActiveRecord).

Para instalar:

sudo gem install gcirne-will_paginate --source http://gems.github.com

Além disso, fiz um pull request para o mislav aplicar meu patch no repositório dele. Se ele aceitar, teremos essa modificação na gem oficial do will_paginate.

Segue o post original.

O will_paginate é uma excelente gem para fazer paginação no Rails. Por default, ela pagina models do ActiveRecord. Mas também é possível paginar qualquer coleção. Basta usar o método create da classe WillPaginate::Collection.

Em aplicações Rails é possível não carregar determinados componentes do framework que não serão utilizados. Por exemplo, com a linha abaixo no arquivo config/environment.rb desabilitamos o ActiveRecord na nossa aplicação:


Rails::Initializer.run do |config|
  ...
  config.frameworks -= [ :active_record ]
  ...
end

Porém, com essa configuração o will_paginate não funciona, dando o seguinte erro:

undefined method `will_paginate'

Isso ocorre porque, ao carregar, o will_paginate insere alguns métodos em ActiveRecord::Base. Quando o ActiveRecord não está presente, o will_paginate simplesmente não carrega.  Isso é, no mínimo, estranho, já que o will_paginate funciona perfeitamente sem o ActiveRecord. Seria de se esperar que o will_paginate, nessa configuração sem ActiveRecord, carregasse normalmente, porém sem os métodos inseridos em ActiveRecord::Base (obviamente). Mas não é isso que ocorre, como podemos ver na linha abaixo no arquivo lib/will_paginate.rb da gem do will_paginate, responsável por habilitar o will_paginate:


...
if defined?(Rails) and defined?(ActiveRecord) and defined?(ActionController)
  WillPaginate.enable
end

De qualquer forma, a solução é bastante simples. Basta fazer a chamada a WillPaginate.enable_actionpack no arquivo config/environment.rb que tudo funcionará normalmente:


Rails::Initializer.run do |config|
  ...
  config.frameworks -= [ :active_record ]
  ...
  config.gem 'mislav-will_paginate',
    :lib => 'will_paginate', :source => 'http://gems.github.com', :version => '2.3.8'
end

WillPaginate.enable_actionpack

[Rodolfo Carvalho] Palestra de Python e Desenvolvimento Web no FLISOL Rio de Janeiro

Tuesday, April 21st, 2009

No dia 25 de abril de 2009, sábado, acontecerá o Festival Latino Americano de Instalação de Software Livre (FLISOL) na Universidade Estadual do Rio de Janeiro. O evento reunirá grupos locais de expressão na área de Software Livre que conjuntamente disseminarão a filosofia, cultura e conhecimento sobre o movimento de Software Livre.
Com uma recheada grade de palestras, o FLISOL contará também com a presença da PythOnRio representada por Luiz Guilherme Aldabalde que apresentará a palestra técnica “Entendendo Framework Web com Python”.
Definitivamente esta é uma grande oportunidade para aprender e experimentar o que há de mais interessante e inovador em matéria de Software Livre. Compareça! E não deixe de levar o seu computador!

[Original em http://pythonrio.org/palestra-de-python-e-desenvolvimento-web-no-f]

[Felipe Santiago] Smarty, Templates, MVC e PHP

Monday, April 20th, 2009

Este é o meu primeiro post aqui no StartAPP, e para começar, irei falar desta incrível ferramenta que é o Smarty. Se for usado da forma correta, facilitará muito a sua vida de desenvolvedor e depois que se aprende a usar o Smarty, nunca mais se deseja usar outra coisa.

Smarty template engine

Antes de falar como o Smarty funciona vamos entender o por quê de se utilizar um sistema de templates. Seja qual for a linguagem que você trabalha, é fundamental fazer a separação de código em camadas, separar a camada de apresentação da camada de controle e a camada de controle da camada de dados. Essa forma de separação do código é chamada MVC (Model – View – Controller) e o Smarty trabalha essencialmente na camada de apresentação, que chamaremos de view daqui para frente.

Pretendo escrever uma série de posts que expliquem como se trabalhar em camadas com PHP e como se ter o máximo de performance em aplicações contruídas nessa arquitetura, mas por hora vamos ficar com a nossa view.

Em nosso caso, a view será a camada responsável por renderizar um documento HTML, utilizando algumas marcações que permitem recuperar e exibir o conteúdo dinâmico da sua aplicação. Imagine que precisemos mostrar uma listagem de fotos cadastradas em um banco de dados qualquer. No exemplo abaixo, temos o código HTML e código PHP no mesmo script:

$foto = new Foto();
$fotos = $foto->getFotos();
while(list($id, $foto) = each($fotos)){
	echo "<div class='fotosDestaque'>";
	echo "<h2>";
	echo "<a href='".$foto->getFotoId()."'>".$foto->getEvento()->getNome()."</a>";
	echo "</h2>";
	echo "<div class='fotoContainner'>";
	echo "<img src='".$foto->getThumb()."' />";
	echo "</div>";
	echo "</div>";
}

Este exemplo resolveria o problema de listar as fotos, mas seria a melhor solução ? Imagine que um cliente queira no futuro, que a mesma listagem de fotos seja exibida em outros dispositivos (iPhone, por exemplo) e que possa ser consumida por outros sites, sob a forma de serviço. O conteúdo terá que ser disponibilizado em diversas formas, e para fazer isso, teremos que replicar o script que recupera e lista as fotos, alterando somente a parte que tem o HTML, para se adequar ao tipo de mídia que irá consumir.

Se em algum momento precisarmos fazer uma alteração na foto, como por exemplo adicionar ou remover um campo da tabela de dados, teremos que alterar diversos scripts e é exatamente nesse ponto que os problemas começam a acontecer. Fazer manuntenção de um código que tem regras de negócio e HTML juntos se torna inviável. Para resolver esse problema, devemos separar o código PHP do HTML e o Smarty faz isso de forma brilhante.

O Smarty trabalha com um conceito de template, que é compilado e processado em tempo de execução pelo PHP. Sendo assim, precisamos de um script que recupera os dados e passa para o template que possui uma séria de tags responsáveis por, entre outras coisas, listar e exibir estes dados.

Você pode ver a documentação completa do smarty em português aqui, e pode ver como utilizar algumas dessas tags que ele disponibiliza lendo esse post do Ciro Feitosa

Voltando ao exemplo das fotos, vamos ver como seria esta rotina utilizando o Smarty para mostrar a listagem de fotos. Agora temos um script PHP que recupera e passa para o template os dados das fotos. Não temos mais código HTML no meio do script e por isso podemos chamá-lo de controller. Então, o controller recupera, trata os dados e carrega a view, responsável por exibir o conteúdo, nesse caso o arquivo template fotos.tpl. Veja como seria o controller:

// instacia o Smarty
$smarty = new Smarty;
 
// cria um array que armazena os dados que são passados para o template
$to_smarty = array();
 
$foto = new Foto();
$fotos = $foto->getFotos();
 
// lista as fotos
while(list($id, $foto) = each($fotos)){
	$to_smarty[$id]['evento'] = $foto->getEvento()->getNome();
	$to_smarty[$id]['thumb'] = $foto->getThumb();
}
 
// cria uma nova váriavel que será usada no template
$smarty->assign('fotos', $to_smarty);
 
// processa e exibe o template
$smarty->display('fotos.tpl');

Veja agora como seria a view fotos.tpl:

{foreach item='foto' key='id' from=$fotos}
	<div class="fotosDestaque">
		<h2>
			<a href="fotos/{$id}">{$foto.evento}</a>
		</h2>
		<div class="fotoContainner">
			<img src="{$foto.thumb}" alt="" />
		</div>
	</div>
{/foreach}

Ao acessar a url que remetesse ao controller (por exemplo /fotos.php), teríamos a mesma listagem de fotos. Mas aproveitando o que o Smarty nos oferece, poderíamos ter uma view para cada forma de entrega do seu conteúdo: uma view responsável por renderizar o conteúdo para o iPhone, outra para gerar XML, e tudo isso sem replicar uma única linha de código. Poderíamos ter um HTMLer ou até mesmo um designer fazendo as views, pois as marcações do Smarty são simples e de fácil entendimento. Agora podemos alterar a regra de negócio no controller sem precisar modificar as nossas views.

É nesse ponto que o Smarty se torna indispensável no desenvolvimento de aplicações web em PHP. Você vai economizar tempo e recurso, além de responder de forma rápida e eficiente as modificações propostas por clientes.

[Felipe Santiago] Smarty, Templates, MVC e PHP

Monday, April 20th, 2009

Este é o meu primeiro post aqui no StartAPP, e para começar, irei falar desta incrível ferramenta que é o Smarty. Se for usado da forma correta, facilitará muito a sua vida de desenvolvedor e depois que se aprende a usar o Smarty, nunca mais se deseja usar outra coisa.

Smarty template engine

Antes de falar como o Smarty funciona vamos entender o por quê de se utilizar um sistema de templates. Seja qual for a linguagem que você trabalha, é fundamental fazer a separação de código em camadas, separar a camada de apresentação da camada de controle e a camada de controle da camada de dados. Essa forma de separação do código é chamada MVC (Model - View - Controller) e o Smarty trabalha essencialmente na camada de apresentação, que chamaremos de view daqui para frente.

Pretendo escrever uma série de posts que expliquem como se trabalhar em camadas com PHP e como se ter o máximo de performance em aplicações contruídas nessa arquitetura, mas por hora vamos ficar com a nossa view.

Em nosso caso, a view será a camada responsável por renderizar um documento HTML, utilizando algumas marcações que permitem recuperar e exibir o conteúdo dinâmico da sua aplicação. Imagine que precisemos mostrar uma listagem de fotos cadastradas em um banco de dados qualquer. No exemplo abaixo, temos o código HTML e código PHP no mesmo script:

$foto = new Foto();
$fotos = $foto->getFotos();
while(list($id, $foto) = each($fotos)){
	echo "<div class='fotosDestaque'>";
	echo "<h2>";
	echo "<a href='".$foto->getFotoId()."'>".$foto->getEvento()->getNome()."</a>";
	echo "</h2>";
	echo "<div class='fotoContainner'>";
	echo "<img src='".$foto->getThumb()."' />";
	echo "</div>";
	echo "</div>";
}

Este exemplo resolveria o problema de listar as fotos, mas seria a melhor solução ? Imagine que um cliente queira no futuro, que a mesma listagem de fotos seja exibida em outros dispositivos (iPhone, por exemplo) e que possa ser consumida por outros sites, sob a forma de serviço. O conteúdo terá que ser disponibilizado em diversas formas, e para fazer isso, teremos que replicar o script que recupera e lista as fotos, alterando somente a parte que tem o HTML, para se adequar ao tipo de mídia que irá consumir.

Se em algum momento precisarmos fazer uma alteração na foto, como por exemplo adicionar ou remover um campo da tabela de dados, teremos que alterar diversos scripts e é exatamente nesse ponto que os problemas começam a acontecer. Fazer manuntenção de um código que tem regras de negócio e HTML juntos se torna inviável. Para resolver esse problema, devemos separar o código PHP do HTML e o Smarty faz isso de forma brilhante.

O Smarty trabalha com um conceito de template, que é compilado e processado em tempo de execução pelo PHP. Sendo assim, precisamos de um script que recupera os dados e passa para o template que possui uma séria de tags responsáveis por, entre outras coisas, listar e exibir estes dados.

Você pode ver a documentação completa do smarty em português aqui, e pode ver como utilizar algumas dessas tags que ele disponibiliza lendo esse post do Ciro Feitosa

Voltando ao exemplo das fotos, vamos ver como seria esta rotina utilizando o Smarty para mostrar a listagem de fotos. Agora temos um script PHP que recupera e passa para o template os dados das fotos. Não temos mais código HTML no meio do script e por isso podemos chamá-lo de controller. Então, o controller recupera, trata os dados e carrega a view, responsável por exibir o conteúdo, nesse caso o arquivo template fotos.tpl. Veja como seria o controller:

// instacia o Smarty
$smarty = new Smarty;
 
// cria um array que armazena os dados que são passados para o template
$to_smarty = array();
 
$foto = new Foto();
$fotos = $foto->getFotos();
 
// lista as fotos
while(list($id, $foto) = each($fotos)){
	$to_smarty[$id]['evento'] = $foto->getEvento()->getNome();
	$to_smarty[$id]['thumb'] = $foto->getThumb();
}
 
// cria uma nova váriavel que será usada no template
$smarty->assign('fotos', $to_smarty);
 
// processa e exibe o template
$smarty->display('fotos.tpl');

Veja agora como seria a view fotos.tpl:

{foreach item='foto' key='id' from=$fotos}
	<div class="fotosDestaque">
		<h2>
			<a href="fotos/{$id}">{$foto.evento}</a>
		</h2>
		<div class="fotoContainner">
			<img src="{$foto.thumb}" alt="" />
		</div>
	</div>
{/foreach}

Ao acessar a url que remetesse ao controller (por exemplo /fotos.php), teríamos a mesma listagem de fotos. Mas aproveitando o que o Smarty nos oferece, poderíamos ter uma view para cada forma de entrega do seu conteúdo: uma view responsável por renderizar o conteúdo para o iPhone, outra para gerar XML, e tudo isso sem replicar uma única linha de código. Poderíamos ter um HTMLer ou até mesmo um designer fazendo as views, pois as marcações do Smarty são simples e de fácil entendimento. Agora podemos alterar a regra de negócio no controller sem precisar modificar as nossas views.

É nesse ponto que o Smarty se torna indispensável no desenvolvimento de aplicações web em PHP. Você vai economizar tempo e recurso, além de responder de forma rápida e eficiente as modificações propostas por clientes.

[Igor Macaubas] 4o encontro Scrum user-group Recife: como foi?

Monday, April 20th, 2009

Fiz um relato no blog do Scrum user-group de Recife, falando como foi o nosso 4o encontro. Neste encontro, apresentei o caso de sucesso de implementação do Scrum na Provider Sistemas, empresa que já tinha MPS.BR nível G no início da implementação do Scrum, e terminou no mês de Março/2009 sendo avaliada e subindo o nível da sua avaliação para o nível F.

Para mim, falar desse case foi mais do que uma vitória, pois estive na empresa desde o início do processo de avaliação – tanto para o nível G como para o nível F, e participei ativamente da implantação do Scrum, e da batalha para manter o MPS.BR aderente ao nosso processo!

Confiram o post lá no blog do scrum.org.br!

[Rafael Biriba] Host Tracker: Monitoração de Servidores

Sunday, April 19th, 2009

 

Host Tracker: http://host-tracker.com/

Host Tracker: http://host-tracker.com/

Bom, se você anda atrás de algum programa ou site que faça a monitoração de uptime de seu servidor, lhe apresento o Host Tracker !

O serviço é gratuito, com alguns recursos extras, caso resolva assinar algum plano. Após criar uam conta no site, é possível adicionar servidores para monitoração. Na verdade, basta apontar qualquer URL válida que o host-tracker irá monitorar de tempo em tempo, definido por você !

Ele também um pequeno banner, para você colocar em seu site, como no exemplo abaixo, onde temos a monitoração de rafaelbiriba.com:

server monitor

A imagem é atualizada automaticamente de acordo com o seu uptime real. Clicando no banner, é possível ver detalhes como tempo de monitoração, tempo total de downtime, e etc…

No site ainda é possível configurar os alertas e relatórios ( semanais, mensais e anuais ). Os alertas são os mais importantes, pois avisa quando seu servidor ou seu site está inacessível e ainda mostra em que lugar que não foi possível acessa-lo. Atualmente a host-tracker conta com mais de 30 pontos de verificação, espalhados pelo mundo todo. A lista pode ser visualizada em http://host-tracker.com/our-monitoring-network/

Para quem quiser verificar os planos este é o link: http://host-tracker.com/order-page/, algumas vantagens como relatório diário e verificação de conteúdo podem ser liberadas de acordo com o plano que você escolher ! Experimente um desses planos habilitando o período de teste de 30 dias.

Para ativar a monitoração, primeiro eu recomendo se cadastrar em: http://host-tracker.com/register/ e depois criar um novo monitor. Mas para os apressados, aqui tem um link para criação direto de um banner: http://host-tracker.com/fget_uptime_button/.

Então é isso. Monitore seu site, e saiba exatamente quando ele estiver inacessível. Assim, você poderá correr para resolver o problema, antes mesmo do problema correr para você ! E ainda, coloque o banner em seu site, e mostre a todo mundo, o quão estável é o servidor em que seu site está hospedado !

=)

[Tiago Motta] Esperando o resultado de uma chamada assíncrona no Watir

Thursday, April 16th, 2009

Em alguns casos quando uma determinada requisição assíncrona demora para retornar, o teste de aceitação implementado com Watir pode falhar. Principalmente quando os testes estão rodando em alguma ferramenta de integração contínua.

Para evitar essa falha irritante, o usual é colocar alguns sleeps após as ações que disparam as chamadas ajax. Contudo, isso não garante que o teste não vá falhar, especialmente se o sleep for baixo. Em contrapartida se forem colocado muitos sleeps altos poderá haver uma demora muito grande para rodar todos os testes.

Uma solução possível é esperar que um determinado elemento html seja inserido ou removido da página para então continuar executando os testes. Para isso implementei um método genérico que recebe um bloco de verificação. Veja o exemplo de uso dele:

espera { @browser.text.include? 'Ajax retornado' }

O código do método é bem simples e está descrito abaixo. Ele recebe um bloco assumindo que quando este retornar verdadeiro significa que a espera deve terminar, caso contrário ele continuará esperando e verificando, com um timeout de 30 segundos.

def espera  Timeout::timeout(30) do    while not yield      sleep 1     end  endend

[Christiane Melcher] Seminário INFO: Redes Sociais – “O poder dos aplicativos”

Thursday, April 16th, 2009

No dia 30 de março eu fui a São Paulo participar do Seminário de Redes Sociais da Revista INFO Exame numa mesa redonda sobre “O Poder dos Aplicativos nas Redes Sociais”.

apresentação dos participantes

Participantes da mesa:

Christiane Melcher – arquiteta de informação da Globo.com, Guilherme Stocco – gerente de desenvolvimento da Microsoft Brasil, Rogério Bonfim – CEO da VirtualNET, Vitor Prado – diretor da HiperSocial. Mediadora: Débora Fortes – diretora de redação da revista INFO.

Foi muito legal ser convidada para um evento como esse para falar do case do aplicativo Amazonia.vc, que a equipe de aplicativos de jornalismo (equipe A3) da Globo.com, desenvolveu para o Orkut e lançou em setembro de 2008 em parceria com o pessoal do Fantástico. Quer saber mais? Veja esse post aqui.

case: aplicativo Amazonia.vc

Quando lançado, o projeto alcançou 1 milhão de protestos nas primeiras 17 horas no ar e hoje, 6 meses depois, são 45 milhões de protestos.

Essa integração entre aplicativo, portal e tv fazem toda a diferença. Pela primeira na Globo.com levamos dados de um aplicativo social para um portal tipicamente editorial, o globoamazonia.com. Tanto o mapa interativo com os pontos de desmatamento e queimadas, quanto o ranking de protestos dos usuários são puxados diretamente do app.

twitter + app + amazonia + pesquisa

Depois do lançamento disponibilizamos um mashup do twitter no aplicativo e fizemos um módulo administrativo onde os editores podem colocar notícias com foto ou vídeo georeferenciadas no mapa que também aparecem no mapa do app e do portal Globo Amazônia. A tv continua fazendo reportagens em programas como Fantástico, Profissão Repórter e Globo Repórter e em telejornais como Jornal da Globo, Globo Rural e Jornal Nacional. Além disso também exibe o ABC da Amazônia, pequenas “vinhetas” distribuídas pela programação da Globo.

Falar de um projeto como esse sendo reconhecido como case e representar toda a equipe da Globo.com responsável pelo projeto, foi uma honra!

páginas mais acessadas no orkut

Além de falar sobre o Amazonia.vc, também falei de alguns pontos importantes para se levar em consideração ao projetar um aplicativo em uma rede social. É preciso levar em consideração o ranking de páginas mais acessadas no Orkut, onde o primeiro lugar é o álbum de fotos, o segundo o scrapbook e em terceiro o perfil. Por isso, é fundamental para o sucesso do projeto pensar em todas as “partes” que compõem um aplicativo, não só no canvas (página do aplicativo em sí). É preciso pensar como o aplicativo será exibido no perfil dos usuários que o instalaram, afinal, essa é uma porta de entrada muito importante porque as pessoas que entram no perfil de alguém com o aplicativo instalado são possíveis usuários do app. Por isso esse pedacinho do app no perfil é tão importante.

O texto e imagem do app no diretório de aplicativos também devem ser claros e vendedores. Além disso, também é preciso pensar em como as funcionalidades serão exibidas no caso de usuários do tipo viewer e owner. Viewer é considerado o usuário que está olhando a página do aplicativo instalado no perfil de outra pessoa e não no seu próprio e o owner é o usuário que está vendo a página do aplicativo em seu próprio perfil. Para facilitar o entendimento, vamos dar um exemplo. Imagina eu, Chris, entrando no perfil do Eduardo e vendo o Amazonia.vc dele. Ao entrar na tab “protestos”, eu devo ler “Protestos do Eduardo”. Já, ao entrar na mesma tab do meu aplicativo, instalado no meu perfil, devo ler “Meus protestos”. Um exemplo simples de mudança de label. Mas, vale lembrar que além de textos diferentes, a visualização dos dados e até as funcionalidades também podem ser diferentes. Logo, a complexidade vai aumentando com as diferenças e o tratamento que o sistema deve dar a elas.

qualquer app precisa ser fácil de usar

Para completar, um app precisa ser viral e simples, fácil de usar. Não adianta o usuário entrar e não entender nada e sair na hora que entrou porque não conseguiu fazer nada. No caso de Amazônia, a viralidade era discutida, por ser um app de cunho social. Porém, como a causa era nacional e importante, e tinha um apelo social (protestos), acabou funcionando bem mais até do que a equipe imaginava.

As novas funcionalidade de integração do MSN com aplicativos, outros apps como “Eu Vou” e “Eleições 2008”, a participação da classe C nas redes sociais, e como fazer do app um negócio também foram temas abordados na mesa.


[Christiane Melcher] Seminário INFO: Redes Sociais – “O poder dos aplicativos”

Thursday, April 16th, 2009

No dia 30 de março eu fui a São Paulo participar do Seminário de Redes Sociais da Revista INFO Exame numa mesa redonda sobre “O Poder dos Aplicativos nas Redes Sociais”.

apresentação dos participantes

Participantes da mesa:

Christiane Melcher – arquiteta de informação da Globo.com, Guilherme Stocco – gerente de desenvolvimento da Microsoft Brasil, Rogério Bonfim – CEO da VirtualNET, Vitor Prado – diretor da HiperSocial. Mediadora: Débora Fortes – diretora de redação da revista INFO.

Foi muito legal ser convidada para um evento como esse para falar do case do aplicativo Amazonia.vc, que a equipe de aplicativos de jornalismo (equipe A3) da Globo.com, desenvolveu para o Orkut e lançou em setembro de 2008 em parceria com o pessoal do Fantástico. Quer saber mais? Veja esse post aqui.

case: aplicativo Amazonia.vc

Quando lançado, o projeto alcançou 1 milhão de protestos nas primeiras 17 horas no ar e hoje, 6 meses depois, são 45 milhões de protestos.

Essa integração entre aplicativo, portal e tv fazem toda a diferença. Pela primeira na Globo.com levamos dados de um aplicativo social para um portal tipicamente editorial, o globoamazonia.com. Tanto o mapa interativo com os pontos de desmatamento e queimadas, quanto o ranking de protestos dos usuários são puxados diretamente do app.

twitter + app + amazonia + pesquisa

Depois do lançamento disponibilizamos um mashup do twitter no aplicativo e fizemos um módulo administrativo onde os editores podem colocar notícias com foto ou vídeo georeferenciadas no mapa que também aparecem no mapa do app e do portal Globo Amazônia. A tv continua fazendo reportagens em programas como Fantástico, Profissão Repórter e Globo Repórter e em telejornais como Jornal da Globo, Globo Rural e Jornal Nacional. Além disso também exibe o ABC da Amazônia, pequenas “vinhetas” distribuídas pela programação da Globo.

Falar de um projeto como esse sendo reconhecido como case e representar toda a equipe da Globo.com responsável pelo projeto, foi uma honra!

páginas mais acessadas no orkut

Além de falar sobre o Amazonia.vc, também falei de alguns pontos importantes para se levar em consideração ao projetar um aplicativo em uma rede social. É preciso levar em consideração o ranking de páginas mais acessadas no Orkut, onde o primeiro lugar é o álbum de fotos, o segundo o scrapbook e em terceiro o perfil. Por isso, é fundamental para o sucesso do projeto pensar em todas as “partes” que compõem um aplicativo, não só no canvas (página do aplicativo em sí). É preciso pensar como o aplicativo será exibido no perfil dos usuários que o instalaram, afinal, essa é uma porta de entrada muito importante porque as pessoas que entram no perfil de alguém com o aplicativo instalado são possíveis usuários do app. Por isso esse pedacinho do app no perfil é tão importante.

O texto e imagem do app no diretório de aplicativos também devem ser claros e vendedores. Além disso, também é preciso pensar em como as funcionalidades serão exibidas no caso de usuários do tipo viewer e owner. Viewer é considerado o usuário que está olhando a página do aplicativo instalado no perfil de outra pessoa e não no seu próprio e o owner é o usuário que está vendo a página do aplicativo em seu próprio perfil. Para facilitar o entendimento, vamos dar um exemplo. Imagina eu, Chris, entrando no perfil do Eduardo e vendo o Amazonia.vc dele. Ao entrar na tab “protestos”, eu devo ler “Protestos do Eduardo”. Já, ao entrar na mesma tab do meu aplicativo, instalado no meu perfil, devo ler “Meus protestos”. Um exemplo simples de mudança de label. Mas, vale lembrar que além de textos diferentes, a visualização dos dados e até as funcionalidades também podem ser diferentes. Logo, a complexidade vai aumentando com as diferenças e o tratamento que o sistema deve dar a elas.

qualquer app precisa ser fácil de usar

Para completar, um app precisa ser viral e simples, fácil de usar. Não adianta o usuário entrar e não entender nada e sair na hora que entrou porque não conseguiu fazer nada. No caso de Amazônia, a viralidade era discutida, por ser um app de cunho social. Porém, como a causa era nacional e importante, e tinha um apelo social (protestos), acabou funcionando bem mais até do que a equipe imaginava.

As novas funcionalidade de integração do MSN com aplicativos, outros apps como “Eu Vou” e “Eleições 2008”, a participação da classe C nas redes sociais, e como fazer do app um negócio também foram temas abordados na mesa.