quinta-feira, 31 de março de 2011

Problema de Lógica: Verdade em apenas um dia da semana

Ricardo fala a verdade em apenas um dia da semana.
Um dia, ele disse: "Eu minto nas segundas e terças".
No dia seguinte, disse: "Hoje é quinta, sábado ou domingo".
No próximo dia, falou: "Eu minto nas quartas e sextas".
Em que dia da semana Ricardo fala a verdade? Em que dia foi feita a primeira afirmação?





RESPOSTA





O primeiro dia não pode ser segunda ou terça pois a afirmação seria uma contradição. Se fosse segunda ou terça, a afirmação não poderia ser verdade pois está dizendo que mente. Se fosse segunda, a afirmação não poderia ser mentira pois terça seria o dia da verdade e a terceira afirmação também seria verdadeira. Se fosse terça, a afirmação não poderia ser mentira pois segunda seria o dia da verdade e a terceira afirmação também seria verdadeira.

O terceiro dia não pode ser quarta ou sexta pois a afirmação seria uma contradição. Se fosse quarta ou sexta, a afirmação não poderia ser verdade pois está dizendo que mente. Se fosse quarta, a afirmação não poderia ser mentira pois sexta seria o dia da verdade e a primeira afirmação também seria verdade. Se fosse sexta, a afirmação não poderia ser mentira pois quarta seria o dia da verdade e a segunda afirmação também seria verdade.

Se o primeiro dia não pode ser segunda ou terça e o terceiro dia não pode ser quarta ou sexta, então o segundo dia não pode ser terça, quarta ou quinta.

Se o segundo dia não pode ser quinta então a segunda afirmação é mentira, porque quinta não pode ser uma opção nesta afirmação. E se a segunda afirmação é mentira então o segundo dia não pode ser sábado ou domingo.

Os três dias podem ser quinta, sexta e sábado, ou, domingo, segunda e terça.

O primeiro dia não pode ser quinta pois se a primeira afirmação fosse verdade, a terceira afirmação também seria verdade, e se a primeira afirmação fosse mentira, segunda ou terça seria o dia da verdade e a terceira afirmação, que ocorre no sábado, também seria verdade.

Assim os três dias são domingo, segunda e terça. A primeira afirmação foi feita em um domingo.

A afirmação de domingo não pode ser verdade senão a terceira afirmação também seria verdade. E sendo a primeira afirmação uma mentira e a segunda afirmação também, que ocorre na segunda, Ricardo fala a verdade nas terças.

sábado, 26 de março de 2011

Combinar ou extrair páginas de arquivos PDF

O Ghostscript é um pacote de softwares que possibilita o usuário ver ou imprimir arquivos PostScript e PDF, ou convertê-los para outros formatos.

Este pacote é bastante popular nas distribuições Linux, entretanto muitas pessoas não sabem que o Ghostscript é uma ferramenta poderosa para combinar ou extrair páginas de arquivos PDF, através do comando 'gs'.

Para combinar dois ou mais arquivos PDF em um único arquivo, podemos usar o comando a seguir:

$ gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=saida.pdf um.pdf dois.pdf

O exemplo é para dois arquivos. Se desejar combinar três ou mais arquivos PDF, continue a linha de comando adicionando os nomes dos arquivos separados por espaço.

Para extrair páginas de um arquivo PDF, gerando um novo arquivo PDF, podemos usar o comando a seguir:

$ gs -dBATCH -dNOPAUSE -dSAFER -sDEVICE=pdfwrite -dFirstPage=X -dLastPage=Y -sOutputFile=saida.pdf entrada.pdf

Descrição das opções:

-dBATCH
sai da execução do comando após o último arquivo;

-dNOPAUSE
desabilita o prompt e pausa no final de cada página;

-dSAFER
desativa os operadores "apagar" e "remover" e a habilidade de abrir os arquivos em outro modo além de somente leitura;

-sDEVICE=xxx
seleciona o dispositivo de saída;

