terça-feira, 14 de julho de 2009

A Era do Console

Ainda lembro dos "mágicos" da época do DOS. Aquele pessoal que criava seus prompts coloridos ou com gráficos inimagináveis para época (caracteres especiais e símbolos perdidos em páginas de código quase esquecidas). Lembro quando um colega comprou o MS DOS 5.0 e passamos uma tarde para configurar a tal página 850. O Manual dizia que os acentos do português só apareceriam corretamente nela. Tudo muito simples, apenas algumas linhas no CONFIG.SYS e outras no AUTOEXEC.BAT. É, o Word era modo texto. Depois disso, descobrimos que o teclado também tinha que ser configurado... mais linhas no AUTOEXEC.BAT. Claro que nada disso resolvia o problema de imprimir os acentos na impressora, isso era outra batalha!

Mas já era uma vitória ter maiúsculas e minúsculas... coisa opcional nos anos 80... acentos era luxo :-)

O livro dos mágicos era o manual do MS DOS. Coisa rara porque naquela época muita gente nem sabia que se vendia isso. Software ainda vinha com manual impresso e poucos liam. Os que liam se tornavam seres míticos, capazes de dominar o DOS e outros dinos da época como o SCO.

Depois disso eu ganhei um mouse, mas achava que só serviria para desenho :-D Mas eu estava enganado. O mouse e as GUI matariam o console em pouco tempo. Eram os anos 90... Windows 3... coisas cabeludas da época. Bom mesmo era usar o Amiga de outro colega com jogos e o poderoso Amiga OS. No PC só DOS e o Windows que rodava no DOS. Consumia tanta memória (RAMs de 1MB, HDs de 10 MB eram comuns) que não sobrava espaço para mais nada, QEMM que o diga. Meu micro não rodava Word for Windows, porque era um AT 286, mas o Windows enrolava nele... com o Windows 3.1 consegui um 486, 4MB de RAM e finalmente pude rodar o Word for Windows ! Antes eu me divertia com a sofisticação do write.exe... acentos impressos em qualquer impressora e documentos com qualidade de carta (essa é velha)! Mas o console continuaria reinando até o Windows 95.

Hoje com aplicativos Web e a tal da Web 2.0, o console perdeu a graça. Console só em sistema velho de farmácia ou posto de gasolina. Fosseis vivos escritos em Clipper. Eu ainda uso todo dia no Linux, no Mac e no Ruindows, gente não muda facilmente. A era do console acabou, mas que o bicho ajuda, ajuda.

Eu tentei escrever scripts com saída colorida em Python. Descobri que existem várias bibliotecas para isso, mas bibliotecas multiplataforma não achei nenhuma. Claro, quem que ainda trabalha com isso?

Curses, WConio e pequenos scripts abundam, mas todos precisam de módulos em C que são bem chatos de distribuir com o script, principalmente pro Ruindows.
Eu acabei por escrever um pequeno módulo para trocar a cor, limpar a tela e configurar o título da janela do console ou xterm. Até agora está funcionando no Linux e no Mac, mas falta unificar a parte Windows. No console do Windows não tem muito o que fazer, senão usar a ctypes para chamar algumas funções da kernel.dll. Apesar de usar a ctypes, dá pra mascarar a inicialização de acordo com o sistema operacional e fazer tudo em Python.

Acabei criando um projeto open source para isso. Pelo menos não vou esquecer o trabalho que deu, nem ter que fazer backup sozinho. Vou colocar os fontes aqui: http://code.google.com/p/colorconsole/

Fuçando essa arte quase esquecida, achei como mudar o prompt padrão do console do Windows XP. É bem simples, como tudo no Windows:
1. Você abre o regedit
2. Procura a chave [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\]
3. Crie uma entrada string com o nome PROMPT
4. Digite seu novo prompt, por exemplo: [%computername%]$S$P$G
5. Log off e log in, claro senão não seria o velho XP :-)
6. Se tudo deu certo, seu prompt padrão do Ruindows foi mudado!

Passo-a-passo aqui

Se você ainda usa o cmd.exe diariamente, vale a pena instalar o "Open Command Window Here" no Windows Explorer. Um power toy da Microsoft que pode ser baixado aqui. Como eles mudam o site deles a cada 4h, melhor procurar no Google.

3 comentários:

Adson Cristian disse...

Oi, Nilo, gostei muito desse artigo, me deu muita saudade dessa época, e também concordo com muita coisa que você disse, especialmente o "gente não muda fácil". E por falar em não mudar, estou querendo criar um fóssil vivo usando Python: uma interface texto, mas meu problema é conseguir uma função no estilo get do clipper. Aquelas entradas de texto cheias de recurso de validação. Onde posso conseguir ajuda para esta missão? Grato.

Adson Cristian disse...

Oi, Nilo, fantástico o seu artigo, gostei muito e me deu aquela nostalgia. Também conconrdei com muito do que você disse, especialmente o "gente não muda fácil". E por falar em não mudar, estou precisando criar um recurso modo texto em Python ao estilo @ x,y get do Clipper, aquelas caixas de entrada de dados com recursos de validação. Tem alguma dica de onde posso conseguir ajuda? Fico muito grato.

Nilo Menezes disse...

Adson,

Verifique a biblioteca ncurses. Ela tem muita coisa interessante como janelas, cores, controle do cursor e até a entrada de dados que você procura.

http://docs.python.org/library/curses.html

http://www.amk.ca/python/howto/curses/

Tem também a urwid:
http://excess.org/urwid/

[]

Nilo Menezes