2009/07/31


Código e Fonte

Um post especial sobre mais uma qualidade do N800 que não mencionei na última listinha de 10 pontos.

Nossos leitores provavelmente já conhecem nossa preocupação com a questão da tipografia, um assunto relativamente recorrente por aqui nos últimos tempos. A vantagem que queria mencionar no N800, é tipográfica!

2009/07/28


Sobre meu N800

Meu tablete de Internete Nokia N800 chegou há quase uma semana. Ainda não sei se juntei experiência o bastante pra escrever um grande review matador, mas pretendo no futuro.

Mas existem algumas particularidades dele que eu não tinha me dado muita conta antes de começar a usar, e que chamam ou que deveriam chamar a atenção das pessoas. Aqui vai uma lista de 10 "pontos" a respeito do referido tablete, o que ele faz e não faz, pra ajudar as pessoas entenderem melhor do que se trata, e talvez me dizerem menos que "eu deveria ter comprado isso ou aquilo".

1_ Ele tem wi-fi. A idéia é ficar ligado na Internet o tempo inteiro, e por wi-fi que geralmente é rápido e barato se vc frequentar os lugares certos. O futuro não é mais apenas "mobile", é "mobile" e "always on". Celulares são "always on", esse produto, assim como outros da Nokia, pretendem explorar o "always on" que foi desbravado meio que inadvertidamente pelos celulares, e curiosamente não é um celular!...

2_ Não é um celular. Poisé, que pena. Muitas passoas se espantam porque estão seguindo esse novo paradigma de que é legal ter um celular cebolão. Eu sou contra, quero um celular mínimo. Por exemplo, não quero que o uso do celular em uma ligação telefônica me atrapalhe em minhas outras atividades com o dispositivo, e pra isso o certo é que o celular seja um dispositivo independente mesmo.

3_ Tem Bluetooth. Isso quer dizer, por exmplo, que vc pode usar um celular violento pra entrar na Internet através dele, se vc precisar muuuito entrar na Internet por celular. Dá pra fazer tudo mais que é possível com bluetooth tb. Usar teclados blutute, usar GPS por bluturfe, trocar pequenos arquivos, isso tudo aí...

4_ Continuando nas conectividades, ele tem uma portinha USB que, além de te permitir ligar como dispositivo escravo no computador (normal...) tem uma gambi que faz funcionar como porta tipo "host", te permitindo ligar todas coisas USBs. Não sei o quão bem isso funciona, mas se aguentar ligar qqr tipo de coisa, como joysticks e o escambau, isso é beeem interessante.

5_ Ele tem zilhões de aplicações, e tem uma tela enorme. É tipo um computadorzinho. Minha impressão é de que não é um celular que quer virar um computador, mas sim um mini computadorzinho, um netbook desidratado. Mas acho q não tem tantas aplicações quanto um iPhone da vida. Não posso julgar, não conheço o mundo os handhelds...

6_ Ele tem um verdadeiro "desktop" quando vc liga. O funcionamento da interface é muito como de uma interface gráfica de computador mesmo, adaptado pra tela touchscreen, com menos restrições do que interfaces de celulares. Celular é muito modal...

7_ Esse ponto é importante. O N800 é multi tarefa, vc pode rodar x aplicativos ao mesmo tempo (a memória é meio pequena, mas dá pra fazer muita coisa). Tem "copiar" e "colar". Vc pode entrar num browser, copiar algo, mandar prum amigo via IM, e depois copiar a resposta dele e jogar num blogger da vida, sei lá. Dá pra ouvir música fazendo outras coisas numa boa. Ouvi dizer que tem telefones e outros handhelds por aí que não funcionam assim. Como viver sem isso??? Deve ser uma vida completamente diferente. E por isso ser algo tão diferente, a comparação do N800 com esses outros aparelhos começa até a perder o sentido.

8_ O browser, baseado em mozilla, tem java e flash. Dá pra tocar vídeo no youtube. E também tem suporte a OGG, e outros aplicativos que só existem porque é uma plataforma de desenvolvimento bastante aberta. O dispositivo meio que caiu nas graças do público a queem era mesmo destinado: gente que curte Linux, e tem perfil de desenvolvedor. É gente que não se importa muito se um certo aplicativo não está funcionando direito, e gente que vai eventualmente resolver problema se ajudar toda a comunidade publicando a solução. Ou seja, ao mesmo tempo tem um pouco de "não é pra quem quer, é pra quem pode", e também "é pra quem quer coisas malucas que você vai ter que fazer pra vc mesmo".

9_ Ainda sobre o universo de desenvolvimento e disponibilidade de aplicativos. Não existem polêmicas sobre o que alguém vai deixar ou não fazerem pra ele. E tem muitas bibliotecas similares ao que existe em desktops. É uma plataforma de desenvolvimento quase tão aberta e convencional quanto em computadores pessoais.

