sábado, 10 de setembro de 2011

Criando uma imagem com sistema de arquivos virtual

Em um sistema operacional Linux é fácil criar um arquivo imagem contendo um sistema de arquivos virtual. Os sistemas de arquivos em arquivos de imagem, no Linux, podem ser facilmente montados e utilizados como qualquer outra unidade de armazenamento.

Para criar um arquivo imagem, que será usado como sistema de arquivos virtual, podemos usar a ferramenta dd, comum em todas as instalações de Linux. O exemplo de uso da ferramenta dd apresentado a seguir cria um arquivo de 500 MB, com conteúdo zerado:

dd if=/dev/zero of=unidadeimagem bs=1M count=500

Após este passo é necessário criar o sistema de arquivos no arquivo imagem gerado pela ferramenta dd, procedimento conhecido como "formatar". Para isto usa-se a ferramenta mke2fs, para criar um sistema de arquivos nativo do Linux. O exemplo apresentado a seguir cria o sistema de arquivos ext4. O parâmetro -F força a ação pois o arquivo imagem não é uma partição em um disco:

mke2fs -t ext4 -F unidadeimagem

Para utilizar esta unidade de armazenamento virtual é necessário montá-la. O exemplo apresentado a seguir monta o arquivo imagem no caminho /mnt/imagem/. Note que o arquivo imagem está sendo montado via dispositivo de loop, requerido neste tipo de operação:

mount -t ext4 -o loop unidadeimagem /mnt/imagem/

Todo este recurso não está restrito apenas aos sistemas de arquivos nativos do Linux, é possível formatar criando sistemas nativos do DOS/Windows (FAT ou NTFS).

Os exemplos a seguir ilustram os comandos para os sistemas de arquivos FAT32 e NTFS. O parâmetro -F na ferramenta mkdosfs especifica o tipo da tabela de alocação (no exemplo 32 bit) e na ferramenta mkntfs tem a mesma função da ferramenta mke2fs, forçar a ação:

mkdosfs -F 32 unidadeimagem
mount -t vfat -o loop unidadeimagem /mnt/imagem/

mkntfs -F unidadeimagem
mount -t ntfs-3g -o loop unidadeimagem /mnt/imagem/

Quando montados, estes arquivos imagem podem ser usados normalmente como qualquer unidade de armazenamento real. As operações de criação e cópia de arquivos são executadas normalmente e seu conteúdo é mantido entre os procedimentos de desmontagem e montagem.

Podemos compará-los aos discos virtuais usados em ferramentas de virtualização, onde são instalados sistemas operacionais para sua execução em um ambiente virtual.

Conceitos semelhantes são utilizados em segurança da informação, ferramentas como o TrueCrypt são capazes de criar arquivos imagens e criptografar todo o conteúdo armazenado.

O uso de arquivo imagem com sistema de arquivos virtual é amplo, atendendo diversas operações no mundo da informática.

sexta-feira, 9 de setembro de 2011

Conversor de texto para código Morse em áudio

Um programinha simples, existente desde 2007 e que ganhou novas versões agora em 2011, tem um propósito bem divertido. O ebook2cw é um programa de linha de comando capaz de converter um arquivo de texto puro (ISO 8859-1 ou UTF-8) para código Morse, em um arquivo de áudio MP3 ou OGG.

O ebook2cw está disponível pelo endereço http://fkurz.net/ham/ebook2cw.html e funciona em diversas plataformas, incluindo Windows, Linux, FreeBSD e Mac OS X.

Para compilar o fonte deste programa são necessárias as bibliotecas de desenvolvimento do Lame e Ogg/Vorbis. Estão disponíveis também os arquivos binários executáveis nas principais plataformas e uma interface gráfica é fornecida à parte.

Em sua execução é possível modificar alguns parâmetros, por exemplo, pela linha de comando os parâmetros -s samplerate e -b bitrate especificam a taxa de amostragem e a taxa de bits. Em sua página na Internet existe um manual de operação.

O resultado é muito bom e o autor do ebook2cw utiliza o programa para converter os livros fornecidos pelo Projeto Gutenberg.

domingo, 28 de agosto de 2011

Problema de Lógica: Quantos ovos na granja?

Um granjeiro, ao ser perguntado quantos ovos as galinhas haviam posto naquele dia, respondeu: Não sei, mas, contando de dois em dois, sobra um; contando de três em três, sobra um; contando de cinco em cinco, sobra um; porém, contando de sete em sete não sobra nenhum. Qual o menor número possível de ovos que as galinhas haviam posto?





RESPOSTA





O número não é múltiplo de dois, de três ou de cinco mas é múltiplo de sete.

Os múltiplos de sete são 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98, 105, 112, 119 ...

Como não é múltiplo de dois então os números pares estão fora, como não é múltiplo de três então os números 21, 63 e 105 estão fora, e como não é múltiplo de cinco então os números 35 e 70 estão fora. Restaram os números 7, 49, 77, 91, 119 (...).

Destes, os números 7, 49 e 77, se contar de cinco em cinco sobram 2, 4 e 2 respectivamente, portanto o menor número possível de ovos é 91 (2 x 45 + 1; 3 x 30 + 1; 5 x 18 + 1; 7 x 13).

domingo, 7 de agosto de 2011

Emulando o CP 400 no MESS

O CP 400 foi um computador pessoal, pra uso doméstico, produzido no Brasil na década de 1980 pela Prológica. Era compatível com o TRS-80 Color Computer da Tandy RadioShack.

A segunda versão, o CP 400 Color II, lançado no final de 1985, possuía como características técnicas um microprocessador Motorola 6809E com estrutura interna de 16 bits e externa de 8 bits, frequência de clock de 1,6 MHz, ROM de 16 Kbytes com programa monitor e interpretador Basic, RAM total de 64 Kbytes e vídeo no modo texto de 16 linhas por 32 colunas e no modo gráfico com resolução de 49152 pontos (256x192).

O CP 400 Color II tinha um teclado com 59 teclas tipo ASCII incorporado ao gabinete, uma saída de RF para ligação a uma TV e saída para monitor de vídeo composto. Além de saídas para joysticks, porta serial, porta para gravador cassete e suportava cartuchos e controlador de disquetes de 5 1/4.

Computador CP 400 Color II

Sua produção durou pouco devido a chegada do MSX, foi encerrada em 1987, entretanto a diversidade de aplicativos e jogos foi grande. Diversas empresas importaram os jogos do TRS-80 e comercializaram aqui no Brasil, com isso era fácil encontrar cópias "alternativas" dos programas.

