bitpop

Thursday, November 29th, 2007

O Easy Recovery salvou a minha vida

Estava eu, feliz e contente, em mais um dia de trabalho. Pra quem não sabe, sou estagiária e programadora de uma empresa de Porto Alegre. Trabalho com Java para web. Bem. Estava eu quase terminando minha tarefa (porque os desastres só acontecem quando o trabalho está quase pronto), quando minha IDE, o Eclipse aponta um erro numa das classes.

Eu tinha uma classe que o Eclipse apontava problema. Olhei o nome e vi que não precisava mais dela. Então resolvi apagá-la para sair aquele x vermelho feio. Só que ao invés de selecionar a classe, selecionei sem querer, o package inteiro, ou seja, selecionei um conjunto inteiro de classes (umas 15 no total). Foi pedida a confirmação, e confirmei bem bela pois achei que estava sendo apagada só UMA classe. Ledo engano. Quando me dou conta da bela porcaria que aconteceu, quase tenho um surto. Eram justamente as classes que eu tinha gasto dias trabalhando e eu não tinha backup e nem tinha subido no CVS. Perguntei para alguns programadores mais experientes se não tinha alguma solução, e bem, não tinha. Nem na lixeira o negócio tava, tinha sido apagado por completo.


Queria apagar só a classezinha com x vermelho (ConsignaçãoDO), mas o mouse selecionava o package inteiro

Conformada com o acontecido, fui comunicar ao meu chefe. Digo a ele que perdi tudo e que não vou cumprir o prazo. Mas eis que ele diz: tenta usar esse CD, o Easy Recovery.

Como todos sabem, ou deviam saber, o Windows nunca apaga os arquivos do seu pc. O que ele faz quando você deleta é marcar o arquivo como apagado. Assim quando você instalar algo novo no pc, ele vai usar aquele espaço marcado e instalar por cima. O Windows não troca os número binários do arquivo que você quer apagar por zero. Isso porque, fazer isso, que seria “apagar de verdade” levaria muito tempo, desnecessariamente. Ou seja, o sistema operacional só apaga os arquivos logicamente e não fisicamente. Logo, quando você apaga a pornografia do seu computador, alguém com o Easy Recover pode pegar tudo de volta : P

O que softwares como o Easy Recovery fazem é procurar na memória por todos os arquivos marcados como apagados e mostrá-los para o usuário.

Mesmo parecendo tão seguro, nunca acreditei que funcionasse bem mesmo. Parei de acreditar em programas que tentam gerenciar o disco rígido quando ao usar o Partition Magic uma vez, ele ao invés de particionar o que eu queria, apagou uma partição, mesmo com eu fazendo tudo certinho.

Mesmo assim a situação era de emergência, então usei o Easy Recovery. Apenas alguns passos, totalmente intuitivos e bum, meus arquivos são recuperados (exceto por dois, mas eles não eram muito importantes) .

Só uma coisa pra dizer depois de tudo isso: viva a tecnologia !

Monday, October 15th, 2007

Alan Turing, o pai da computação e da máquina de Turing

Alan Turing foi um geniozinho inglês que ajudou a definir os limites da computabilidade. Uma das perguntas que ele ajudou a responder foi: O que deve ser capaz de fazer uma máquina para possuir o poder máximo de expressão que os algoritmos fornecem ?

Turing definiu uma máquina abstrata que mais tarde ficou conhecida como máquina de Turing que respondeu a essa pergunta. A máquina de Turing é uma máquina abstrata, o que nada mais é do que um modelo de computador ( de preferência extremamente simples), no qual detalhes de implementação e físicos são deixados de lado, dando ênfase apenas na parte lógica. Como uma máquina abstrata é extremamente simples, fica mais fácil fazer provas formais ou conjecturas sobre vários aspectos da computação. A máquina de Turing é uma máquina abstrata com memória infinita que segue este funcionamento.

Uma das provas obtidas (graças a essa simplificação que leva em conta apenas a parte lógica) foi que nenhuma outra máquina é mais poderosa. A máquina de Turing é capaz, dado um tempo suficientemente grande, de emular qualquer outro computador. Logo tudo que é computável, uma máquina de Turing é capaz de computar. Ela é o limite de computabilidade que qualquer computador pode atingir, ou seja, nada é mais poderoso em termos de computabilidade do que ela. Qualquer outra máquina resolverá, no máximo, a mesma classe de problemas que a máquina de Turing (de forma mais rápida ou não, mas a questão aqui não é velocidade, não confunda computabilidade com velocidade).

A hipótese de Church afirma exatamente isso tudo que foi dito: A máquina de Turing é o limite de computabilidade. É a forma mais poderosa de expressar algoritmos. Ela emula qualquer outra máquina. Logo, se você quer saber se seu dispositivo computacional tem todo o poder de expressão que os algoritmos têm, graças ao pai da computação, você não precisa mais fazer um monte de testes exaustivos, basta ver se seu dispositivo é capaz de emular uma máquina de Turing. Em outras palavras, projetistas de computadores, se seu computador emula uma máquina de Turing, desencane, melhor o projeto não fica. O máximo que você pode conseguir é torna-lo mais rápido ; )

