sábado, 21 de julho de 2012

Como acentuar palavras rapidamente no iPad

Quem usa o iPad ou iPhone por algum tempo, logo descobre como funciona a acentuação no sistema. Basta segurar a tecla por 1 segundo que aparecem as variantes para aquela letra. Se você não está familiarizado com isso, veja essa dica do Blog do iPhone.

Esse modo de acentuar é bastante intuitivo (logo o usuário descobre como funciona), mas nem sempre é prático. Ao digitar textos mais longos irrita ter que ficar esperando 1 segundo para o acento aparecer. Pois bem, existe uma forma mais rápida de se fazer isso: basta clicar na letra e deslizar rapidamente pra cima.

Ao clicar em uma letra e deslizar rapidamente pra cima aparecem as variações mais comuns dela. Por exemplo, ao apertar a letra "a", e deslizar pra cima ela fica "á". Deslizando pra cima e pro lado pode-se escolher "ã", "à" e "â".

Infelizmente isso só funciona no iPad, mas faz sentido, é onde mais digitamos. Depois que descobri isso a digitação ficou bem mais rápida.

sábado, 14 de julho de 2012

Como adaptar seu site para telas retina

Telas com alta densidade de pixels, chamadas pela Apple de "telas Retina", já são uma realidade. Temos smartphones, tablets e notebooks com essa incrível resolução.

Se considerarmos a porcentagem de visitantes utilizando essas telas, pode parecer pouco, mas esse é um número que só vai crescer a cada dia. Como diz o Marco Arment, esses visitantes representam o futuro. Não é como a porcentagem de pessoas utilizando o Internet Explorer 6, que só tende a diminuir, nesse caso o número só vai aumentar.

Agora, como adequar seu site para essas telas? Como primeiro passo, siga esse guia. A biblioteca Retina.js pode lhe ajudar a prover imagens de alta resolução apenas em dispositivos compatíveis, economizando largura de banda para os outros dispositivos.

Alterar as imagens do site é apenas o primeiro passo. Com isso feito, cabe a você identificar as áreas que não estão com boa aparência. Talvez trocar a fonte utilizada, ajustar outros elementos do site... mas isso só vendo o site em uma tela Retina pra poder dizer.

quinta-feira, 28 de junho de 2012

Google Chrome para iPhone e iPad

O Google acaba de lançar o Chrome para iPhone e iPad.

O Chrome utiliza a mesma engine de renderização do Safari, pois a Apple proibe que aplicativos usem outra engine. Dessa forma, o Google não pode utilizar por exemplo sua engine de javascript V8 e nem mesmo fazer outras otimizações no WebKit.

Só resta ao Google se dedicar a criar uma interface muito boa, e foi justamente isso que fizeram. A interface é claramente inspirada no WebOS, não é a toa que recentemente contrataram vários funcionários que trabalharam no desenvolvimento do finado sistema da Palm/HP.

Para alterar entre as guias, as telas são apresentadas como um baralho de cartas. Para eliminar uma guia, basta arrastá-la para "fora do baralho". As imagens abaixo mostram o funcionamento das guias (clique para ampliar).

Outro recurso interessante é a troca rápida de abas (também inspirado no WebOS). Pode-se arrastar a tela na direção da borda para o centro para mudar entre as abas. É necessário iniciar o movimento bem no canto da tela, vindo de fora da tela para dentro.


Além do visual interessante, ele também conta com recursos como sincronização de abas, sincronização de favoritos, e o famoso modo anônimo. A velocidade dele me parece ser semelhante ao Safari, mas preciso testar mais para afirmar com certeza.

O único ponto negativo é a limitação imposta pela Apple, não permitindo que navegadores de terceiros sejam definidos como o navegador padrão. Já passou da hora dela remover essa limitação!

Veja abaixo o vídeo de divulgação do Google:

O download do Chrome para iOS (iPhone e iPad) pode ser feito pela App Store.

quarta-feira, 27 de junho de 2012

Como será o Google Glass

Hoje foi apresentado o Project Glass na conferência Google I/O. Sergey Brin, cofundador do Google, apareceu no palco utilizando os óculos especiais e logo a seguir iniciou uma videoconferência com paraquedistas, que também estavam utilizando esses óculos. Pudemos, enfim, ter uma visão mais realista de o que é o Google Glass.

A apresentação foi bem interessante, com os paraquedistas saltando e mostrando as imagens ao vivo. Também foi mostrado o uso dos óculos em outras cenas do cotidiano. Porém, o que me chamou a atenção é que o que foi mostrado foram apenas óculos com câmera, nada mais.

Veja o vídeo mostrando o que deveria ser o Project Glass:

Agora, assista a apresentação de hoje (parte dela):

O que deve ser o Project Glass