10_ Pra completar 10... Nunca usei celulares "cebolão" nem maçãzão, não sei bem como é a experiência de ir usando ali o touchscreen com diferentes programas... mas estou muito feliz com a idéia de botarem os botões da esquerda ali. Tem o "d-pad", tem um botão que vai pro desktop, tem um botão pra abrir o menu do aplicativo e outros. Ajuda muito. Ah, e não vamos esquecer o suporte que te deixa apoiar o telefone numa mesa a 45 ou a 67.5 graus ((180-45)/2 = 67.5). Outra coisa que não poderia viver sem!!...

Por hoje é só. Vou viajar hoje e aposto q vou passar a noite toda mexendo nele até acabar a pilha!!

2009/07/27


Formatos de arquivo e memórias flash

(Um artigo meio extenso e pouco elaborado sobre formatos de sistema de arquivo e memórias flash. Pode ter uma ou outra informação interessante que eu não soube explorar com a melhor habilidade narrativa possível!...)

Já se estabeleceu em nosso cotidiano o uso de memórias flash para armazenar arquivos. Pequenas e econômicas --- e caras --- elas estão em câmeras digitais, celulares, pendrives, palmtops, e mesmo netbooks. Dá até pra usar simplesmente como um disquetinho, se você tiver leitor de cartão em sua máquina.

Assim como disquetes, fitas e discos rígidos, a memória é antes de mais nada um simples "depósito de bits". Existe um mecanismo de endereçamento que permite a você ler e gravar dados com certas restrições. Mas ninguém lida com essa coisas direto, geralmente as pessoas querem usar são os serviços ofereceidos pelos sistemas operacionais. Os SOs criam arquivos com nome e data e permissões, apagam os arquivos, gerenciam o espaço livre no dispositivo, e ainda tomam algum cuidado pra ver se houve corrupção da memória, e lidam com esses erros.

Para fazer isso tudo é preciso antes decidir qual vai ser o sistema de arquivos utilizado na memória. Quando a gente formata uma partição está fazendo é isso, decidindo o formato, e eventualmente tomando as medidas necessárias pra inicializar essa memória, colocando lá algumas estruturas de dados iniciais pro SO trabalhar com aquele formato.

Diferentes formatos de sistema de arquivos possuem diferentes características, e podem também ser mais adaptados para mídias com diferentes restrições. Alguns vão ser melhores para arquivos maiores ou menores, por exemplo, ou mais ou menos velozes e mais ou menos seguros. As características também incluem limitações aos tamanhos de arquivos e da mídia, e ainda aos nomes dos arquivos (número e tipo de caracteres.)

Essa tabela na Wikipedia compara vários formatos diferentes. Entre eles existem alguns famosos, a começar pelo FAT, programado com contribuições do próprio Bill Gates e utilizado por produtos da Microsoft desde então, além de inúmeras outras empresas.

Um exemplo de como a formatação pode influenciar no espaço livre para armazenamento, veja essa outra tabela. Compare os discos de 90mm... Uma primeira curiosidade é que inicialmente a Apple utilizava controle de velocidade, permitindo um melhor aproveitamento da mídia magnética, ao contrário dos outros leitores de disquete que utilizavam velocidade angular constante. Mas isso é outra história...

Repare como que os disquetes de 90mm (3.5 polegadas) de alta densidade possuem tamanhos diferentes. O mais comum é 1440kB, mas o Amiga conseguia guardar 1760kB. No IBM-PC tb existia um macete pra conseguir 1680kB e 1720kB, que algumas empresas utilizavam pra distribuir seus programas e dificultar a cópia destes. Essa diferença de tamanho não é por causa de algo físico, como variação de velocidade de gravação, mas sim diferença na formatação dos discos. Um disco de 90mm não-formatado consegue guardar até uns 2000kB, dizem.

Discos flexíveis são geralmente tosquinhos, e ninguém espera uma formatação sofisticada neles. Se puder haver mais espaço e velocidade, ótimo... No caso de discos rígidos pode ser mais desejável uma formatação que permita mais segurança. Quando a gente faz RAID, por exemplo, está indo atrás de redundância e confiabilidade (e velocidade, às vezes), e não espaço de armazenamento. É um comprometimento.

A formatação FAT não oferece nada demais. Uma tabela centralizada localizada no início da partição anota a alocão de clusters de tamanho fixo para os diferentes arquivos. FAT possui alguns problemas conhecidos, em especial a fragmentação excessiva.

Existem muitos formatinhos simples --- ainda piores do que o FAT --- por aí, utilizados em aplicações específicas. Um exemplo é o iso9660, ou CDFS, utilizado em CDs de dados.

