terça-feira, 15 de dezembro de 2009

Como zerar as senhas dos usuários do Windows

Existe um utilitário denominado "Offline NT Password & Registry Editor" que é capaz de zerar as senhas dos usuários de um sistema Windows NT/2000/XP/Vista etc., inclusive a senha do administrador do sistema. Este utilitário pode ser encontrado neste site: http://pogostick.net/~pnh/ntpasswd/

Este utilitário zera ou redefine a senha de qualquer usuário que possua uma conta local válida no sistema Windows. Não é necessário saber a senha antiga para definir uma nova senha.

Para este utilitário entrar em funcionamento é necessário reiniciar a máquina efetuando o boot pelo CD ou disquete que contém o utilitário e então será mostrada uma opção para destravar ou até desabilitar uma conta de usuário. Este processo pode ser realizado de uma forma automática ou com a interação do usuário, escolhendo a partição que contém o Windows etc.

O sistema que compõe este utilitário é um Linux, preparado para acessar um sistema Windows e realizar as alterações no registro. Sua interface é bastante simples, com uma série de perguntas para guiar o usuário durante o processo.

Ao término basta reiniciar a máquina pelo Windows e logar-se na conta do usuário sem a necessidade de digitar a senha.

quarta-feira, 9 de dezembro de 2009

Análise Combinatória

A Análise Combinatória é um conjunto de métodos que possibilita a contagem de agrupamentos diferentes formados a partir de um número finito de elementos de um conjunto. Os agrupamentos de p elementos são formados a partir de um conjunto com n elementos, com p<=n.

Arranjos, Permutações ou Combinações são os três tipos principais de agrupamentos, sendo que aqui trataremos os simples ou com repetição.

Princípio Fundamental da Contagem

Alguns problemas de análise combinatória normalmente podem ser resolvidos através de duas regras básicas: a regra da soma e a regra do produto.

Se um elemento pode ser escolhido de m formas e um outro elemento pode ser escolhido de n formas, então a escolha de um ou outro elemento se realizará de m + n formas diferentes. É a regra da soma.

Exemplo:

Em uma sacola existem 7 peças brancas e 5 peças pretas. Em um jogo de sorteio, qual o número máximo de pessoas para participar sendo que cada pessoa pegue apenas uma peça da sacola?

Resposta: 7 + 5 = 12 pessoas

Se um primeiro acontecimento pode ocorrer de p1 modos diferentes, um segundo acontecimento de p2 modos diferentes e, sucessivamente, um enésimo acontecimento de pn modos diferentes, sendo p1, p2, ..., pn eventos independentes, então o número de modos diferentes em que os n acontecimentos podem ocorrer é p1 x p2 x ... pn. É a regra do produto.

Exemplo:

Os números de telefones possuem 8 algarismos. Quantos números podem existir sabendo que não podem começar com zero?

Resposta: 9x10x10x10x10x10x10x10 = 90.000.000 números

Arranjo Simples

Denomina-se arranjo simples de n elementos tomados p a p (n>=p) os agrupamentos ordenados de p elementos distintos que se podem formar com os n elementos dados. O arranjo simples não considera a repetição dos elementos.

O arranjo simples nada mais é do que a regra do produto, do princípio fundamental da contagem, no qual em cada evento subsequente é reduzido em menos 1 o número de modos diferentes.



Exemplo:

Utilizando os 10 algarismos para formar uma senha com 4 algarismos distintos, quantas senhas diferentes podem ser formadas?

Resposta:

A(10,4) = 10!/(10-4)! = 5040 senhas

ou

A(10,4) = 10*9*8*(10-4+1) = 10*9*8*7 = 5040 senhas

Arranjo com Repetição

No arranjo com repetição não há a exclusão da possibilidade de um elemento repetir-se na formação de um agrupamento.



Exemplo:

Uma placa de automóvel é formada por 3 letras mais 4 algarismos, quantas placas diferentes podem ser formadas?

Resposta:

AR(26,3) * AR(10,4) = 26^3 * 10^4 = 175.760.000 placas

Como podem observar, para resolver um arranjo com repetição também utiliza-se basicamente da regra do produto do princípio fundamental da contagem.

Permutação Simples