Hoje, 26 anos depois, podemos utilizar os softwares emuladores para reproduzir o ambiente do CP 400 e assim executar os jogos que foram sucesso na época. Um emulador bem interessante é o MESS (http://www.mess.org/). O MESS é capaz de emular muitos consoles de jogos e sistemas de computador. Este artigo descreve o uso do MESS no sistema Linux.

Para que um emulador consiga reproduzir o ambiente de um computador antigo, são necessários basicamente dois itens, uma ROM da máquina real e um arquivo imagem de algum dispositivo de armazenamento que o computador antigo suportava, contendo os programas que deseja executar.

Estes arquivos, tanto a ROM quanto imagens de programas, são facilmente encontrados pela Internet. Para o CP 400 Color II, os arquivos com as ROMs são cp400bas.rom e cp400dsk.rom, ou, pode utilizar as ROMs do seu equivalente, o TRS-80 Color Computer II (CoCo2), os arquivos com as ROMs são bas12.rom, disk11.rom e extbas11.rom. Procure na Internet e acesse o site "Programas para o CP-400 Color" (http://sites.mpc.com.br/ric/cp400/cocomain.htm).

Estes arquivos de ROMs são a reprodução da BIOS da máquina real. Na instalação do MESS em um sistema Linux, os arquivos .rom devem ficar no caminho /usr/share/mess/roms/, em um diretório com um nome que identifique o sistema. Para o CP 400 Color II, os arquivos (cp400bas.rom e cp400dsk.rom) devem ficar em /usr/share/mess/roms/cp400/, e para o TRS-80 Color Computer II, os arquivos (bas12.rom, disk11.rom e extbas11.rom) devem ficar em /usr/share/mess/roms/coco2/.

Feito isso o MESS está pronto para ser executado. A sintaxe da linha de comando do MESS é:

mess [sistema] [mídia] [opções]

Se desejar conhecer as opções de linha de comando, execute o MESS com a opção -showusage. A princípio a opção que pode ser útil é a -window, que ativa o modo de janela, senão o MESS será executado em tela cheia. Para conhecer as mídias suportadas em cada sistema, use a opção -listmedia. Os parâmetros de mídia servem para carregar pela linha de comando alguma imagem de um dispositivo de armazenamento, como por exemplo -flop1 jogos.dsk ou -cass jogos.wav. Um exemplo de comando para execução do MESS, emulando o sistema CP 400:

$ mess cp400 -window

Com a execução do MESS, a tela inicial do sistema emulado aparecerá e a partir daí a operação será específica do sistema emulado, no nosso caso o CP 400 Color II (ou CoCo2). Caso não especifique o sistema pela linha de comando, o MESS exibirá um menu para a escolha, de acordo com as ROMs encontradas em /usr/share/mess/roms/.

Tela inicial do CP 400 Color II

Apesar de ter diversas opções para linha de comando, também é possível operar o MESS através de sua Interface de Usuário (UI). Esta interface é apresentada pressionando a tecla Tab, estando o teclado no modo de emulação parcial. A emulação do teclado pode ser alternada pressionando a tecla ScrLock, entre emulação total e emulação parcial.

Algumas teclas de função no MESS são apresentadas a seguir. Estas teclas só tem efeito com o teclado no modo de emulação parcial. Estas são as tarefas padrões destas teclas, é possível personalizar:

ScrLock     alterna a emulação do teclado;
Tab         acessa a Interface de Usuário;
P           pausa a emulação;
Esc         sai da emulação (MESS).

Para carregar uma imagem de disquete enquanto a emulação está em execução, entre na UI (tecla Tab), escolha o menu File Manager, selecione uma das entradas de disquete e navegue pelo seu HD para encontrar o arquivo imagem. Feito isso a emulação será automaticamente reiniciada com o disquete inserido. No CP 400 e no CoCo2 é possível ter até quatro disquetes inseridos ao mesmo tempo.

As instruções a partir daqui são específicas do sistema operacional do CP 400. São os comandos para o interpretador do CP 400.

Em uma operação com uso de imagens de disquetes, para listar o conteúdo de um disquete usa-se o comando DIR, para carregar o programa usa-se LOAD, LOADM etc., e para executar usa-se o comando EXEC. Exemplo:

DIR

SHENANI  BIN  2 B 13
TREKBOER BIN  2 B 13
SANCTUN  TRD  2 B 13
CALIXTO  TRD  2 B 13
SEAQUEST TRD  2 B 13
OK
LOADM "CALIXTO.TRD"
OK
EXEC

Quando há carregado mais de um disquete, é necessário especificar a unidade, por exemplo DIR 0, DIR 1 lista o conteúdo, LOADM "CALIXTO.TRD:1" carrega o programa da segunda unidade. Veja:

DIR 1

SHENANI  BIN  2 B 13
TREKBOER BIN  2 B 13
SANCTUN  TRD  2 B 13
CALIXTO  TRD  2 B 13
SEAQUEST TRD  2 B 13
OK
LOADM "CALIXTO.TRD:1"
OK
EXEC

Indo além, para apagar, copiar ou renomear um arquivo de programa usa-se KILL, COPY TO ou RENAME TO. Exemplos:

KILL "SHENANI.BIN"

COPY "SHENANI.BIN:1" TO "SHENANI.BIN:0"

RENAME "SANCTUN.TRD" TO "BLKSANC.TRD"

Também pela Internet é possível encontrar alguns documentos para operação do CP 400 Color II (Color Basic, Extended Color Basic e Color Disk Basic). O site "Color Computer stuff" (http://www.cs.unc.edu/~yakowenk/coco.html) é um bom ponto de partida.

Consulte a documentação do MESS para obter mais informações sobre a linha de comando e a interface de usuário.

Jogos do CP 400 Color II

quinta-feira, 4 de agosto de 2011

A Estação Espacial Internacional

Com pouco mais de 417 toneladas, a Estação Espacial Internacional (ISS) orbita a Terra numa altitude entre 278 km e 460 km, viajando em uma velocidade média de 27,7 mil quilômetros por hora, completando 15,7 órbitas por dia. Cada órbita leva 91 minutos. O projeto da ISS iniciou em 1994 o primeiro módulo foi lançado em 1998 pela Rússia.

Atualmente a ISS é composta de 15 módulos pressurizados e uma extensa Estrutura de Pilastras Integradas (ITS) que dá suporte a radiadores, painéis solares, compartimentos de carga despressurizados e outros equipamentos. A energia é fornecida por 16 painéis solares montados na ITS em adição a quatro pequenos painéis nos módulos russos. O último módulo, o décimo sexto, está previsto para ser incorporado em 2012.

O volume pressurizado total, com a combinação de todos os módulos, é atualmente 837 metros cúbicos. Estes módulos incluem laboratórios, compartimentos de ancoragem, câmaras impermeáveis ao ar, ligações e quartos de moradia. Com a adição do último módulo o volume passará a aproximadamente 1000 metros cúbicos.

Para dar um ambiente adequado à tripulação, a ISS conta com um Sistema de Suporte à Vida e Controle Ambiental (ECLSS). É um sistema que proporciona e controla a pressão atmosférica, a detecção e supressão de incêndio, os níveis de oxigênio e o suprimento de água. A prioridade do ECLSS é a atmosfera na ISS mas o sistema também coleta, processa e armazena a água utilizada pela tripulação. O sistema é capaz de reciclar a água usada no chuveiro, banheiro e condensação do ar.

A atmosfera a bordo da ISS é similar a da Terra. A pressão normal na estação é a mesma do nível do mar na Terra. Uma atmosfera como a da Terra oferece maior conforto aos tripulantes e é muito mais segura do que uma atmosfera de oxigênio puro, pois esta eleva o risco de incêndios.

No ambiente da estação espacial, a gravidade é a única força significante agindo nos astronautas e objetos. Em alguns momentos há a percepção de resistência da atmosfera, aceleração e correção da órbita, inclinação, rotação etc.

Por causa da alta velocidade de deslocamento, a ISS está em uma constante queda livre sobre o horizonte. Com isto a tripulação tem uma percepção de ausência de peso, da própria sensação de queda livre, dando o efeito de microgravidade.

Os efeitos adversos mais significantes, de um longo período em baixa gravidade, são atrofia muscular e osteopenia. Outros efeitos significantes incluem a redistribuição dos fluidos, lentidão no sistema cardiovascular, baixa produção de glóbulos vermelhos e enfraquecimento do sistema imunológico. Para prevenir alguns destes efeitos fisiológicos adversos, a estação é equipada com esteiras ergométricas, um dispositivo para exercícios resistidos, que fornece vários tipos de exercícios com peso, e uma bicicleta ergométrica. Cada astronauta realiza duas horas de exercícios por dia.

O fuso horário usado a bordo da ISS é o Tempo Universal Coordenado (UTC). As janelas da ISS são cobertas nas horas noturnas para dar a impressão da escuridão da noite, pois a estação passa, por dia, por 16 eventos de nascer do sol e por do sol.

Durante as visitas das missões espaciais, a tripulação da ISS segue o fuso da missão (MET), que é baseado na hora do lançamento do foguete. Como os períodos de sono entre o UTC e o MET geralmente diferem, a tripulação da ISS precisa ajustar seu sono já antes da missão espacial chegar e retornar ao fuso UTC após os visitantes partirem. Em um dia típico na estação, a tripulação dorme das 21:30 até as 06:00 e trabalha 10 horas nos dias úteis e 5 horas aos sábados.

A maioria dos alimentos para os tripulantes da ISS são armazenados de forma congelada, refrigerada ou enlatada. O cardápio é preparado pelos próprios astronautas, com a ajuda de nutricionistas, antes deles voarem para a estação. Como a sensibilidade do sabor fica reduzida pela redistribuição dos fluidos na cabeça, os alimentos apimentados são os preferidos pela maioria da tripulação. Cada tripulante possui um estoque individual de alimento.

Atualmente, a tripulação da ISS é composta de seis astronautas. A cada expedição enviada à estação, parte dos astronautas são substituídos, enquanto a outra parte fica até a próxima expedição. Nas últimas expedições a tripulação foi substituída de três em três astronautas. O período médio de um tripulante na estação são seis meses.

O propósito da Estação Espacial Internacional é ser um laboratório de pesquisa, observatório e fábrica no espaço. Também é planejada para proporcionar transporte, serviço e base para futuras missões à Lua, Marte e asteroides.

É uma parceria internacional de diversas agências espaciais, com as principais sendo a Administração Nacional do Espaço e da Aeronáutica (NASA), a Agência Espacial Federal Russa (RKA), a Agência Japonesa de Exploração Aeroespacial (JAXA), a Agência Espacial Canadense (CSA) e a Agência Espacial Europeia (ESA).


sábado, 30 de julho de 2011

Quake II no Fedora 15 64 bits

O Quake II é um jogo de tiro em primeira pessoa, desenvolvido pela Id Software, lançado em 1997. A série Quake foi uma grande inovação na época para o gênero de jogos em 3D. Foi um sucesso total.

De lá pra cá, com a popularidade crescente do Linux, foram desenvolvidos alguns "ports" do executável do Quake para o sistema Linux. Assim foi possível jogar sem problemas em uma plataforma além da Microsoft.

Surpreendentemente, até hoje é possível executar o Quake nas máquinas e sistemas atuais. Vou demonstrar o caminho para a instalação do Quake II em um Linux Fedora 15 de 64 bits.

Existe uma equipe denominada LIFLG (Linux Installer For Linux Gamers) com o website no endereço http://www.liflg.org/ que desenvolve instaladores para alguns jogos da plataforma Windows. Dentre eles está o Quake II.

Baixando o arquivo "quake2_3.21-r0.16.1-english.run" e acrescentando alguns arquivos do CD original do Quake II, o jogo estará completo para a execução no sistema Linux.

Este instalador e os executáveis disponibilizados pela LIFLG ainda estão em 32 bits, então para um sistema 64 bits é necessário ter as bibliotecas 32 bits instaladas, em especial o gtk+ 1.2 e o SDL 1.2. No Fedora 15 64 bits os pacotes que fornecem os requisitos são (versões até a data deste artigo):

gtk+-1.2.10-71.fc15.i686
glib-1.2.10-34.fc15.i686
SDL-1.2.14-11.fc15.i686
SDL_gfx-2.0.17-4.fc15.i686
SDL_mixer-1.2.11-5.fc15.i686
SDL_sound-1.0.3-6.fc15.i686
SDL_ttf-2.0.10-2.fc15.i686
libmikmod-3.2.0-12.beta2.fc15.i686
libmodplug-0.8.8.3-3.fc15.i686
physfs-1.0.2-3.fc15.i686
speex-1.2-0.13.rc1.fc15.i686

Instale-os caso não estejam e também suas respectivas dependências se necessário. Com as dependências resolvidas o instalador do Quake II pode ser executado, em uma linha de comando como a seguir:

$ linux32 ./quake2_3.21-r0.16.1-english.run

A ferramenta linux32 é necessária pois o instalador do Quake II da LIFLG não tem suporte nativo 64 bits.

Uma janela do instalador é aberta no ambiente gráfico do X para que especifique os parâmetros da instalação. É possível copiar automaticamente os arquivos do CD original ou, se desejar, copiá-los manualmente depois.

Os arquivos necessários originais do jogo, já em seus respectivos destinos, são:

(digamos que o diretório de instalação seja ~/quake2/ e incluindo os arquivos do update 3.20)

~/quake2/baseq2/pak0.pak
~/quake2/baseq2/pak1.pak
~/quake2/baseq2/pak2.pak
~/quake2/baseq2/players/*/*
~/quake2/baseq2/video/idlog.cin

Com tudo realizado, para iniciar o jogo basta executar o arquivo quake2 ou sdlquake2, a partir do diretório de instalação, ou por algum atalho que porventura tenha sido criado na instalação.


Qualquer dúvida existe uma FAQ no website da LIFLG. Aproveite a nostalgia!

quinta-feira, 21 de julho de 2011

Caracteres especiais na variável de ambiente do proxy

No ambiente do interpretador de comandos do Linux existem variáveis de ambiente que servem para armazenar o endereço do servidor proxy e assim os programas clientes, compatíveis com este recurso, as utilizam como parâmetros de configuração.

No Bash e similares existem as variáveis http_proxy, ftp_proxy, gopher_proxy, wais_proxy e no_proxy. Cada variável serve para determinado protocolo e a variável no_proxy especifica um conjunto de domínios, separados por vírgulas, para onde o proxy não será consultado.

A atribuição de valores para estas variáveis de ambiente por ser feita pelo comando "export http_proxy="http://endereço:porta" ou, se necessitar de autenticação, "export http_proxy="http://usuário:senha@endereço:porta", executado diretamente no prompt do shell ou pelo "/etc/profile" etc.

Nos casos de proxy com autenticação de usuário e senha pode acontecer de existirem caracteres especiais, principalmente na senha, e nestes casos, para que o shell interprete corretamente os valores, pode ser necessário usar os códigos de escape nestes caracteres. Trata-se da codificação por cento para caracteres de escape em URL (http://dan-scientia.blogspot.com/2010/05/codificacao-por-cento-para-caracteres.html).

Por exemplo, uma senha definida como 12@elo/6.c deve ser informada na declaração da variável na forma 12%40elo%2F6%2Ec, assim não haverá problemas na interpretação pelo shell.