quinta-feira, 26 de abril de 2012

Andando No Ar

A NASA (http://www.nasa.gov/) possui um interessante portal de conteúdo multimídia, fornecendo imagens, áudios e vídeos das suas missões, pesquisas etc. Na seção de vídeos (http://www.nasa.gov/multimedia/videogallery/index.html) está postado um belíssimo videoclipe denominado "Walking On Air" (http://www.nasa.gov/multimedia/videogallery/index.html?media_id=141042671). Este vídeo retrata uma série de fotografias feitas pela tripulação da Expedição 30 a bordo da Estação Espacial Internacional (ISS).

As imagens capturadas são de diversos lugares ao redor do mundo, junto com fascinantes efeitos luminosos, em especial as Auroras Austral e Boreal. A sequência de lugares e eventos está ordenada com o tempo no vídeo:

0:01 - Estrelas sobre o sul dos Estados Unidos
0:08 - Costa oeste dos E.U.A ao Canadá
0:21 - Europa Central ao Oriente Médio
0:36 - Aurora Austral sobre o Oceano Índico
0:54 - Tempestades sobre a Africa
1:08 - Parte central dos Estados Unidos
1:20 - Meio-oeste dos Estados Unidos
1:33 - Reino Unido ao Mar Báltico
1:46 - Pôr da Lua
1:55 - Norte dos Estados Unidos ao Leste do Canada
2:12 - Aurora Austral sobre o Oceano Índico
2:32 - Cometa Lovejoy
2:53 - Aurora Boreal sobre a Baía de Hudson
3:06 - Reino Unido à Europa Central

A Expedição 30 iniciou oficialmente com a despedida da nave Soyuz TMA-02M da ISS, em 21 de Novembro de 2011, levando embora a equipe da Expedição 28/29. A Expedição 29 foi lançada à ISS na nave Soyuz TMA-22 em 14 de Novembro de 2011 e complementada com a Expedição 30, lançada em 21 de Dezembro de 2011 na nave Soyuz TMA-03M. A equipe da Expedição 30 é formada pelos astronautas Anton Shkaplerov, Anatoly Ivanishin e Dan Burbank, da Expedição 29, e Oleg Kononenko, Andre Kuipers e Don Pettit, da Expedição 30.

segunda-feira, 16 de abril de 2012

Processos em execução no sistema Linux

O Linux, como qualquer sistema UNIX, é um sistema operacional multitarefa, isto é, vários processos podem ser executados ao "mesmo tempo". Um processo é um programa em execução independente que tem seu próprio conjunto de recursos.

No Linux, os recursos do sistema, como a memória e os discos, são gerenciados pelo kernel, que é o núcleo do sistema operacional. Tudo mais, em execução no sistema, são processos.

Quando o usuário se conecta, seu terminal é controlado pelo seu shell, que é um processo em execução. Então, o shell cria um novo processo sempre que o usuário fornecer um comando para ser executado. O sistema operacional trabalha com uma infinidade de processos e possui alguns meios para controlá-los.

Os processos possuem um conjunto de características, as principais são:

- Proprietário do processo (UID e GID);
- Estado do processo (em espera, em execução, etc);
- Prioridade de execução;
- Recursos de memória e CPU.

Um PID (Process Identifier) é um número de identificação que o sistema dá a cada processo. Para cada novo processo, um novo número deve ser atribuído. Não se pode ter um único PID para dois ou mais processos ao mesmo tempo.

É comum que um processo já existente se duplique para que a cópia possa ser atribuída a uma nova tarefa. O processo de origem recebe o nome de "processo pai" e o novo é denominado "processo filho". Nesse ponto que o PPID (Parent Process Identifier) passa a ser usado. O PPID de um processo é o PID de seu processo pai. No Linux, o processo "pai de todos" é o init e possui o PID de número 1.


PS

O comando 'ps' informa quais os processos em execução no momento, exibindo o estado dos processos correntes. Se somente 'ps' for digitado na linha de comando, o sistema mostra os processos do usuário. Uma combinação de opções existe para obter mais detalhes.

Principais opções:

-e                 seleciona todos os processos
-u ou -U usuario   seleciona pelo ID efetivo ou real do usuário
-t terminal        seleciona pelo tty
-f ou -F           listagem total ou extra total
-l                 formato longo
-p pid             seleciona pelo PID

Observação: O comando 'ps' aceita diferentes sintaxes nas opções, mantendo compatibilidade com o UNIX, BSD e GNU. Por exemplo, 'ps aux' é reconhecido para compatibilidade com a sintaxe BSD.


TOP

O comando 'top' também exibe as tarefas do sistema mas em uma atualização que se repete. O 'top' proporciona uma visão em tempo real do sistema em execução. As informações do sistema, separadas em categorias, são exibidas ordenadamente e podem ser modificadas por sua interface interativa.

Principais comandos de interação:

l       liga/desliga a exibição de "Uptime" e "Load Average"
m       liga/desliga a exibição de uso de memória e swap
t       liga/desliga a exibição do estado de tarefas e uso da CPU
1       liga/desliga a exibição de CPUs separadas ou unificadas
u       especifica o nome do usuário
< ou >  move entre as colunas para ordenação
f       define quais colunas serão vistas
        (digitando a letra correspondente exibe/exclui a coluna)
o       define a posição das colunas visíveis
        (digitando a letra correspondente em maiúscula aproxima, em minúscula afasta)
q       sai do programa


Planos de Execução

Os processos que são controlados diretamente pela tela chamam-se processos em primeiro plano. Os outros processos que foram inicializados, mas que o usuário não possui controle sobre eles, chamam-se processos em segundo plano. Podemos ter um processamento em primeiro plano, porém muitos processamentos em segundo plano podem ser executados simultaneamente.

O ambiente gráfico X Window facilita a execução de diversos programas ao mesmo tempo. No console, o usuário terá que executar os programas em segundo plano, mantendo no máximo um em primeiro plano. Para executar um comando em segundo plano, coloca-se o símbolo & no final da linha de comando, por exemplo:

# gcc prog.c &

O prompt retornará e o usuário poderá continuar executando outros comandos enquanto o primeiro está sendo processado. Antes do prompt ser retornado, o shell informa o número do serviço (trabalho) que é atribuído ao comando e o PID do processo, veja um exemplo:

[1] 411

O [1] é o número do serviço e o 411 é o número de identificação do processo (PID).


BG

Se o programa já estiver sendo executado, em primeiro plano, o usuário deverá usar o comando 'bg', que põe um processo em execução em segundo plano.

Para isso digita-se 'Ctrl+Z', assim o processo recebe um sinal SIGSTOP e o shell interrompe a execução do mesmo. Então usa-se o 'bg' para colocar o processo interrompido no modo de execução em segundo plano e o processo irá continuar sua execução.

Sintaxe do comando 'bg':

bg [%id]

%id é o número do serviço (necessário ter o sinal de porcentagem antes).

Exemplo:

# bg %1

Imediatamente após o uso das teclas 'Ctrl+Z' o shell exibe o número do serviço junto com outras informações.


FG

Para retornar o processo ao primeiro plano, usa-se o comando 'fg', que transferirá o controle do terminal para o processo.

Sua sintaxe é a mesma do comando 'bg'.

fg [%id]


JOBS

Para descobrir o número do serviço atribuído ao processo usa-se o comando 'jobs'. O comando 'jobs' lista os processos que estão parados ou executando em segundo plano pelo shell. Os processos são ordenados pelo número do serviço que é atribuído ao seu comando. Veja a sintaxe:

jobs [-l]

O parâmetro -l faz com que o comando 'jobs' liste também o PID de cada processo. Em sua saída o comando 'jobs' retorna, além do número do serviço, o estado do processo, a linha digitada no comando e, opcionalmente, o PID.


Praticando

No ambiente gráfico, inicie alguma aplicação gráfica pela linha de comando, digitada no prompt do shell em uma janela de terminal. Por exemplo a calculadora gráfica do KDE (kcalc). Envie o sinal SIGSTOP para o processo da calculadora e tente operá-la no ambiente gráfico. Depois, coloque o processo no modo de execução em segundo plano e verifique sua operação. Por fim, liste os processos que estão em segundo plano.

Roteiro:

$ kcalc

Ctrl+z

$ bg %1

$ jobs

sexta-feira, 13 de abril de 2012

Comic Book Archive

Os arquivos do tipo Comic Book são arquivos de arquivamento contendo diversos arquivos de imagens, em ordem sequencial, das páginas de uma revista de história em quadrinhos. É um formato eletrônico para uma revista de história em quadrinhos.

São arquivos de arquivamento pois tratam-se puramente de arquivos nos tipos zip, rar, ace, 7z ou tar, apenas com a extensão renomeada para o tipo de comic book (cb). A última letra da extensão indica o tipo do arquivamento:

.cbr = rar
.cbz = zip
.cb7 = 7z
.cbt = tar
.cba = ace

Seu conteúdo são arquivos comuns de imagem, preferencialmente nos formatos png, jpeg, gif, tiff ou bmp, nomeados em sequência numérica, em geral de acordo com o número da página na revista, na qual a imagem reproduz.

É importante, nos nomes dos arquivos de imagem, os primeiros números estarem preenchidos com zeros à esquerda para se igualarem na quantidade de dígitos do número do último arquivo. Assim, não haverá problema de interpretação nos softwares leitores de comic book, quanto a ordem dos arquivos. Por exemplo, o software apresentará os arquivos como 1, 10, 11, ..., 2, 20, 21, ..., ao invés da ordem 1, 2, 3, ..., 10, 11, .... Então o correto é renomear para 01, 02, 03, ....

Existem diversos softwares para a exibição dos arquivos do tipo comic book, nas mais diversas plataformas e sistemas operacionais. Apresento neste artigo alguns dos softwares para os sistemas Linux e Windows:

Okular (http://okular.kde.org/)

O Okular é um leitor universal de documentos para o ambiente KDE no Linux. Suporta dezenas de tipos de arquivos de documentos e imagens, e inclusive os arquivos do tipo comic book. Por não ser dedicado ao comic book, a visualização é padrão para documentos em geral. É gratuito.

Evince (http://projects.gnome.org/evince/)

O Evince é um leitor de documentos para o ambiente GNOME no Linux. Suporta múltiplos formatos de documentos e imagens, e também comic book. É simples e leve. Por não ser dedicado ao comic book, a visualização é padrão para documentos em geral. Possui também uma versão para o sistema Windows. É gratuito.

MComix (http://mcomix.sourceforge.net/)

O MComix é um leitor de arquivos de imagem especialmente designado para comic book. É uma ramificação do projeto Comix. Lê os arquivos imagem diretamente ou arquivados em zip, rar, 7z ou tar. Na visualização do comic book, as páginas (imagens) avançam inteiramente uma a uma, e não rolando para baixo. O MComix abre automaticamente o próximo arquivo de comic book que estiver no diretório corrente. Possui versões pra Linux e Windows e é gratuito.

QComicBook (http://qcomicbook.linux-projects.net/)

O QComicBook é um leitor específico para arquivos comic book no sistema Linux. Na visualização, as páginas (imagens) também podem avançar inteiramente uma a uma, quadro a quadro, e não rolando para baixo. É capaz de exibir duas páginas por vez, entre outros recursos. É gratuito.

ComicRack (http://comicrack.cyolito.com/)

O ComicRack é talvez o melhor leitor de comic book para o sistema Windows. Inclui um sistema gerenciador para a biblioteca de comic book. Possui muitos usuários e é gratuito.

CDisplayEx (http://www.cdisplayex.com/)

O CDisplayEx é um leitor de comic book baseado no CDisplay (que está descontinuado). O CDisplay foi o primeiro software a suportar o formato cbr. É um leitor simples para o sistema Windows e é gratuito.

segunda-feira, 2 de abril de 2012

Problema de Lógica: Andares e apartamentos

Evandro e Augusto moram no mesmo edifício. O número do andar de Evandro coincide com o número do apartamento de Augusto e a soma dos números dos dois apartamentos é 56. Se cada andar tem 12 apartamentos, numerados de 1 a 12 no primeiro andar, de 13 a 24 no segundo andar e assim por diante, quais os números dos apartamentos de Augusto e Evandro?





RESPOSTA





Se o número do andar de Evandro é o mesmo número do apartamento de Augusto e a soma dos números dos dois apartamentos é 56, então a soma do número do apartamento de Evandro com o número do andar de Evandro também é 56:

Se: andar(E) = apto(A)
e: apto(E) + apto(A) = 56
então: apto(E) + andar(E) = 56

Somente no quinto andar é possível uma soma que resulte em 56, assim, andar 5 + apto 51 = 56.

Portanto, os números dos apartamentos de Augusto e Evandro são 5 e 51.