Chama-se de permutação simples de n elementos todo arranjo simples de n elementos tomados n a n. Então permutação simples é o tipo de agrupamento ordenado em que cada grupo recebe todos os elementos.



Exemplo:

Qualquer ordenação das letras de uma palavra é denominada anagrama. Quantos anagramas tem a palavra LIVRO?

P(5) = 5! = 120 anagramas

Permutação com Elementos Repetidos

Se entre os elementos existem elementos repetidos, não adianta realizar a permutação entre eles pois não será alterado o agrupamento.

De um modo geral, se temos n elementos a serem permutados, dentre os quais p elementos são iguais, para cada permutação temos p! repetições, totalizando n!/p! permutações.



Exemplo:

Quantos anagramas tem a palavra PARA?

P(4;2) = 4!/2! = 12 anagramas

Para n elementos com p1 elementos iguais, p2 elementos iguais e assim sucessivamente até pr elementos iguais, temos n!/p1!p2!...pr!.



Exemplo:

Quantos anagramas tem a palavra RESSACA?

P(7;2,2) = 7!/2!2! = 1260 anagramas

Combinação Simples

Combinação é o tipo de agrupamento em que a ordem dos elementos dentro do grupo não altera o agrupamento.

O número de combinações de n elementos em grupos de p elementos é igual ao número de arranjos de n elementos tomados p a p, dividido pela permutação de p.



Exemplo:

Quantos jogos diferentes de 6 números podem ser formados com os 60 números da megasena?

C(60,6) = 60!/6!(60-6)! = 50.063.860 jogos

Combinação com Repetição

Na combinação com repetição todos os elementos podem aparecer repetidos em cada grupo até p vezes. E da mesma forma, a ordem dos elementos não altera o agrupamento.

A combinação com repetição é igual a combinação simples de n+p-1 elementos tomados p a p.



Exemplo:

Seja um conjunto com os elementos {A,B,C,D}, quantas combinações com repetição existem com os elementos tomados 2 a 2?

Resposta:

CR(4,2) = (4+2-1)!/2!((4+2-1)-2)! = 10 combinações

Concluindo, nos arranjos e nas permutações a posição dos elementos diferencia os agrupamentos e nas combinações a posição dos elementos não diferencia. Vemos a diferença disto comparando a formação de um número de telefone, no qual a mudança de posição muda o número, com um jogo da megasena, onde a ordem dos números não altera o resultado.

quinta-feira, 26 de novembro de 2009

Está o nosso cérebro fazendo constantemente cálculos subconscientes?

Este artigo foi publicado na revista Scientific American Mind, edição de Novembro de 2009:

O nosso cérebro é conectado para executar cálculos que nos permitem decidir o quanto distante está um objeto quando nós andamos ou saltamos por cima, ou estendemos a mão por um copo de leite. Ainda que esta tarefa possa parecer fácil, esta tarefa ativa um profundo cálculo surpreendentemente complexo.

Quando nós olhamos um objeto, os nossos olhos projetam a estrutura tridimensional dentro da retina bidimensional. Para ver em três dimensões, o nosso cérebro precisa reconstruir o mundo tridimensional vindo da imagem bidimensional da retina. Nós temos aprendido a distinguir a profundidade usando uma variedade de sinais visuais, umas envolvendo somente um olho (visão monocular) e outras envolvendo ambos os olhos (visão binocular).

A visão binocular proporciona uma percepção mais precisa da profundidade, permitindo-nos distinguir pequenas diferenças entre as imagens de ambas retinas, enquanto que a visão monocular nos proporciona um largo campo de visão. A oclusão, que é um sinal monocular segundo o qual um objeto que está próximo obstrui parcialmente um outro mais distante, permite o cérebro distinguir as distâncias relativas. Quando um objeto obstrui um outro, o observador pode graduar as distâncias relativas destes objetos.

Uma outra sinalização monocular é a paralaxe, a qual ocorre quando o observador move seu corpo (ou somente sua cabeça) para obter informações sobre a distância relativa entre os objetos. Pelo movimento da cabeça para trás e para frente, este movimento permite ver os objetos por ângulos levemente diferentes. Um objeto próximo se moverá mais rapidamente diante da retina (criando uma ampla paralaxe) do que um objeto distante, permitindo determinar qual objeto está mais próximo. Quando está dirigindo um veículo, por alguns instantes, as coisas mais próximas passam mais rapidamente e os objetos mais distantes parecem imóveis.