O conceito do Project Glass é fantástico, oferece enormes possibilidades. Os pontos fundamentais que vejo são:
  • poder executar ações instantaneamente, sem ter que tirar o celular do bolso;
  • aumentar as informações que temos no mundo real (realidade aumentada);
  • ter uma ótima interface homem-computador. O principal meio de entrada de comandos é via voz, e isso deve ser muito bom. Imagine uma Siri MUITO melhorada;
  • mesclar-se com o indivíduo. Ele tem que ser imperceptível, o ideal é podermos usar sempre e não algo que precisamos ficar lembrando de colocar. Se ele tiver o mesmo tamanho/formato de um óculos normal, seria perfeito. Poderíamos ao invés de usar simples óculos de grau utilizar os super óculos.
Até o momento só foram mostrados óculos que gravam e reproduzem vídeos, e têm uma interface por toque (na lateral). Certamente o Google já tem muitos outros recursos, mas ainda vai demorar anos até termos óculos semelhantes ao mostrado no primeiro vídeo. Muitos estudos serão necessários até atender os pontos fundamentais que citei acima. Mas, acredito que esse é um caminho sem volta.

Resumindo

Pudemos ter uma prévia de como funciona o Google Glass e fica claro que o Google ainda tem muito trabalho pela frente. Os óculos apresentados hoje ainda são uma versão bem inicial do projeto, que ainda não atendem a requisitos fundamentais. Na forma como ele está hoje, não teria a aceitação e o impacto que o Project Glass almeja. Seria apenas um item interessante, mas que jamais seria utilizado no dia-a-dia.

Mas eu vejo futuro nesse projeto. Quem sabe um dia eu possa trocar meus óculos de grau por um desses.

Novo layout do site

Finalmente alterei o layout do site. Após alguns anos com um layout muito feio, estava na hora de mudar. Ainda estou testando esse novo layout e fazendo pequenos ajustes. Espero que gostem!

Outra novidade é que adicionei um formulário de contato. Caso você queira enviar uma mensagem, pode enviar por meio desse formulário ou pelo Twitter. Aqui na barra lateral do site têm os links para o formulário de contato, minha conta no Github e Twitter e o link para o feed RSS.

sexta-feira, 22 de junho de 2012

Novos Mac Pro e tela retina só em 2013/2014

Recentemente comentei que iria demorar algum tempo até termos um monitor de 27 polegadas com tela Retina. Só teremos uma tela dessas quando as portas Thunderbolt se tornarem mais rápidas. O Marco Arment publicou hoje um artigo que também fala sobre isso.

Segundo ele, é esperado que entre o final de 2013 e início de 2014 o Thunderbolt seja atualizado, na mesma época a Apple deve lançar os novos Mac Pros e os novos monitores.

Leia o artigo dele para maiores detalhes: Predicting the next Mac desktops.

quinta-feira, 21 de junho de 2012

Usuários do Windows Phone 7 não terão upgrade pro WP8

Finalmente a Microsoft confirmou o que a maioria já suspeitava, os celulares com Windows Phone 7 não serão atualizados para a nova versão do sistema, a versão 8.

Essa decisão tem grandes implicações para os desenvolvedores, para os usuários e para a própria Microsoft. Para mim, é um erro não suportar os aparelhos que estão atualmente no mercado.

Um desenvolvedor antes de criar o aplicativo precisa pensar no seu público alvo e decidir quais aparelhos serão suportados. Todos os aparelhos lançados até o momento suportam apenas o Windows Phone 7, isso quer dizer que a única opção viável é suportar o WP7. Desenvolvedores só poderão utilizar recursos do WP8 quando a quantidade de usuários com a nova versão for significamente maior que com a versão antiga, o que certamente vai levar alguns anos.

Para o usuário, o que a Microsoft está fazendo é uma falta de consideração justamente com os clientes que ela deveria mais valorizar. São esses clientes que resolveram investir em uma plataforma nova, com poucos aplicativos.

Para a Microsoft, o maior problema é a estagnação da plataforma, afinal, poucos desenvolvedores irão ver vantagem em focar na nova versão. Além disso, ela perde a confiança justamente dos seus clientes mais importantes.

A situação só deve se normalizar quando a quantidade de celulares com o WP8 for bastante superior aos com WP7. Isso deve demorar alguns anos, afinal, não vejo nenhum grande crescimento nas vendas de celulares com esse sistema. Até lá, todo o ecossistema estará estagnado na velha versão 7.
Lumia 900 has a bright future, thanks to Windows Phone 7, right, Steve?
Imagem originalmente postada aqui. Dica do John Gruber.

terça-feira, 12 de junho de 2012

Um monitor de 27" com tela retina, só daqui a alguns anos