-dFirstPage=X
seleciona a primeira página a ser processada

-dLastPage=Y
seleciona a última página a ser processada

-sOutputFile=arquivo
seleciona o arquivo de saída

Existem outros comandos que podem realizar estas duas tarefas. Mas o comando 'gs' é interessante pois preserva todos os objetos PDF importantes das páginas que os contém, sem realizar nenhum tipo de conversão.

sexta-feira, 25 de março de 2011

VirtualBox: Adicionais para Convidado e Pasta Compartilhada no Linux

Adicionais para Convidado

O VirtualBox fornece para instalação dentro da máquina virtual (VM) um pacote denominado "Adicionais para Convidado".

Este pacote é um conjunto de drivers e aplicações que otimizam o sistema operacional convidado para melhorar a performance e a usabilidade.

Os "Adicionais para Convidado do VirtualBox" é fornecido em uma imagem de CD-ROM de nome VBoxGuestAdditions.iso.

O arquivo desta imagem fica localizado no diretório de instalação do VirtualBox, a própria instalação do VirtualBox já traz esta imagem.

Para instalar os "Adicionais para Convidado do VirtualBox" em uma VM, monte este arquivo ISO na VM como um dispositivo de CD virtual e execute o instalador para a arquitetura do sistema convidado.

# VBoxLinuxAdditions-x86.run

Pelo menu 'Dispositivos - Instalar Adicionais para Convidado' o VirtualBox habilita a imagem na VM, o sistema operacional convidado costuma reconhecer o dispositivo de CD carregado.

Em uma VM com sistema Linux, os "Adicionais para Convidado" podem necessitar ter seus módulos recompilados de acordo com o kernel do sistema.

É preciso ter o DKMS, o compilador C, o make e o pacote de desenvolvimento do kernel instalados no sistema.

Se futuramente ocorrer uma atualização do kernel, será necessário recriar os módulos manualmente, com o comando:

# /etc/init.d/vboxadd setup

Para desinstalar os "Adicionais para Convidado" execute o instalador com a opção 'uninstall':

# VBoxLinuxAdditions-x86.run uninstall


Pastas Compartilhadas

Uma das funcionalidades do VirtualBox é o recurso das "Pastas Compartilhadas", para acessar arquivos localizados na máquina hospedeira.

Para que funcione é necessário ter os "Adicionais para Convidado", instalados na máquina convidada, e o módulo 'vboxsf' carregado.

A pasta compartilhada deve residir fisicamente no hospedeiro e será compartilhada ao convidado usando um driver especial de sistema de arquivos.

Para compartilhar uma pasta do hospedeiro, com a VM em execução, clique no menu 'Dispositivos - Pastas Compartilhadas' e especifique o caminho para esta pasta, clicando no ícone "Adicionar Pasta Compartilhada". Anote o "Nome da Pasta" que você escolheu.

Agora basta montar esta pasta usando o comando 'mount' com o tipo para 'vboxsf':

# mount -t vboxsf Nome_da_Pasta /mnt/pasta

Consulte a documentação do VirtualBox para conhecer todas as possibilidades deste recurso das "Pastas Compartilhadas".

quarta-feira, 23 de março de 2011

Opção sos no boot do Windows XP

No processo de boot do Windows XP, o programa Ntldr lê o arquivo Boot.ini para carregar o sistema operacional. O Ntldr lê o conteúdo do arquivo Boot.ini e utiliza este conteúdo para montar o menu de opções, no qual pode selecionar o sistema operacional a ser carregado.

Neste arquivo, na seção [operating systems], cada linha indica um sistema instalado. Caso só tenha um, só terá uma linha.

Cada linha desta seção tem o caminho para a pasta do respectivo sistema operacional, seguido do rótulo para o menu e, por fim, as opções para a execução do sistema operacional.

Quando há algum problema na inicialização do Windows XP, podemos tentar descobrir se o problema está relacionado com algum driver de dispositivo. Podemos usar a opção /sos.

