quinta-feira, 25 de junho de 2009

C'est où le son dans Firefox en Ubuntu ?



Même avec la présence du plugin VLC [1] pour Firefox sur Linux, le son ne marche pas tout simplement...

À travers l'adresse secret "about: config" Firefox, nous avons la liste des plugins installés dans le navigateur, notamment le plugin VLC (qui permet des extensions de fichiers tels que .OGG) :



Néanmois, il nous reste mettre en place le wrapper ALSA [2] pour des applications OSS [3].

Au Linux il existe le paquet "alsa-oss" qui fournisse précisément cette fonctionnalité ! Ainsi, il faut lancer l'instruction suivante en tant que "root" :

# apt-get install alsa-oss

Il vous suffit ensuite de redémarrer Firefox pour que le son passe à marcher !



Je remercie Paulo de Tarso [4] pour ce conseil !

Références :

[1] VLC open-source multimedia framework, player and server

[2] ALSA: the Advanced Linux Sound Architecture

[3] OSS is the free version of the Open Sound System

[4] 70015: A vida com Linux, Mac, Windows e Iphone


sexta-feira, 19 de junho de 2009

Testando HTTP sem usar um navegador



Um servidor WEB funciona utilizando o protocolo HTTP [1], e responde a requisições tais como "HTTP GET" vindas de um cliente (o browser).

Geralmente não vemos o que está sendo transmitido entre as duas partes: cliente (navegador) e servidor WEB. Entretanto, podemos facilmente inspecionar esse tráfego de dados através da ferramenta telnet [2], disponível em praticamente qualquer plataforma.

Para fazer o teste, primeiro abra um terminal no Linux ou um prompt de comando no Windows. Você vai precisar então digitar o comando com a seguinte sintaxe:

telnet [servidor] [porta]

Por exemplo, para acessar a página do Grupo de Usuários PostgreSQL do Brasil [3], execute o seguinte:

telnet postgresql.org.br 80

Com isso você estará conectado ao servidor WEB especificado e poderá desta forma executar qualquer comando do protocolo HTTP [4] desejado, tal como GET, HEAD ou POST.

Em seguida, para efetuar uma requisição HTTP do tipo GET ao servidor, você precisará executar um comando no seguinte formato:

GET [página] HTTP/1.0

Para exemplificar, faça uma simulação à esta página, digitando o texto a seguir no telnet:

GET /node/61 HTTP/1.0

Atenção: pressione ENTER duas vezes. Se a página existir no servidor, você terá como resultado algo como ilustrado na figura abaixo.




Preste atenção no cabeçalho (header) HTTP enviado pelo servidor após a execução. São justamente estes dados que o browser interpreta automaticamente e o usuário não vê.


HTTP/1.1 200 OK
Date: Sun, 21 Jun 2009 02:08:33 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.0-8+etch15 mod_ssl/2.2.9 OpenSSL/0.9.8g
X-Powered-By: PHP/5.2.0-8+etch15
Set-Cookie: SESSd41d8cd98f00b204e9800998ecf8427e=baefb8cb6bc0a5ed29340ec05aa6ff38; expires=Tue, 14 Jul 2009 05:41:54 GMT; path=/
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Last-Modified: Sun, 21 Jun 2009 02:08:34 GMT
Cache-Control: store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Connection: close
Content-Type: text/html; charset=utf-8


A primeira linha é uma das mais importantes do cabeçalho, pois ela indica se houve sucesso ou erro durante o atendimento da requisição HTTP. O código 200 no exemplo significa que a página HTML foi recuperada com sucesso.

Você pode ainda receber um código de status 404 caso a página não seja encontrada (ou seja, o famoso "Erro 404"), o código 301 se a página tiver sido movida permanentemente ou 401 caso você não tenha autorização para acessá-la.

A lista completa dos códigos de status do protocolo HTTP pode ser consultada aqui [5]. Se você é um administrador de sistemas ou desenvolvedor de aplicações WEB possivelmente esta abordagem lhe será útil. :D

O conteúdo HTML que será renderizado pelo browser vem logo após o cabeçalho.

Referências:
[1] http://pt.wikipedia.org/wiki/Http
[2] http://pt.wikipedia.org/wiki/Telnet
[3] http://postgresql.org.br
[4] Hypertext Transfer Protocol -- HTTP/1.0
[5] RFC 2616 - Status Code Definitions

