Tenho a felicidade de trabalhar em um ambiente linux utilizando apenas softwares
disponíveis publicamente, a maioria deles do Projeto GNU.
- Editor: emacs
- O emacs já foi chamado de Sistema Operacional Escrito
em Lisp por ser profundamente customizável atraves de
funções em lisp. O emacs propriamente dito exporta um conjunto
de primitivas lisp que são então utilizadas para implementar a
funcionalidade desejada.
- O emacs se adapta ao tipo de arquivo que esta editando. Existem
diversos "modos" especiais para, por exemplo, editar listas e
fazer desenhos. Pode-se abrir mais de um arquivo e/ou janela ao mesmo
tempo. Podem-se editar arquivos que estão em outro computador.
- Entre os diversos recursos que o emacs possui
está o de disparar programa externos passando argumentos, a entrada
padrão e exibindo a saida padrão do programa em uma janela do
emacs. Com isto
é pode-se ter um IDE -- Integrated Development Environment
(Ambiente Integrado de Desenvolvimento) baseado em emacs num terminal a
caractere.
- Você pode também compor e ler seus e-mails dentro
dele, acessar news, verificar o calendário, imprimir, jogar e
até consultar um analista.
- Interface Gráfica: X Window System
- Existe outra? Na realidade existe pelo menos uma outra
opção: openGL da SGI mas não sei se roda no linux.
- Gerenciador de Janelas: fvwm
- Uso fvwm mais por inércia: ele atende as minhas
necessidades e quando começei era a única.
- Browser: Netscape/lynx
- O Netscape é o browser padrão para ambientes
gráficos no mundo Unix. As versões que utilizo não
são as mais recentes mas quebram o galho. Para mim, o maior problema
do netscape é que ele vaza, depois de alguns dias rodando ele consome
dezenas de megabytes de memória. Talvez versões mais novas
não apresentem este problema.
- O lynx é importante
tanto para verificar que as páginas são legiveis sem as
imagens quanto por ser "leve". Creio que ele possui todos os
recursos do netscape a menos das imagens e algumas a mais como lista de
links da página. Muitas vezes acesso a internet atraves de um link de
baixa velocidade ou atraves de uma máquina sem X instalado e ai a
unica opção é o lynx.
- Outro uso frequente do lynx
é como interpretador de comandos restrito (restrict shell). A
idéia é criar uma página web com os comandos mais
utilizados e pela ativação dos links executar os comandos ou
disparar scripts para executá-los.
- Leitor de e-mail: elm/mutt
- O elm é um
velho conhecido, a muitos anos que o utilizo. É bastante
rápido, prático e tem todos os recursos que preciso. As vezes
ele se confunde nos e-mails com "MIME". Nestes casos utilizo o mutt. A tendência é utilizar
exclusivamente o mutt. Espera-se que em breve a versão 1.0 esteja
disponível.
- Recepção de e-mails: fetchmail
- Descendente do popclient, o fetchmail foi escrito por Eric
S. Raymond para inicialmente recuperar e-mail de um servidor
POP3.
Com o passar do tempo, passou a suportar
POP2,
POP3, RPOP,
APOP, KPOP
(Kerberos
authentication),
IMAP (veja
também: The IMAP Connection) e
ESMTP ETRN.
Bastante flexível, podendo acessar mais de um servidor de e-mail,
recuperar apenas as mensagens menores que x KBytes, etc. Veja a relação
de recursos aqui. Pode funcionar também como "daemon"
recuperando periodicamente as mensagens.
- Classificação de e-mails: procmail
- Imbatível. Escrito por Stephen "BugLess" R. van
den Berg é o melhor programa para classificar e-mails que
conheço. Extremamente flexível: os e-mails são
separados em arquivos utilizando critérios de seleção
baseados no remetente, destinatario, comprimento da mensagem, assunto,
etc. Pode também ser utilizado para compôr respostas
automáticas.
- Fazem parte do pacote, além do procmail:
- SmartList -- para gerenciamento de listas de
distribuição (mailing lists)
- formail -- para extração de campos de e-mail e
reformatação do cabeçalho (header)
- Ainda relacionado com correio eletrônico está o
servidor de e-mail
POP3
cucipop
do mesmo autor.
- Leitor de news: tin
- Provavelmente não é o melhor cliente de news mas
é simples, pequeno e resolve o problema. Pode ser facilmente adaptado
às necessidades do usuário.
- Compilador C: gcc/egcs
- É um dos muito poucos compiladores de qualidade
disponíveis gratuitamente na internet. O único outro que eu
conheço é o lcc que é bem mais recente.
- Vários fabricantes de equipamentos e softwares tem preferido
portar o gcc a
escrever e manter um compilador. A qualidade do código gerada
é bem razoável.
- Funciona também como "cross-compiler" podendo
gerar código para micro-processadores de 8 e 16 bits.
- Depurador: gdb
- Outro produto da Free Software
Foundation. Faz par com o gcc utilizando inclusive
uma biblioteca comum para escrita e leitura de código objeto.
- Os comandos estão disponíveis através de linha de
comando. Esta interface não é das mais agradáveis mas
resolve o problema. Por isso, foram criadas "cascas" (wrappers)
que oferecem ao usuário uma interface gr´fica. Uma delas
é o DDD -- The Data
Display Debugger.
- Controle de Versão: RCS/CVS
- É incrível como são poucas as pessoas que
fazem uso de um programa de controle de versões! A minha
experiência se resume ao RCS mas é muito
útil tanto para manter versões de programa como de
documentação como, até mesmo, páginas
web. Quando se está depurando um programa é sempre bom ter uma
versão original para controle das alterações. No caso
de documentação e páginas web, pode-se "voltar no
tempo" e verificar quem, quando e porquê modificou o arquivo.
- O CVS
é uma versão do RCS para desenvolvimento
paralelo em grupo. Diversos desenvolvedores alteram os mesmos arquivos ao
mesmo tempo e o CVS,
na medida do possível, administra os conflitos. Atualmente diversos
projetos comunitários na internet (open source) utilizam um
repositório semi-público com os fontes que podem ser lidos e alterados.
- Controle de Configuração: Aegis
- Outra ferramenta pouco utilizada pelos desenvolvedores de software
é o Aegis. Com
ele é possível desenvolver um sistema mantendo uma
versão "mestre" sempre consistênte e pronta para ser
demonstrada e/ou distribuída. Ele não permite a entrada de
código que não tenha sido validado e testado no
repositório. Além disso ele mantém um registro dos
diversos processos aos quais o software foi submetido. Vale a pena
utilizá-lo se você tem alguma disciplina ao programar!
- Conexão segura via internet: ssh
- Hoje em dia a preocupação com a segurança
está cada vez maior e com a internet cada vez mais vasta passa a ser
essencial a proteção das senhas de acesso. Quem garante que
quando você acessa um computador remoto que exige
identificação que alguem, em alguma máquina no meio do
caminho, não esta bisbilhotando? O ssh evita isto criptografando a
comunicação.
- Programação de scripts CGI: perl
- Realmente o perl faz juz ao seu
acrônimo: Practical Extraction and Report Language. É
muito fácil extrair informações de arquivos texto, os
vetores associativos e os recursos de acesso a base de dados SQL ou
não tornam o perl uma linguagem
muito produtiva para desenvolvimento rápido.
- A partir da versão 5 ficou mais fácil o
desenvolvimento de sistemas maiores já que foi introduzido o conceito
de módulo. Isto permitiu que muitas pessoas contribuissem com
código. Hoje existem módulos que implementam desde bibliotecas
matemáticas até análise de páginas web passando
por processamento de texto e gráfico. Existe um repositório
global de módulos perl com o nome de CPAN: Comprehensive Perl Archive
Network. Uma cópia local do CPAN está disponível aqui.
Última alteração: