bitpop
Friday, August 24th, 2007
Números binários - Uma outra maneira de contar
Como todos devem saber, o computadores utilizam o sistema de números binários internamente. Mas como ele funciona exatamente ? Bom, vamos começar pelo sistema decimal. No sistema decimal que usamos, temos dez caracteres diferentes para representar os números (obviamente o 0,1,2,3,4,5,6,7,8,9). Mas e quando precisamos representar números maiores do que 9 ? Utilizamos combinações seguindo certas regras. No caso, juntamos o segundo menor caractere do sistema (no caso o 1, não usamos o zero porque ele está implicitamente na frente de qualquer número) com o menor caractere (dessa vez sim o zero) formando o 10 (dez). Perceba que precisamos de dois caracteres para representar a quantidade desejada. Em suma, cada vez que faltam caracteres para representar o número desejado, adicionamos mais uma casa ao número.
Os números binários são muito parecidos. Só que ao invés de 10 caracteres, teremos apenas dois: o 0 e o 1. Logo, conseguimos representar apenas as quantidades 0 e 1. O que fazemos quando queremos representar uma quantidade maior, como o 2 com números binários? Usaremos duas casas, assim como nos números decimais. Nesse caso a quantidade três será a junção dos caracteres 1 (o segundo menor caractere) com o menor caractere (o zero), formando o 10, que nos números binários corresponde ao nosso conhecido 2 dos números decimais. A tabela a seguir ilustra:
decimal -> binário
0 -> 0
1 -> 1
2 -> 10
3 -> 11
4 -> 100
5 -> 101
6 -> 110
7 -> 111
8 -> 1000
9 -> 1001
10 -> 1010
11 -> 1011
12 -> 1100
13 -> 1101
14 -> 1110
15 -> 1111
Ou seja, perceba que, como existem apenas 2 caracteres para representar os números binários, o número de casas que eles precisam para ir representando as quantidades cresce muito mais rapidamente. Além disso, é interessante notar que com 4 casas conseguimos representar apenas 16 números (enquanto que com números decimais conseguimos representar do 0 até 9999, ou seja, 10000 números).
Por que usamos números binários dentro dos pcs ? Porque bits não passam de sinais elétricos e fica mais fácil representá-los desse modo dentro do pc. E por que nós humanos usamos o sistema decimal ? Dizem que é porque temos 10 dedos na mãos.
Agora que você conhece números binários, vai entender a piadinha dessa camiseta : P

geek
Em breve falarei sobre soma, subtração, métodos de conversão, números binários negativos, com vírgula e códigos de correção de erros.
Aqui nesse site tem uma explicação muito boa, caso a minha não tenha sido suficiente.
Thursday, August 23rd, 2007
RAID
RAID é uma tecnologia que combina vários discos rígidos numa única unidade lógica com o intuito de aumentar a velocidade de acesso aos dados e/ou obter mais confiabilidade graças a redundância de informações.
Agora, como fazemos um monte de discos rígidos funcionarem como um só? Grosseiramente falando, num computador sem RAID, os dados são passados para o disco rígido e escritos. Num computador que utilize essa tecnologia, os dados vão passar por uma placa controladora (se a implementação for por hardware), que fará a devida gerência e escolherá como e em quais HDs os dados serão gravados. Isso taz algumas vantagens explicadas a seguir.
Tipos de RAID
Cada tipo ou nível de RAID consiste de uma forma diferente de combinar as informações nos discos. Eis algumas soluções:
RAID 0 –> O mais simples. Prioriza a velocidade. Cada dado é dividido em partes menores e cada pedacinho é gravado num disco. Ex: suponhamos que queremos gravar a frase “Eu gosto de chocolate” num RAID 0 com 2 discos. A sentença poderia ser dividida em duas “eu gosto” e “de chocolate”. Cada metade vai para um disco. Dessa forma, quando formos buscar essa frase no disco, ao invés de pegar a parte “eu gosto”, e somente depois a parte “de chocolate”, pegaremos duas palavras por vez simultaneamente (no caso de dois discos, 3 no caso de 3 discos e assim sucessivamente). Como os dados são divididos e como busca-los é tarefa da placa controladora. Lembrando que esse exemplo é apenas ilustrativo, uma vez que computadores trabalham com porções de memória, e não letras como no exemplo.
RAID 1 –> No caso de dois hds, o dado gravado num disco será gravado igual no outro. Dessa forma temos redundância total das informações.Forma custosa de redundância. A vantagem é que teremos um backup sempre atualizadissimo, sem necessidade de alguém precisar fazer backups diários, mensais, anuais, whatever.

O texto não é sobre esse RAID
Existem diversos outros tipos de RAID muito mais sofisticados e inteligentes, mas que não tratarei agora pois utilizam outros conceitos ainda não comentados. Mas num texto futuro serão citados.
Ok, você viu, achou legal mas pensou: “pena que só grandes servidores podem ter isso”. Se enganou ! Se você tiver dois HDs (ou mesmo um particionado), pode usar RAID com suporte por software bastando ter um Windows 2000 ou XP. Se ficou curioso e quer tentar, basta procurar no Google que tem um monte de tutoriais, aqui eu só passo a teoria : P
OBS: RAID costumava significar Redundant array of inexpensive Disks, mas atualmente costumam dizer que significa Redundant array of intelligent disks. Afinal, discos rígidos não são sempre tão baratinhos assim. Agora quem propôs essa mudança no nome eu não sei : P
Wednesday, August 22nd, 2007
Como funciona um motor de busca – parte 1
Vou falar sobre algumas técnicas que motores de busca utilizam (e que provavelmente o Google use também). Inicialmente, o motor de busca precisa descobrir e recolher todos os links da internet. Os algoritmos que fazem isso automaticamente são conhecidos como batedores (em inglês:crawlers). Os batedores a partir de uma página importante (preferencialmente bem mais do que uma), armazenam todos os seus links. Depois todos os links dos links, e assim sucessivamente. Esses links são armazenados em discos rígidos. Como elas são armazenadas é sobre o que falarei.
Como sabemos, são muitos links para armazenar. Para manter essa informação organizada, inicialmente é necessário normalizar os nomes. Normalizar é fazer todos seguirem um mesmo padrão. Por exemplo, você poderia guardar www.grandeabobora.com ou http://grandeabobora.com quando na realidade é o mesmo link (e não queremos redundância no nosso repositório). Logo, em geral, os links são armazenados sem o http:// (que é implícito). Além disso, a porta 80 também é retirada, por isso http://www.stanford.edu:80/ e http://www.stanford.edu será armazenado como www.stanford.edu simplesmente. Enfim, existem várias maneiras de normalizar e cada um escolhe a sua. Depois de normalizados, os links são armazenados em tabelas hash (que é assunto para outra hora), mas caso você desconheça e esteja com preguiça de pesquisar, é uma maneira muito rápida de localizar os dados numa lista.

Uma imagenzinha pra descontrair de tanto texto : P
Os batedores estão constantemente procurando links pela Internet para armazenar. Mas o que acontece quando um link sai do ar e já está armazenado ? Ele vai ficar para sempre aparecendo no buscador ? Nope ! Quando um link é armazenado, com ele vai a data de quando foi guardado. Existem estatísticas que dizem qual o tempo médio de vida de um link. Supomos que seja 2 anos (eu não faço idéia de quanto seja). Logo, quando esses dois anos passam, o link é revisitado para ver se ainda existe. Caso exista, é mantido e a data atualizada, senão, deletado. Na verdade, antes de deleta-lo, é dada mais alguma(s) chance(s) de alguns dias, para o caso de o servidor daquele link simplesmente estar temporariamente fora do ar naquele momento.
Existem muito mais detalhes e idéias no mundo do armazenamento de links, mas as apresentadas são as que conheço e vou ficando por aqui. Na parte 2 (que não sei quando será escrita) falo sobre as fase de indexação e ordenação.
Fontes: http://www9.org/w9cdrom/296/296.html
http://visibilidade.net/tutorial/funcionamento-motor-busca.html

