domingo, 7 de fevereiro de 2010

Pragmatic Thinking and Learning: Refactor Your Wetware (Andy Hunt, Pragmatic Bookshelf, 2008)

Pragmatic Thinking and Learning é um livro que desperta interesses muito para além dos habituais destinatários (programadores e afins). Andy Hunt (co-autor do clássico The Pragmatic Programmer, de 1999) apostou num tema potencialmente complexo mas fundamental para aqueles que precisam de melhorar as suas competências cognitivas.

Para mim, a palavra-chave recorrente no livro é "deliberado" e nota-se um processo poderoso de auto-conhecimento, analisando:
  • como funciona o cérebro;
  • o lado intuitivo e criativo do cérebro;
  • como corrigir os bugs do cérebro;
  • como aprender eficazmente (deliberadamente);
  • como ganhar experiência;
  • como gerir o foco e a atenção;
  • o que vai para além de tudo isto.
É, sem dúvida, um livro que vale a pena ler, de linguagem acessível e com implicações profundas. Noções como a de um "portfólio" de competências, a ser gerido como se de um portfólio financeiro se tratasse, ou o emprego de técnicas visuais (mind maps e outras) são altamente eficazes e prometem altos retornos do investimento.

sábado, 6 de fevereiro de 2010

Automating System Administration with Perl (David N. Blank-Edelman, O'Reilly, 2009)

Na linha do seu antecessor (Perl for System Administration: Managing multi-platform environments with Perl), este livro é uma excelente referência para desenvolver ferramentas em Perl que melhorem a produtividade de administradores de sistemas e rede.

Duas características importantes do livro são a ênfase na portabilidade da linguagem (representada aqui em ambientes Linux/Unix, Microsoft e Mac OS X) e a abundância de módulos disponíveis por via da rede CPAN, que permitem em regra desenvolver programas poderosos com poucas linhas de código.

As áreas de aplicação representadas são as seguintes:
  • Sistemas de ficheiros (cap. 2);
  • Contas de utilizadores (cap. 3);
  • Gestão de processos (cap. 4);
  • Serviços de nomes de rede TCP/IP (cap .5);
  • Ficheiros de configuração (cap. 6);
  • Administração de bases de dados SQL (cap. 7);
  • Correio electrónico (cap. 8);
  • Serviços de directoria (Finger, Whois, LDAP e Active Directory) (cap. 9);
  • Registos (log files) (cap. 10);
  • Segurança de rede (cap. 11);
  • SNMP (cap. 12);
  • Monitorização e exploração da rede (cap. 13);
  • Aprendizagem experiencial (cap. 14);
  • Apêndice com vários tutoriais (XML/XPath, LDAP, SQL, RCS, VBScript-Perl e SNMP).


sexta-feira, 5 de fevereiro de 2010

Webalizer com virtual hosts

Por necessidade de utilizar o Webalizer com virtual hosts no Apache 2.2, recorri à documentação oficial, que dá algumas pistas, bem como a alguns tutoriais [0][1].

No caso de Debian, costumo separar os vhosts no Apache em directórios do tipo /var/www/vhosts/host. A instalação do Webalizer através do respectivo pacote Debian (# aptitude install webalizer) cria, por omissão, a configuração em /etc/webalizer/webalizer.conf. Queremos naturalmente fazer distinção de configurações por vhost.

Se considerarmos dois vhosts (host1 e host2), temos então:
  • Os directórios /var/www/vhosts/host1 e /var/www/vhosts/host2
  • As configurações /etc/webalizer/host1.conf e /etc/webalizer/host2.conf
  • Os logs do Apache correspondentes, /var/www/vhosts/host1/access_log e /var/www/vhosts/host2/access_log

Vamos copiar agora a configuração do Webalizer para os dois vhosts:
# for vhost in host1 host2; do cp /etc/webalizer/webalizer.conf /etc/webalizer/${vhost}.conf; done.

Precisamos também de criar os directórios para servir no Apache:
# for vhost in host1 host2; do mkdir /var/www/vhosts/${vhost}/webalizer; done.

Vamos agora alterar as configurações no essencial:

/etc/webalizer/host1.conf

LogFile /var/www/vhosts/host1/access_log
OutputDir /var/www/vhosts/host1/webalizer
HostName host1


/etc/webalizer/host2.conf

LogFile /var/www/vhosts/host2/access_log
OutputDir /var/www/vhosts/host2/webalizer
HostName host2


Finalmente, automatizamos a actualização da página web através do cron, a ocorrer aos 15 minutos de cada hora (suficiente no meu caso):

# crontab -e
15 * * * * (for vhost in /etc/webalizer/*.conf; do /usr/bin/webalizer -c ${vhost}; done)

[0] http://magazine.redhat.com/2007/09/24/tips-and-tricks-how-can-i-use-webalizer-to-process-the-logs-of-multiple-virtual-hosts/
[1] http://www.besy.co.uk/debian/how_to_setup_webalizer_for_multiple_websites

quinta-feira, 4 de fevereiro de 2010

SFTP em chroot

Ao deixar para trás definitivamente o FTP autenticado (única opção em muitos servidores partilhados ou com gestão Plesk-like), felizmente descobri que já é possível correr SFTP, forçando os utilizadores a manter as suas actividades dentro da sua home, sem deambulações pelo restante do filesystem.

Até há pouco tempo, o suporte de chrooting obrigava a remendar o OpenSSH, mas agora é uma funcionalidade nativa.

/etc/ssh/sshd_config

...
#UsePAM yes
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match User sftp_user
ForceCommand internal-sftp
ChrootDirectory /chroot_dir


/chroot_dir deve ter owner=group=root e não ser alterável por sftp_user (permissões possíveis 755).
Finalmente, um detalhe importante: a home de sftp_user deve ser / (corresponde à vista que tem dentro da chroot).

Rdesktop

Já era tempo de experimentar o cliente rdesktop para aceder a um desktop Windows a partir do Gnome.
O tsclient parece bastante completo, sobretudo ao mapear $HOME no Windows.

Enviar email via Gmail

Não estou obviamente a falar de MUAs para enviar mensagens escritas por mim.

Tenho sempre muito interesse em que as minhas máquinas também o façam.
Tirando os casos em que os hostnames são FQDN, as nossas máquinas locais não têm geralmente hipótese de enviar directamente para os destinatários.
Entra então o relay (servidor SMTP que serve de intermediário): no meu caso escolhi o do Gmail (smtp.gmail.com).

Esta página explica como o fazer com o Postfix.