Um exemplo de formato mais moderno são os que fazem _jounaling_. Nestes formatos cada mudança aos arquivos é antes anotada em um diário. Se houver uma pane, a chance de você causar um erro sério ao seu sistema é bastante reduzida. Pode haver registro apenas de modificações aos meta-dados (nome de arquivos, etc), quanto dos próprios dados. O NTFS, por exemplo, é um formato que faz esse tipo de coisa. A principal diferença entre ext2 e ext3 também é o journaling.

Existe também uma família de formatos chamados log-structured que funcionam de forma bastante peculiar. Eles podem manter "vivas" versões mais antigas dos arquivos, que só vão se perdendo quando o espaço na memória acaba, e os dados antigos precisam dar lugar aos novos. Um formato baseado nesta idéia é o recente UDF, utilizado em DVDs e em discos óticos regraváveis (CD-RW). No mundo BSD também surgiu um tal LFS que segue a idéia. Existe ainda um conjuntos de formatos dessa família dedicados desenvolvidos especificamente para memórias flash: jffs2 e yaffs.

***

Agora chegamos ao assunto que na verdade me atraiu pra falar isso tudo. Comprei um cartão de memória (SD), e estou decidindo como vou formatá-lo. Eles vem geralmente formatados com FAT só porque as indústrias querem agradar os consumidores, permitindo a eles utilizar os cartões sem se preocupar com o assunto. E como a maioria das pessoas usa produtos da micros~1, eles formatam para eles. E o Windions suporta apenas o tal NTFS quando muito, e o arcaico FAT, recauchutado para permitir, por exemplo, nomes com mais de 8.3 caracteres...

Mas parece que pra usar NTFS tem que dar dinheiro pra microshort, e o formato tb nem é tão popular quanto o FAT, que acaba sendo então a escolha. Mas os problemas não terminam aí, porque a empresa de Redmond resolveu que vai capitalizar em cima do formato!

Como não tenho muita necessidade em ser compatível com windows (uma pequena partição FAT16 provavelmente vai atender minha necessidade de ter que copiar arquivos da máquina dos outros de vez em quando...), estou decidido a não utilizar o VFAT com que minha memória veio formatada. A pergunta agora é: qual seria o melhor formato pra escolher?

Os tais jffs2 e yaffs me parecerem a princípio ser a escolha ideal. Existe até um outro formato sendo desenvolvido pela Nokia, ubifs, também dedicado pra memórias flash. Só que aparentemente eles são direcionados apenas a memórias flash "internas", e não pra cartões... Cartões são desenvolvidos para se comportarem de maneira mais parecida com discos rígidos, e os formatos de escolha devem ser os que se usam neles. (Mas ainda estou confirmando a lógica disso.)

Uma das características que um jffs2 teria seria gastar a memória por igual ao longo do tempo. Acontece que memórias flash vão se degradando conforme você vai escrevendo em um certo ponto, então é bom fazer esse gasto espalhado por toda a memória, evitando ficar escrevendo sobre um mesmo local, modificando um mesmo arquivo, por exemplo.

Quando seu dispositivo é uma memória flash pura, o sistema operacional precisa vigiar esse tipo de coisa. Mas em um cartão de memória parece que existe um contrle interno que faz isso automaticamente, dispensando portanto o uso desses formatos de arquivo dedicados.

Não seria portanto indicado utilizar formatos como jffs2 em cartões SD. Eu li inclusive que o jffs2 pode ser bem mais lento do que, por exemplo, ext2, além de ser pior pra mídias muito grandes.

Outra característica de memória flash é que o problema da fragmentação não é tão terrível quanto em discos, já que não exist euma agulha que vai andando e lendo as coisas... Seria então um motivo a menos pra não utilizar FAT!

A escolha fica portanto entre ext2, ext3, fat, hfs+, udf, ntfs, reiserfs, lfs... E as considerações principais devem ser velocidade e leitura, eficiência de uso do espaço e segurança, considerando que o cenário é uma mídia removível de estado sólido, onde fragmentação nãodeve ser problema, e a questão de realziar um gasto homogênio da mídia também não seria problema porque o cartão já cuida disso sozinho.

Algo que podemos argumentar é que sistemas com journaling de dados vão fazer muito mais gravações do que os mais simples, e portanto vão gastar mais a memória. Mas talvez haja um ganho... Todos conhecem o problema de poder corromper o cartão se remover antes de tomar os cuidados necessários. Talvez o journaling ajude nisso.

Acho que vou fazer um teste, portanto. Criar umas 3 partições, fat ext3 e UDF e ver o que acontece ao longo do tempo!... Reporto daqui a um ano. :]