A muito tempo existiam rumores que a Apple iria adotar telas retina na sua linha de notebooks. Agora, finalmente, esse rumor se tornou realidade. O novo MacBook Pro conta com uma resolução incrível de 2880 x 1800 pixels.

Uma das grandes dúvidas era como a Apple iria adotar as telas retinas em seus computadores. Alguns diziam que ela simplesmente iria dobrar a resolução, outros achavam que ela não iria dobrar, mas sim multiplicar por uma taxa menor (digamos, 1,5). Nesse novo MacBook a Apple simplesmente dobrou a resolução (de 1440 x 900 para 2880 x 1800).

Fazendo as contas

Agora, vamos fazer uma conta simples...

No review do Thunderbolt Display de 27 polegadas feito pelo Anandtech eles citam que o controlador Thunderbolt suporta dois canais, cana um transmitindo 10Gbps de dados em cada direção. Ou seja, o máximo de dados transmitidos do computador para o monitor é de 20Gbps.

No mesmo artigo é feito o cálculo de quanta banda consome esse monitor. Segundo esse cálculo, o monitor, que tem resolução de 2560 x 1440 pixels, utiliza 6,75Gbps de dados.

Se levarmos em conta que uma tela retina dobra a resolução tanto na vertical como na horizontal, o total de pixels é quadruplicado. Logicamente, a quantidade de dados utilizada também é quadruplicada. A banda utilizada pelo monitor atual é de 6,75Gbps, logo, se ele contar com uma tela retina utilizará  27Gbps (6,75 * 4).

Veja, o Thunderbolt consegue fornecer apenas 20Gbps, enquanto que um monitor de 27" com tela retina precisaria de 27Gbps.

O que esperar

Segundo os dados que temos, fica claro que o Thunderbolt atual não seria adequado para uma tela retina desse tamanho. Além disso, a própria placa de vídeo do novo MacBook Pro não iria suportar a resolução desse monitor. Essa placa de vídeo suporta até 3840x2160 enquanto que o monitor teria 5120x2880.

A solução da Apple pode ser: atualizar o controlador Thunderbolt (o que faria com que os micros atuais não suportassem esse novo monitor) ou não duplicar a resolução (perdendo qualidade e provavelmente complicando o desenvolvimento).

Logicamente, a Apple também terá outros desafios pela frente, como qualidade/durabilidade dos painéis LCD, consumo de energia, processo de fabricação e principalmente custo. 

Infelizmente não será tão cedo que teremos um monitor desses.

domingo, 10 de junho de 2012

Criar senhas usando regras é inútil e inseguro

Semana passada comentei a respeito das senhas vazadas na internet e como evitar problemas nesses casos. Em resumo, a dica é não usar a mesma senha em vários sites e ter uma senha difícil.

Algumas pessoas criam regras para criar uma senha para cada site. Algo do tipo "MyPwd4Facebook" ou até mesmo regras mais complicadas. O problema é que, se a senha é criada usando uma regra, automaticamente ela fica mais fraca. Um dos principais métodos usados para quebrar as senhas criptografadas é o uso de dicionários. Basicamente, é usado um dicionário de senhas conhecidas, aplicando-se variações sobre elas (trocar letras por números, inverter, adicionar ou remover letras).

Um artigo publicado hoje mostra bem como as senhas podem ser quebradas usando um simples ataque via dicionário. Algumas senhas baseadas na palavra "linkedin" que foram quebradas usando esse método:
  • m0c.nideknil
  • pwd4linked
  • mpw4linkedin
  • lsw4linkedin
Como o próprio autor do artigo diz (tradução livre):
"Isto claramente mostra que não importa quão elaborada seja sua senha, se ela for baseada em palavras e regras, mesmo tendo muitas palavras e regras, ela provavelmente será quebrada".
Então, a dica é: sempre use uma senha TOTALMENTE aleatória.

sexta-feira, 8 de junho de 2012

The one password para todos dominar

É frequente ouvirmos notícias de sites que são invadidos e têm as senhas dos usuários roubadas. Apenas nessa semana foram 3 sites que divulgaram ter sua segurança comprometida: o LinkedIn, o eHarmony e o Last.fm.

Toda vez que surge um caso desses a recomendação é a mesma: crie senhas longas, difíceis e principalmente NÃO USE A MESMA SENHA EM TODOS OS SITES.

Você, assim como eu e a maioria das pessoas, provavelmente não vai seguir esse conselho, afinal, decorar  uma senha já é ruim, imagina uma centena. Ainda mais que elas são todas longas e difíceis. O que a maioria das pessoas acaba fazendo é usar uma senha mais segura para sites importantes, e outra fácil para todos os outros que exigem o cadastro mas não ligamos muito.

1Password