domingo, 14 de junho de 2009

Sessão nostalgia: Microsoft Windows 3.1



Ano: 1993. O sistema operacional geralmente encontrado em computadores pessoais aqui era o MS-DOS (versão 5.0, no máximo 6.22!). O Microsoft Windows 3.1, que era opcional na época, não passava de um gerenciador de aplicativos, o "Program Manager". O Linux? Esse não devia ter 2 anos ainda e ninguém fora do meio acadêmico ou talvez longe da Escandinávia tinha conhecimento dele...


O tempo passou e aquele simples agregador de janelinhas foi tomando espaço e quem passou a ser esquecido foi o pobre do MS-DOS, que nos dias atuais não passa de um "Prompt de comando". Ninguém mais ouviu falar de AUTOEXEC.BAT, HIMEM.SYS, GORILLA.BAS, MEMMAKER, QEMM, DOS4GW...


E eis que essa semana vejo um artigo na Internet em que um polonês maluco havia instalado o Microsoft Windows 3.1 no Symbian [1]...! Resolvi seguir o tutorial e fazer o mesmo, só por brincadeira, e funcionou mesmo! Aliás, não serve para nada além disso, pois fica lento, ruim de visualizar na tela, e sem teclado alfanumérico...


Mesmo assim, empolgado pura e simplesmente pelo fator nostálgico, resolvi testar tal inutilidade janélica também no Linux! No caso do N95, o pseudo sistema operacional (AKA Win3.1) estava rodando em cima de um ambiente controlado pelo do DOSBox [2]. Na realidade o maior trabalho nessa façanha foi o porte do DOSBox para o Symbian pelo tal "kolijoco".


No Linux, basta instalar o pacote dosbox. Em distros Debian-like, podemos fazer isso através do comando:

# apt-get install dosbox


Os discos de instalação do Windows 3.1 (na realidade 7 disquetes de 1,44 MB) podemos baixar de fontes extra-oficiais, como sites 4shared ou torrents. Acho que ninguém vai se importar de piratearmos um software que já está debutando, né?


Abra um terminal, dirija-se ao diretório em que o Windows 3.1 será instalado e execute o DOSBox:

$ cd /opt/win31
$ dosbox


Em seguida, já dentro do DOSBox, execute alguns comandos para montar o disco rígido e o primeiro disquete de instalação:

mount c .
mount a /tmp/win31setup


Neste exemplo, os drives serão mapeados no DOS conforme o esquema a seguir:
  • C: diretório /opt/win31 no Linux;
  • A: diretório /tmp/win31setup no Linux.

Execute a instalação do Windows através do comando a seguir:

a:\setup.exe


Então basta seguir um clássico "Next, Next, Finish" e ao final executar:

c:
cd \windows
win


No final, eis o resultado: o Microsoft Windows 3.1 sendo executado em uma janelinha de 640x480 pixels no Linux!



Para ter uma idéia do que está acontecendo, veja a tela inteira do Ubuntu Linux, rodando o Gnome como gerenciador de desktop e o DOSBOX ali no canto, totalmente sob controle...




Para facilitar as execuções posteriores, crie um arquivo com o nome "dosbox.conf" dentro do diretório do Windows 3.1 com o seguinte conteúdo:

[sdl]
# sem isso as setas do teclado não funcionam...
usescancodes=false

[autoexec]
# meu teclado é layout alemão, substitua "gr" por "br"
keyb gr
# o resto aqui é para executar o windows ao iniciar
mount c .
c:
cd windows
win

Agora, isso pode parecer piada nos tempos atuais: o Windows 3.1 recém-instalado não chegava a ocupar 12 MB de espaço em disco! Quem imaginaria que um dia o Windows iria exigir 10 GB de HD, hein!




O mais surpreendente é pensar que conseguíamos ser felizes com informática mesmo sem a World Wide Web... Agora vou procurar outras relíquias computacionais... Será que acho o Wolfenstein 3D ou Microsoft Word 6..? :D


Referências:
[1] Windows 3.1 Runs On a Nokia N95, Creating Dangerous Ripple in Space-Time
[2] DOSBox: a x86 emulator with DOS