Existem outros modelos de máquinas teóricas, como a máquina Norma (que tem o mesmo poder que a máquina de Turing e eu considero ainda mais simples), mas a máquina de Turing foi a primeira e a mais conhecida.


O pai dos geeks

Alan Turing fez uma inestimável colaboração com essa idéia, mas ele foi além disso. O estudioso inglês também propôs um delicioso teste para os pesquisadores da área da inteligência artificial: o teste de Turing. Esse teste tem o intuito de avaliar se uma máquina pode ser considerada inteligente ou não. O teste funciona dessa forma: numa sala é colocada uma pessoa e um computador. Um ser humano avaliador faz perguntas para o computador e para a pessoa (sem saber quem é a pessoa e quem é o computador). Se esse avaliador não conseguir discernir quem é o humano e quem é a máquina após algumas perguntas, a máquina é considerada inteligente.

Obviamente esse teste é bastante polêmico e nenhuma máquina passou nele até hoje. A maior parte dos pesquisadores de IA discordam desse teste como método de avaliação, entretanto o teste serviu como um instigante incentivo para os pesquisadores de sua época.

Mesmo sendo esse gênio, Turing teve um fim bastante triste. Morreu com pouco mais de 50 anos vitíma de uma maçã envenenada por ele mesmo. Sim, ele suicidou-se. Turing era homossexual, o que na época era crime. Foi obrigado a tomar hormônios femininos e condenado a prisão. Por causa de tudo isso, teve uma vida miserável, o que o levou a depressão e posteriormente ao suicídio. Uma lástima. Se tivesse vivido mais alguns anos poderia ter feito outras grandes contribuições para a computação. Talvez agora você estivesse usando um computador muito melhor se ele tivesse vivido mais alguns aninhos.

Graças as sua contribuições pioneiras, o prêmio considerado o Nobel da informática chama-se prêmio Turing, concedido pela ACM. Aqui uma lista dos vencedores do prêmio. Notem que tem nomes do calibre do Knuth,Djikistra, Minsky e Backus.


Alan e um bonequinho de neve meigo : P

Turing tem um monumento em sua homenagem na cidade de Manchester. Quando eu for para a Inglaterra ver o Cavern Club e o Big Ben, certamente tirarei uma foto ao lado da estátua do pai da computação.

Friday, September 21st, 2007

Só isso


My computer geek score is greater than 73% of all people in the world! How do you compare? Click here to find out!

Tuesday, September 11th, 2007

Suécia e Boten Anna

A Suécia é o país de língua não inglesa com mais tradição no rock e pop. Para citar alguns exemplos de bandas ou cantores provenientes de lá, têm Abba, Petter Bjorn and John, The Hives, I’m from Barcelona, Cardigans, Roxette, entre outros.

Mas nada disso se compara ao cantor Basshunter. Além de ser o único dos citados aqui a cantar de fato em sueco e não em inglês, é o único que faz música com temas nerds como Warcraft e IRC.

A música sobre Warcraft é meio chatinha (talvez porque eu nunca tenha jogado esse jogo), mas a sobre o IRC, é perfeita ! Chama-se Boten Anna. Conta a história de um cara que se apaixonou por um bot do IRC. Vejam um pedacinho da tradução dela (afinal sueco consegue ser mais difícil que japonês):

CD
Sim, o nome do cd é LOL <(^^,)>

Eu conheço um bot.
Chama-se Anna, Anna é o nome dela.
Ela pode bani-los, bani-los a sério.
Ela limpa o nosso canal.
Quero dizer-vos que conheço um bot.
Ela vigia toda pessoa no nosso canal,
E vê se não há problemas
É impossível alguém fazer um take-over
E lembrem-se, eu conheço um bot.
Um bot que ninguém pode tocar,
E ela kicka-los quando tem vontade.
E kicka todos os spammers.
Não, ningém pode tocar no nosso bot.

Mas o melhor (ou pior) vem agora:

Veio um dia, e eu não podia acreditar.
O canal estava estranho.
Nunca pensei que estivesse tão errado.
Mas Anna disse-me “Não sou um bot, Sou uma garota muito bonita”
Foste muito estranha para mim.
Não tenho nada a dizer.
Para mim continuas a ser um bot.
Chama-se Anna, Anna é o nome dela.

Ele prefere que ela seja um bot ao invés de uma garota. Letra sensacional : P.
Assistam no Youtube com as legendas, pois com a melodia fica muito melhor. Por sinal, bonitinho o Jonas Altberg no clipe né ? Ah sim, esse é o nome que se esconde sob o pseudônimo de Basshunter.

Se o Latino fosse mais nerd, com certeza faria sua versão brasileira : P

Saturday, September 8th, 2007

Nerd na medida certa


NerdTests.com says I'm a Cool Light-Weight Nerd.  What are you?  Click here!

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

as que sabem binário e as que não sabem.
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.

RAID
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.

GoogleLogo
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