Embora o nosso circuito cerebral seja geneticamente programado para distinguir profundidades vindas da visão, isto necessita alguma experiência para calibrá-lo. Inicialmente as crianças são ruins em distinguir as distâncias, mas com o tempo elas treinam seus cérebros para realizar tal cálculo. Os adultos se tornam experientes em distinguir profundidades mas somente com os objetos familiares no meio ambiente. Em um território desconhecido, a distinção automática da profundidade falha porque nosso cérebro ainda não possui novos sinais calibrados do ambiente. Diante destes novos cenários, nós temos que treinar novamente nosso cérebro para calcular as distâncias.

segunda-feira, 23 de novembro de 2009

Problema de lógica: A cor do urso

Atenção, resposta logo após o problema.

Uma pessoa montou uma tenda para dormir. Subitamente, apareceu um urso que lhe desfez a dita tenda. A pessoa, pacientemente, reparou a tenda e montou-a novamente. Entretanto, o urso andou um quilômetro para o sul, um quilômetro para o oeste e outro para o norte, voltando a passar pelo acampamento e desfazendo novamente a tenda. De que cor era o urso?





RESPOSTA





O urso era branco por ser um urso polar. O acampamento tinha de estar no pólo norte. Só assim que um urso andando de lá, 1 Km para o sul, 1 Km para o oeste e 1 Km para o norte, é que voltaria a passar pelo mesmo ponto. Caso contrário, passaria ao lado.

domingo, 22 de novembro de 2009

Gerando um pendrive com os arquivos de instalação do Windows XP

Com a popularização do netbook vem a necessidade de adaptar os arquivos de instalação do Windows XP, normalmente disponíveis em mídias de CD, para um pendrive. Pois um netbook não possui uma unidade leitora de CD/DVD e um pendrive é uma solução muito mais prática e barata do que uma unidade externa de CD/DVD.

Como existem alguns netbooks que não possuem uma unidade de disco rígido interna, que permite uma maior capacidade de armazenamento, possuindo em seu lugar uma unidade de armazenamento em memória flash, com uma capacidade bastante reduzida, é interessante fazer uma instalação do Windows XP enxuta o suficiente para poupar ao máximo o pouco espaço disponível. Como o instalador do Windows XP não fornece opções adequadas para isto, torna-se necessário utilizar um software chamado nLite.

O nLite é uma ferramenta para a escolha da configuração e ou remoção de componentes de uma pré-instalação do Windows. Opcionalmente o nLite pode gerar uma imagem para gravação em uma mídia ou para montar virtualmente. O nLite pode ser encontrado na Internet pelo endereço http://www.nliteos.com/.

A interface do nLite é bastante intuitiva, as etapas do processo são simples de executar e no final a pasta que contém os arquivos de instalação do Windows terá uma versão enxuta pronta para gravar em um pendrive. Uma dica é não remover o componente "Instalação manual e atualização" em "Opções do sistema operacional" pois é necessário para o reconhecimento do sistema na próxima ferramenta.

Concluída a preparação dos arquivos, o que falta agora é transferí-los para o pendrive. O WinSetupFromUSB é uma ferramenta capaz de formatar e preparar um pendrive para o boot. Este artigo contém o endereço para o download do WinSetupFromUSB: http://www.msfn.org/board/install-usb-winsetupfromusb-gui-t120444.html

Na tela inicial do WinSetupFromUSB devem ser selecionadas a pasta que contém os arquivos de instalação e a unidade do pendrive. Para o pendrive poder ser selecionado é preciso que esteja formatado adequadamente, provavelmente não está então clique no botão RMPrepUSB para formatar o disco USB.

Na janela da ferramenta RMPrepUSB escolha as opções desejadas e clique no botão "Prepare Drive". Para as opções, se o pendrive tem até 2GB de capacidade é indicado o sistema de arquivos FAT16, se for maior pode ser FAT32, e deixe a opção de boot como "WinPE/Vista v2 bootable [BOOTMGR] CC4". Clique em Exit para fechar o RMPrepUSB e retornar ao WinSetupFromUSB.