Felizmente essa desculpa de não conseguir decorar várias senhas, já não é mais válida. Não precisamos decorar todas as senhas, podemos armazená-las em softwares especializados e decorar apenas uma "chave mestre".

Atualmente estou testando o 1Password. Ele armazena todas as senhas em um local centralizado e melhor ainda, se integra ao navegador e tem aplicativos para iPhone, iPad e Android.

Você não disse que não devo ter apenas uma senha?

Você deve estar se perguntando: se a recomendação é não usar a mesma senha em todos os sites, por que eu iria usar um software desses que guarda tudo com apenas uma senha? E, como posso confiar nesse software?

A diferença nesse caso é que como você precisa decorar apenas uma senha, ela pode ser realmente boa. A sua senha mestre deve ser difícil de ser quebrada. Além disso, ela não é armazenada em nenhum lugar, nem mesmo seu hash.

Os dados do programa são criptografados localmente usando sua senha mestre, e nem mesmo os desenvolvedores do software tem como ler esses dados sem sua senha. Um detalhe importante é que, se você esquecer essa senha, não tem como ler o arquivo. Não existe uma maneira de "recuperar" a senha.

Usando o software

Agora que você já está convencido que é importante ter uma senha segura, vai lá e baixa um software para gerenciar suas senhas. Não precisa ser o 1Password, mas fique atento em como essas senhas são guardadas. Tenha certeza que realmente estão seguras.

Depois de começar a usar o software, altere as senhas dos sites, criando uma senha única para cada um.

Esses softwares normalmente tem geradores de senhas aleatórias, nos quais podemos definir a dificuldade da senha. Faça bom uso desse recurso, afinal, você não vai precisar decorar as senhas.

quarta-feira, 2 de maio de 2012

Atualizando aplicações .NET de forma semelhante ao Google Chrome

O Google Chrome tem uma forma de atualização muito boa, que aos poucos está sendo adotada por várias outras aplicações. A grande vantagem das atualizações do Google Chrome é que elas ocorrem sem a intervenção do usuário e são constantes. Isso garante que o usuário sempre terá a versão mais nova da aplicação.

Pesquisei soluções para aplicações .NET que reproduzissem esse mesmo comportamento, permitindo atualizações constantes e sem a intervenção do usuário. Infelizmente não encontrei nenhuma solução pronta que atendesse minhas necessidades.

A primeira opção, logicamente, foi utilizar o ClickOnce. Mas, devido a suas limitações, ele não me atendeu. A seguir, procurei outras soluções, mas nenhuma atendia necessariamente aquilo que eu queria. Por fim, resolvi desenvolver eu mesmo um componente que resolvesse esse problema. Foi assim que surgiu o AppUpdater (sim, eu sei, esse nome é horrível).

Características do AppUpdater

As principais características do AppUpdater são:
  • as atualizações são feitas via web (download dos arquivos);
  • o processo de atualização não necessita da intervenção do usuário;
  • o tamanho de uma atualização é mínimo. A atualização faz o download apenas das partes modificadas de cada arquivo atualizado (deltas), mesmo em arquivos binários.
Vale ressalta um aspecto muito importante: o tamanho da atualização. O componente fará o possível para baixar a menor quantidade possível de dados.
  • Os novos arquivos são baixados de forma compactada (gzip). Com isso, um executável de 200 kB, fica com cerca de 60 kB;
  • Os arquivos que não foram alterados, não são baixados novamente;
  • No caso de arquivos modificados, apenas as partes alteradas são baixadas (delta). O componente faz o download do delta, aplica na versão antiga do arquivo e gera assim a nova versão. O tamanho do delta obviamente vai depender do que foi modificado. Apenas por curiosidade, adicionei a chamada a um MessageBox em uma aplicação de 200 kB, e o delta dessa alteração ficou com 639 bytes.

Utilizando o componente

Para utilizar o componente, recomendo a leitura da documentação. De forma resumida, o que deve ser feito para utilizá-lo é:
  1. a aplicação deve seguir uma certa estrutura de diretórios pré-determinada;
  2. deve existir um servidor web que irá disponibilizar as atualizações;
  3. a aplicação deve ativar o código que verifica as atualizações.
Para que o componente funcione, o único código necessário é o seguinte:
AutoUpdater autoUpdater = new AutoUpdater(UpdateManager.Default);
autoUpdater.SecondsBetweenChecks = 3600;
autoUpdater.Start();

Concluindo

Não vou repetir aqui o passo-a-passo de como utilizar o componente, acredito que a documentação já trate de todos os assuntos necessários para utilizá-lo.

Se algo não ficou claro, por favor, entre em contato. Eu altero a documentação ou posso criar um tutorial esclarecendo quaisquer dúvidas que surgirem.

Por fim, tenho que agradecer a Fernanda Moratelli que me ajudou no desenvolvimento do AppUpdater!