A opção /sos exibe na tela os nomes dos drivers dos dispositivos enquanto eles são carregados. Uma boa indicação do motivo do problema poderá ser o último driver carregado antes da inicialização falhar.

Edite o arquivo C:\boot.ini e adicione no final da linha a opção /sos, como no exemplo abaixo:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /sos

Por padrão, a tela Windows Loader apenas reproduz pontos de progresso.

O Windows Vista e superiores não utilizam este método de boot, no lugar do Boot.ini é usado o Boot Configuration Data (BCD).

quarta-feira, 16 de março de 2011

Diferença entre o JRE da Oracle.com e Java.com

Tanto pela página da Oracle (http://www.oracle.com/technetwork/java/javase/downloads/index.html) como pela página da Java (http://www.java.com/pt_BR/download/manual.jsp) é possível baixar o Java Runtime Environment (JRE).

Entretanto, reparando nos arquivos fornecidos por cada página, percebe-se que possuem nomes diferentes. A página da Oracle fornece o arquivo jre-6u24-windows-i586.exe e a página da Java fornece jre-6u24-windows-i586-s.exe. Não é somente o "-s" que difere, os tamanhos dos arquivos também, 16525088 bytes contra 16754464 bytes.

A página da Oracle sobre a tecnologia Java (http://www.oracle.com/us/technologies/java/index.html) oferece duas opções do software Java para baixar, uma para consumidores e outra para desenvolvedores. O link para consumidores leva para a página do domínio java.com e o link para desenvolvedores leva para a página do domínio oracle.com.

Qual é a real diferença entre os arquivos?

A diferença é que a versão para consumidores, fornecida pela página do domínio java.com, arquivo com final "-s", contém a opção para instalação da Barra de Ferramentas Google. A versão para desenvolvedores, fornecida pela página do domínio oracle.com, arquivo sem final "-s", não contém a Barra de Ferramentas Google.

Um comando simples, no Linux, mostra isto:

$ strings -f jre-6u24-windows-i586* | grep -i -e google -e toolbar

jre-6u24-windows-i586-s.exe: Software\Google\Google Toolbar\4.0\Setup
jre-6u24-windows-i586-s.exe: SOFTWARE\Google\No Toolbar Offer Until
jre-6u24-windows-i586-s.exe: SOFTWARE\Google\Google Toolbar
jre-6u24-windows-i586-s.exe: CancelToolbarInstall
jre-6u24-windows-i586-s.exe: GetToolbarInstallerProgress
jre-6u24-windows-i586-s.exe: ToolbarCompatibilityCheck
jre-6u24-windows-i586-s.exe: Google Inc1503
jre-6u24-windows-i586-s.exe: Google Inc0

Como eu não gosto destas "barras de ferramentas" instaladas em meu navegador e nem quero receber perguntinhas oferecendo a instalação, prefiro baixar o JRE pela página da Oracle.

segunda-feira, 14 de março de 2011

Corrigir boot de uma imagem do Windows XP

Uma das coisas que faço muito é criar uma máquina virtual a partir de uma imagem de um disco rígido com Windows. Imagem esta que foi gerada por uma ferramenta de diskdump.

Acontece que, quando se muda uma instalação do Windows para um outro hardware, quando move o disco do sistema para um outro computador, as entradas de registro para hardware de controlador de armazenamento de massa ficam erradas. E se tentar iniciar este Windows na máquina virtual, durante o boot aparece uma tela azul informando o erro Stop 0x0000007B.

Uma das formas de corrigir o Windows virtual é reinstalando o sistema a partir do CD de instalação, mas isso é demorado e pode prejudicar alguma característica do sistema, que pode servir de prova. Porém 99,9% garantido.

Outra forma é corrigir este erro com algumas ferramentas específicas para isto. O sistema "live CD" Hiren's BootCD (http://www.hirensbootcd.org/download/) contém as ferramentas necessárias.

Vamos descrever como é feito desde o começo. A imagem foi criada com uma ferramenta dd qualquer, gosto do dcfldd:

# dcfldd if=/dev/sdd of=imagem-hd.dd

Em seguida esta imagem foi convertida para o formado VDI, do VirtualBox:

# VBoxManage convertfromraw imagem-hd.dd imagem-hd.vdi --format VDI

Mova a imagem VDI para o diretório de discos rígidos do VirtualBox (~/.VirtualBox/HardDisks/), acrescente esta imagem pelo Gerenciador de Mídias Virtuais e crie a nova máquina virtual usando este disco virtual.

Ao criar e configurar a máquina virtual, é importante verificar o tipo da controladora de disco, se é IDE ou SATA, ativar o I/O APIC etc., isto é, deixar a máquina virtual o mais próximo das características do hardware real.

Em vez de iniciar a máquina virtual pelo sistema do HD, iniciei com o sistema do Hiren's BootCD, definindo o seu ISO para uma unidade óptica da máquina virtual. O famoso boot pelo CD.

No menu de inicialização do Hiren's BootCD escolha "mini Windows XP", será iniciado um Windows XP otimizado. Quando aparecer a área de trabalho deste mini Windows, dê dois cliques no ícone "HBCD Menu" para executar o "Hiren's BootCD Program Launcher". É a partir desta interface que nós vamos executar as ferramentas.

Primeiramente vamos corrigir a MBR, o setor de boot do sistema e por fim o registro do Windows.

No menu "Programs" clique e avance até:

Programs - Partition/Boot/MBR - Commandline - MbrFix

A primeira ferramenta a ser executada é esta. A interface abre um terminal DOS e uma janela com a ajuda do programa. Simplesmente execute o comando abaixo no prompt do DOS (se for Vista ou 7, adicione as opções correspondentes, para o XP ignore-as):

B:\Temp\HBCD> MbrFix /drive c: fixmbr {/vista|/win7}

A segunda ferramenta é a "Boot sector restoration tool", no menu "Programs" clique e avance até:

Programs - Partition/Boot/MBR - Commandline - BootSect

Da mesma forma, simplesmente execute o comando abaixo no prompt do DOS. Se for Vista ou 7, use a opção /nt60, para o XP use /nt52:

B:\Temp\HBCD> bootsect {/nt52|/nt60} c:

A terceira ferramenta é a BootICE, no menu "Programs" clique e avance até:

Programs - Partition/Boot/MBR - BootICE

Na aba "Physical Disk" selecione o disco em "Destination Disk".

Clique no botão "Process MBR". Na janela "Master Boot Record", em "Avaliable MBR Types" selecione "Windows NT 5.x MBR" ou "Windows NT 6.x MBR" e clique no botão "Install/Config". Feche esta janela.

Clique no botão "Process PBR". Na janela "Partition Boot Record", em "Avaliable PBR Types" selecione "NTLDR boot record (FAT/NTFS)" ou "BOOTMGR boot record (FAT/NTFS)" e clique no botão "Install/Config". Confirme na janela seguinte e feche esta janela.

Saia do BootICE.

O uso do BootICE pode ser redundância com o uso das ferramentas anteriores mas, em uma das vezes, só o uso das duas primeiras não tinha sido suficiente para corrigir. Como é sabido, cada caso é um caso.

O último passo é corrigir a controladora de disco no registro do Windows. Será usada a ferramenta FixHDC, no menu "Programs" clique e avance até:

Programs - Registry - Fix hard disk controller

Será aberta uma janela de terminal DOS já com a ferramenta em execução. Digite T para definir "TargetRoot" em C:\Windows e digite M para iniciar "Update MassStorage drivers". Simples e rápido.

Aliado à todos estes passos, um pouco de sorte, o sistema Windows da máquina virtual vai iniciar normalmente. Mas um aviso, outras diferenças de hardware também podem causar o erro "stop 0x7b", encontrei referências citando dispositivos USB conectados e até controle de energia. Como dito, cada caso é um caso, a solução apresentada aqui é para uma situação apenas.