Verifique as demais opções na janela do WinSetupFromUSB, auxiliando-se pelas dicas dos balões de ajuda, para a necessidade de alguma configuração particular. Na maioria dos casos pode deixá-las como estão. Clique no botão GO para dar início ao processo de cópia para o pendrive. Concluído, pode sair do programa, o pendrive já está pronto.

Para realizar o boot pelo pendrive, no netbook, entre no setup da bios e habilite este recurso. A instalação do Windows pelo pendrive é um pouco diferente da instalação feita direta do CD. O gerenciador de boot utilizado pelo pendrive mostra duas opções à serem escolhidas, "First part of Windows XP Professional Setup" e "Second part of Windows XP Professional Setup". A segunda parte é para quando o computador reiniciar durante a instalação. De resto é a mesma coisa e realizado estes procedimentos o seu Windows XP será instalado com sucesso.

O uso do nLite só é necessário se desejar remover algum componente, incorporar alguma atualização ou automatizar algum passo da instalação do Windows XP, senão pode usar direto o conteúdo oficial da mídia de instalação. Para poupar espaço uma solução é remover os componentes de exemplos, ajudas e qualquer outro extra que costuma vir junto na instalação do Windows XP. É interessante também remover todos os drivers pois normalmente serão instalados os fornecidos pelo fabricante. Mas recomendo não remover o "Suporte ao hardware" para evitar problemas básicos de detecção.

Este artigo utiliza as versões nLite 1.4.9.1 e WinSetupFromUSB 0.2.3.

sexta-feira, 13 de novembro de 2009

Definindo apelidos e funções para comandos no bashrc

O arquivo bashrc determina o comportamento do shell, neste caso o interpretador de comandos bash. Basicamente o arquivo bashrc permite criar atalhos, podendo ser apelidos (alias) ou programas interativos (funções), que são carregados na inicialização do bash. O arquivo bashrc permite criar atalhos para praticamente todos os comandos.

Por exemplo, é muito mais fácil digitar o atalho "l" do que um comando como "ls -laF --color=auto". E uma função é como um roteiro (script) para o shell colocado em um arquivo bashrc. É ideal para casos em que o atalho não será para apenas um simples comando ou necessita de uma lógica em alguma estrutura de programação.

Existem dois arquivos bashrc que o interpretador de comandos bash carrega em cada nova inicialização do shell, o /etc/bashrc é carregado para todos os usuários e o ~/.bashrc é carregado para o usuário que iniciou o shell, ou seja, cada usuário tem o seu arquivo ~/.bashrc.

Tanto para apelidos ou para funções é recomendável testar primeiro os comandos em uma execução direta no prompt antes de incluí-los no arquivo bashrc. Diferentemente de um script para o shell, a interpretação de uma função não gera um novo processo no sistema.

Alguns exemplos de apelidos definidos no arquivo bashrc:

alias l="ls -laF --color=auto"
alias cds="cd /etc/rc.d/init.d && ls"
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias qag="rpm -qa | grep -i"
alias av="avast -a -c -t=A"
alias fd='mount /dev/fd0 /mnt/floppy; cd /mnt/floppy && ls'


Uma função pode ser definida com a estrutura apresentada abaixo:

function nome_da_função()
{
comando 1;
comando 2;
comando 3;
...
}


A palavra "function" é opcional na declaração de uma função mas pode ser considerada uma boa prática. Veja um exemplo bastante interessante:

function extrair()
{
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xvjf $1 ;;
*.tar.gz) tar xvzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xvf $1 ;;
*.tbz2) tar xvjf $1 ;;
*.tgz) tar xvzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo "'$1' não pode ser extraído via >extrair<" ;;
esac
else
echo "'$1' não é um arquivo válido"
fi
}


Para ativar uma definição imediatamente após a sua inclusão no arquivo bashrc, sem a necessidade de sair do interpretador de comandos e entrar novamente, basta digitar:

$ source ~/.bashrc


Para saber quais apelidos estão ativos no interpretador bash basta executar o comando alias no prompt. O shell irá imprimir a lista dos apelidos na saída padrão, normalmente na tela do monitor. As funções ativas podem ser vistas com a execução do comando set, sem opções, onde o nome e o valor de cada variável e função do shell serão mostrados na tela.

quarta-feira, 11 de novembro de 2009

O que é virtualização?

Em uma breve definição, virtualização é a execução de vários sistemas operacionais em um único computador físico. Uma máquina virtual é um ambiente operacional completo que se comporta como se fosse um computador independente. Com a virtualização, um computador pode manter vários sistemas operacionais em uso.

Os ambientes operacionais são totalmente independentes um dos outros, salvo o hardware do computador que hospeda os sistemas virtualizados, esses ambientes virtuais não têm nada mais em comum. Se um sistema operacional pode ser instalado em um hardware real, poderá ser instalado em uma máquina virtual. O computador servidor pode hospedar vários sistemas operacionais, sejam eles iguais, similares ou completamente diferentes. Os sistemas operacionais virtualizados são independentes entre si.

Não é preciso que o computador servidor tenha um hardware específico para virtualização, porque quase todos os equipamentos são capazes de hospedar uma ou mais máquinas virtuais. Para isso, é preciso apenas um software especial desenvolvido para emular o ambiente físico. Basicamente, o software simula o hardware de forma que o sistema operacional é instalado sobre esse software. Existem diversos softwares para executar máquinas virtuais, os mais populares são o VMware, o VirtualBox e o Virtual PC. E outros menos famosos como o Parallels, o Xen e o QEMU.

Uma característica interessante que facilita a portabilidade das máquinas virtuais, entre servidores com especificações de hardware diferentes, é que o hardware que é apresentado ao sistema operacional virtual é o mesmo. Deste modo os drivers de dispositivos instalados sempre são os mesmos não importando qual hardware o servidor possui.

Em um ambiente computacional virtual, existem dois componentes principais, o hospedeiro e o convidado. O hospedeiro é o sistema operacional executado diretamente sobre o hardware físico. Este hospedeiro é o sistema operacional que você instala inicialmente sobre o servidor. Pode ser um Linux ou um Windows por exemplo, entretanto existem alguns softwares de virtualização que não necessitam de um sistema hospedeiro, atuam como sendo o próprio sistema operacional do hardware, como o VMware ESX. O segundo componente é o sistema operacional convidado. O sistema operacional convidado é o ambiente computacional virtual que é executado sobre o sistema operacional hospedeiro como uma máquina virtual. Com a virtualização é possível manter simultaneamente vários sistemas convidados.

Apesar da virtualização permitir vários sistemas operacionais em execução simultânea, todos de forma independente, existe apenas um servidor físico, um único hardware para atender todo o processamento e armazenamento em memória. Assim, existe um limite para o número de máquinas virtuais que podem ser instaladas em um servidor.

Pode-se compartilhar um conjunto de recursos do servidor apenas até que eles se esgotem ou que as partes não ofereçam capacidade suficiente. A única restrição para o número de máquinas virtuais é definida pelos limites de memória, espaço em disco e poder de processamento da CPU oferecidos a elas. Qualquer computador que espera hospedar uma ou mais máquinas virtuais deve possuir recursos não apenas para o hospedeiro como também para acomodar os sistemas convidados. Se o computador hospedeiro não tem grande volume de espaço em disco e não apresenta memória ou poder de processamento suficientes, não poderá oferecer aos sistemas operacionais convidados recursos adequados e o sistema operacional convidado sofrerá baixo desempenho.

Sendo as únicas desvantagens da virtualização a limitação do hardware e no acesso direto ao hardware, as vantagens na adoção dos ambientes virtuais são grandes. A facilidade no gerenciamento e na manutenção, na realização de cópias de segurança e na restauração, faz da virtualização uma excelente ferramenta para o administrador do sistema. Além de contribuir para uma redução na infraestrutura de hardware e no consumo de energia.

Uma dica, o software Sun VirtualBox é gratuito e fácil de operar. Instale-o em seu computador e experimente executar um sistema Linux dentro do Windows ou vice-versa, ou em um Mac OS X! Livre-se do "dualboot", mantenha todos em execução simultânea.