Apresentações: temporizadas e medição de prestação

Em preparação do CycleHack Lisboa, estava à procura de uma forma para automatizar apresentações e descobri uma aplicação para apresentação de documentos PDF e imagens que permite além de fazer apresentações temporizadas, medir a nossa prestação enquanto fazemos a apresentação.

A aplicação chama-se Impressive, e é ideal para quem procura uma solução simples para organizar uma Pecha Kucha, ou outro tipo de evento em que as apresentações têm um limite de tempo por slide, ou por apresentação (o tempo por slide é calculado automaticamente).

Corre na linha de comando, o que é bom para usar em scripts e criar sequências de apresentações automatizadas e está disponível na biblioteca de software de várias distribuições de Linux ($ sudo apt install impressive), mas também para OSX e Windows.

Se não quisermos ter uma apresentação temporizada, mas quisermos saber se a nossa apresentação manual está bem desenhada, usando a opção –tracking, temos no final da apresentação uma tabela com o tempo passado em cada slide, para podermos melhorar a nossa apresentação enquanto treinamos.

ssh + bash + bash_completion

O Ubuntu traz por omissão o cliente de ssh configurado para guardar uma hash da informação de ligação, em vez de guardar o endereço IP e o host.
Isto deve-se a questões de segurança e privacidade. Se por algum motivo a máquina for comprometida, é difícil saber a que outras máquinas o utilizador estabelecia ligações e onde quiçá tinha acesso por chave sem password.
Isto é importante, porém infelizmente retira uma funcionalidade interessante para quem precisa de estabelecer certas ligações com alguma frequência e para quem o TAB é tal vício que já se usa em todo o lado. 🙂
Para quem estiver seguro que esta informação é irrelevante, quer pela facilidade de ser descoberta por outros meios, quer pela segurança da rede em que está inserido e pretenda facilitar o dia a dia, poderá adicionar ao ficheiro de configuração $HOME/.ssh/config a linha:

HashKnownHosts no

Desta forma no ficheiro $HOME/.ssh/known_hosts passará a constar o IP e o hostname das máquinas para onde são feitas ligações, permitindo à funcionalidade acrescida do bash_completion completar os nomes dos hosts como é comum com outros comandos na bash.

As funcionalidade dos scripts de sugestão avançada também não estão activos de raiz, sendo necessário tirar o # das linhas finais do ficheiro $HOME/.bashrc para que se leia:

if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi

Depois de bash_completion, command_not_found

Para quem não conhece o bash_completion, não é mais que um conjunto de scripts que nos ajudam mais do que o habitual TAB para completar a linha de comandos.

Habitualmente quando a TAB é usada na linha de comando, surgem sugestões para completar o que começámos a escrever. Estas sugestões baseiam-se em comandos internos da bash, em aplicações que estejam na PATH ou em nomes de ficheiros do directório actual.
Com o bash_completion, não só temos a funcionalidade original, como sugestões de opções para alguns comandos, filtros de tipo de ficheiro por aplicação (executando um editor de imagem só nos são sugeridas os ficheiros do directório actual que são imagens editáveis por esse programa), nomes de utilizador, ips/hosts que estão no nosso ~/.ssh/known_hosts (se o ssh estiver configurado para guardar os ips/hosts, que não está no Ubuntu), páginas do manual (manpages), etc.

Além disto a uma vez que este sistema se baseia na possibilidade de programar o mecanismo de sugestões, a funcionalidade pode ser ampliada pelo utilizador através de novos scripts.

Como é parte da própria bash, nalgumas distribuições o bash_completion é instalado aquando da instalação do pacote bash. No Ubuntu podem activar este sistema de sugestão modificando (apagando o #) o final do ficheiro ~/.bashrc

#if [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
#fi

Hoje no Feisty foi introduzida como recomendação do pacote ubuntu-standard um novo sistema de sugestões, o command_not_found. Este script verifica se existe disponível para instalação nos repositórios de software um determinado comando introduzido que não tenha sido encontrado, dando instruções de como instalar a aplicação referente a esse comando.

Ao contrário do bash_completion, o command_not_found vem activado por omissão em /etc/bash.bashrc. Basta executar um comando inexistente para ver o resultado:

$ kismet
The program ‘kismet’ is currently not installed. You can install it by typing:
sudo apt-get install kismet
Make sure you have the ‘universe’ component enabled
bash: kismet: command not found

🙂