Use o exiftool para descobrir como você fotografa

O exiftool é uma ferramenta CLI voltada para a obtenção de informações EXIF ou meta tags de arquivos diversos.
Se você usa MacOS ou Windows, baixe sua cópia do programa no site oficial (link ao final do artigo).

Se você usa Linux (que nem eu!), ele provavelmente já estará instalado aí, com suporte a aproximadamente 200 tipos de arquivos.

Neste universo de possibilidades, a ferramenta suporta a leitura de dados contidos em arquivos de imagens JPEG, bem como, em arquivos RAW de vários fabricantes.

O próprio Flickr usa o exiftools para manipular e analisar as informações das imagens de suas comunidades.

Neste post, vou mostrar como usar o programa para obter informações, de dentro dos arquivos. Vou, ainda, mostrar como associar o utilitário aos comandos grep e find, para refinar a sua busca e obter apenas resultados relevantes para o seu contexto.

Se você já tem dezenas de milhares de fotos e já usou várias lentes para produzir suas imagens, com estas ferramentas é possível montar algumas estatísticas sobre os seus hábitos ao fotografar.

Este tipo de informação pode ser muito útil para quem pensa em comprar uma nova lente, mas se encontra em dúvida sobre se o investimento irá ser realmente útil ou não.

Em outras palavras, faz sentido conhecer a distância focal que você prefere usar — mesmo nas lentes de zoom — antes de começar a analisar as opções disponíveis nas lojas.

Por exemplo, se você já se encontra há um ano usando uma das lentes que costuma vir com os kits de câmera e está pensando em qual poderia ser a próxima aquisição, seria muito interessante saber como você prefere trabalhar antes de tirar a carteira do bolso.

As lentes do kit costumam ser lentes de zoom, com distâncias focais variando entre 18-55mm, 55-250mm ou 75-300mmm (pelo menos, no caso da Canon).
Dentro da distância focal da lente do seu kit, você deve estar usando uma ou outra com predominância.

Isto quer dizer que, se você costuma fotografar frequentemente a aproximadamente 40mm, esta poderia ser a lente prime a ser sondada, na próxima compra.

As ferramentas descritas neste texto já foram abordadas com maior profundidade em outros posts, caso você queira saber um pouco mais sobre cada uma delas:

  1. O comando grep
  2. O comando find
  3. O comando exiftool

Execute o exiftool diretamente no arquivo

A ferramenta pode ser simplesmente aplicada a um ou vários arquivos de um diretório:


exiftool minhasfotos/img_2365.cr2

Para analisar todas os arquivos do diretório (ou da pasta), use-a assim:


exiftool minhasfotos/*.cr2

Altere os meus exemplos à sua realidade, aí.
Este segundo comando pode ser modificado para mostrar resultados mais específicos.
Veja como obter os valores das aberturas (aperture) usadas nas fotografias desta mesma pasta:


exiftool minhasfotos/*.cr2 | grep "Aperture" 

Note que os arquivos .cr2 correspondem aos “arquivos crus” das câmeras Canon. Se você tem arquivos com extensões diferentes, adeque o comando ao seu caso.
A tag (ou etiqueta) “Aperture” também pode variar em função das preferências do fabricante.
Se você fotografa sempre em JPEG, estas informações também estarão lá.
Fique atento.
Decida qual a meta tag mais importante para você e faça a sua busca.

O comando find pode ser usado para serviço mais pesado. No exemplo que segue, todas as pastas serão vasculhadas, recursivamente, a partir do diretório atual.

Neste caso, o resultado pode demorar bastante — vai depender da quantidade de imagens que você tem aí.
No meu caso, são milhares de imagens, dentro do diretório ‘Imagens’, espalhadas em vários subdiretórios. Decidi por todas as referências a abertura (Aperture) em um arquivo aberturas.txt — para verificar posteriormente, em separado. Ficou assim:


find ./ -name '*.cr2' -exec /usr/bin/exiftool {} \; | grep "Aperture" > aberturas.txt

O arquivo ficou com aproximadamente 8 mil linhas, embora sejam apenas 1564 arquivos de imagens RAW — mas a palavra “aperture” aparece, em média, mais de 4 vezes no resultado do exiftool de cada um.

Para saber quantas vezes usei a abertura 1.8, posso recorrer novamente ao grep:


cat aberturas.txt | grep "Aperture                        : 1.8"| wc -l

456

Este resultado mostra que o valor é usado em quase 1/3 das fotos.

Como descobrir a distância focal favorita nas suas fotos

Este é um dado bastante interessante, para quem pretende comprar uma lente nova — principalmente se for uma fixa (ou prime).
Saber qual a distância focal (ou focal length) que você mais usa nas suas sessões, pode ajudar determinar qual lente seria mais útil para você.
Para encontrar o meu resultado, novamente usei aqueles 3 comandos:


find ./ -name '*.cr2' -exec /usr/bin/exiftool {} \; | grep "Focal Length                    :" > distfocal.txt

No meu caso, o campo “Focal Length” se repete para cada foto em uma linha em que é dada uma distância focal equivalente. Para excluir esta redundãncia, acrescentei um “grep -v” ao final da linha de comando:


find ./ -name '*.cr2' -exec /usr/bin/exiftool {} \; | grep "Focal Length                    :" | grep -v "equivalent" > distfocal.txt

Desta forma, consigo obter um arquivo distfocal.txt com exatamente 1564 linhas — número igual ao de arquivos de imagens RAW .cr2.

Uso muito a lente do kit 75-300mm, e creio que seria interessante saber, exatamente, qual a distância focal mais usada dentro destes limites.
Esta informação pode ajudar a determinar qual lente prime seria mais útil para o meu caso: 85mm, 100mm, 135mm etc.

Conclusão

Por um lado, acredito que 1564 fotos pode ser um número muito pequeno para ser analisado, com o objetivo de determinar qual a sua distância focal favorita.
Isto varia de pessoa para pessoa.
Neste momento, acho os meus dados insuficientes para determinar “a minha maneira favorita” de fotografar.

Levar os dados obtidos para dentro de uma planilha é uma alternativa mais eficiente para obter informações sobre a maneira como você usa seu equipamento.

Eu prefiro sair para uma sessão de fotos, com apenas uma lente de zoom e brincar bastante.
Ao voltar, transfiro minhas imagens para o computador. Em seguida, rodo o exiftool, combinado com o grep, na pasta das fotos e observo as minhas estatísticas.

Me conte se você já descobriu qual a sua maneira favorita de fotografar e qual a sua lente ou distância focal preferida 😉

Link para o site oficial de downloads e documentação: https://sno.phy.queensu.ca/~phil/exiftool/.

Leia também meus outros artigos sobre o exiftool.

Obtenha frases aleatórias e divertidas no terminal do Linux

Se hackers gostam de usar a linha de comando (CLI), consistindo de um terminal com fundo escuro, também gostam de se divertir durante o uso.
O ‘fortune’ é uma das longas tradições do universo UNIX. Se você ainda não a conhece, ainda tá em tempo.

Consiste em um pequeno programa, acompanhado de um banco de dados de frases e sentenças.
As frases podem ser engraçadas ou podem exibir curtas dicas de uso do sistema operacional.
Estão disponíveis em vários idiomas, incluindo o português.
Instale o fortune, usando o seu gestor de pacotes favorito (yum, dnf, apt etc).
No Debian/Ubuntu, use o apt:


sudo apt install fortune

Uma vez instalado, já pode ser executado no terminal:


fortune

    "The glory of creation is in its infinite diversity."
    "And in the way our differences combine to create meaning and beauty."
        -- Dr. Miranda Jones and Spock, "Is There in Truth No Beauty?",
           stardate 5630.8

Acima, diálogo retirado da série Star Trek (1968).
Star Trek

Como controlar ou escolher as frases do fortune

Se quiser ver mais frases relacionadas ou contendo a string “Star Trek”, use a opção -m:


fortune -m "Star Trek"

Prefere o Doctor Who!?


fortune -m "Doctor Who"

Fique atento para a caixa (maiúsculas/minúsculas) das palavras procuradas. O Fortune é sensível à caixa.

Como obter frases ofensivas no terminal

As frases ofensivas são parte da tradição e da brincadeira.

Aviso: Por favor, só ligue esta opção se você estiver querendo, do fundo do seu coração, ser ofendido(a).

Na maioria das distribuições, contudo, o banco de dados de frases ofensivas não é instalado.
É necessário fazer a instalação manual, se quiser:


sudo apt install fortunes-off

Agora é só executar, com a opção ‘-o’:


fortune -o

Obtenha dicas de uso do Linux

Para ver frases mais construtivas (com dicas de uso do Debian, por exemplo), instale o pacote Debian Hints:


sudo apt install fortunes-debian-hints

E rode o programa:


fortune debian

ou


fortune debian-hints

Como obter a versão em português

Para ver frases selecionadas em português, é necessário instalar o arquivo fortunes-br:


sudo apt install fortunes-br

e rodar o programa assim:


fortune brasil

Como configurar para mostrar uma “fortuna” toda vez que abre um terminal

Este é o jeito que eu gosto de usar o fortune: com uma frase a cada vez que abro um terminal.
fortune quincas borba
Para isto, inclua o comando ‘fortune’, da maneira que achar melhor a sua execução, ao final do arquivo ~/.bashrc.

Como obter o efeito Matrix no seu terminal

No filme (agora, um clássico) de aventura e ficção científica, Matrix, lançado no fim dos anos 90 e dirigido pelas irmãs Wachowski, em alguns momentos, a realidade virtual ou o código da “matriz” é representado por uma chuva de caracteres em verde.
A cor verde é uma alusão aos antigos monitores em fósforo verde, muito populares entre as décadas de 60 a 80.

Se você não acha divertido trabalhar na linha de comando (CLI), provavelmente está fazendo isso errado.

Use o gerenciador de pacotes da sua distro para instalar o cmatrix.
No Debian/Ubuntu, use o apt:


sudo apt install cmatrix

Uma vez instalado, é possível rodar o programa apenas digitando ‘cmatrix’ dentro do terminal.
Mas o melhor é fazer uso de algumas opções que ele oferece na linha de comando.
Eu gosto de usar assim:


cmatrix -nu 6 -C blue

Deixa eu explicar o comando:

  • A opção ‘-n’, desliga as letras em negrito, o que confere um visual mais suave e homogêneo (em minha humilde opinião).
  • ‘-u 6’ ajusta a velocidade da cascata de letras para 6. Você pode usar outro valor, de 0 a 10.
  • ‘-C blue’ ajusta a cor principal para azul.

cmatrix matrix linux

Use o meu exemplo para obter diferentes efeitos.

Comandos do cmatrix

Durante a execução do programa, é possível alterar o seu comportamento, pressionando as seguintes teclas:

  • a, para ligar/desligar a rolagem assíncrona.
  • b, B ou n, para alternar o efeito negrito sobre as letras.
  • 0 a 9, para alterar a velocidade da rolagem.
  • q, para sair.

Segue a relação de cores possíveis, com a tecla de comando de cada uma:

  1. @ green (verde), é a cor padrão.
  2. ! red (vermelho).
  3. $ blue (azul).
  4. & white (branco).
  5. # yellow (amarelo).
  6. ^ cyan (ciano).
  7. % magenta.
  8. ) black (preto).

Experimente ler a ajuda do programa, para obter mais informações sobre sua execução:


cmatrix -h

Por fim, fica o aviso de que o cmatrix consome bastante recursos do sistema. Portanto, não se assuste com este “detalhe”.

Como gravar arquivos criptografados com o Vim

O editor de textos Vim tem suporte a diversos métodos de criptografia.
É possível guardar código ou qualquer outro texto (como senhas ou outras informações sensíveis) longe de olhares curiosos.

Uma vez criptografado, o texto não pode mais ser lido, sem a chave correta.
Tenha isto em mente, antes de usar este tipo de segurança em um arquivo — pra não ficar “trancado do lado de fora”.
Você pode enviar o texto codificado para outras pessoas, que usem o Vim no Windows ou no MacOS.
Se elas tiverem a senha para descriptografar, poderão ler o conteúdo da mensagem.

Para ativar a criptografia, a qualquer momento, use o comando ‘:X’.
Forneça a senha e a confirmação.
A criptografia será aplicada na hora de gravar o arquivo (:w).

criptografia no vim

É possível já abrir um arquivo com a criptografia ativada:

vim -x meu-arquivo-secreto.txt

Após este comando, o Vim iniciará pedindo uma nova chave de segurança para o seu arquivo.
Na próxima vez em que for abrir o arquivo, não precisa usar ‘-x’:

vim meu-arquivo-secreto.txt

Cuidados com a segurança criptográfica no Vim

Além de não perder a sua senha e usar, também, uma senha decente, há outros aspectos a levar em consideração, caso você se preocupe realmente com a sua segurança.
Quando tentar abrir o seu arquivo, só conseguirá ver um monte de caracteres desconexos.
texto criptografado

Tanto o texto contido no swap, quanto o do arquivo undo (usado para desfazer ações dentro do editor), são guardados sob criptografia.

Talvez não seja paranoia, mas a gente tem que falar sobre isso…
A codificação dos arquivos de swap e do undo são feitas bloco a bloco — fator que pode ajudar a reduzir o tempo necessário para um invasor quebrar sua senha.
Portanto, se quiser segurança extra, desative o swap e o undo (desfazer) para o arquivo.
Para desativar o recurso de swapping do Vim, entre no modo de comando (tecla ESC) e execute o seguinte:

:noswapfile

O comando abaixo, inicia a edição do arquivo ‘meus_segredos.txt’, com o swap desativado:

:noswapfile edit meus_segredos

Use o que achar melhor.
O lado ruim desta ação é que você pode perder texto, que ainda não tenha sido gravado, caso ocorra alguma queda de energia ou travamento no sistema operacional.
Já o arquivo undo pode ser desativado sem maiores problemas:

:set noundofile

Veja outros procedimentos adicionais (opcionais) de segurança que você pode adotar.
Para desativar também o backup automático:

:set nobackup

Para desativar o arquivo temporário:

:set nowritebackup

Para desativar a criptografia de um arquivo use o comando:

:set key=

Você também pode desativar o viminfo, que oferece informações sobre a sessão atual:

:set viminfo=

Quais métodos de criptografia estão disponíveis para o Vim

Você pode usar a opção ‘cryptmethod‘ (ou cm) para selecionar o tipo de criptografia a ser usado:

  1. zip: método mais fraco, porém rápido e mais difundido. Tem maior compatibilidade.
  2. blowfish: método mais seguro que o anterior.
  3. blowfish2: método atualizado e com segurança média para forte. É recomendado pela documentação oficial do Vim.

Para escolher o método de criptografia blowfish2, use o seguinte comando no Vim:

:setlocal cm=blowfish2

Você precisa fazer esta opção antes de começar a escrever no arquivo.
Quando você for abrir um arquivo, o Vim detecta automaticamente o método usado para criptografá-lo.
Você pode alterar o cryptmethod, ao abrir um arquivo, antes de começar editar.
Para definir permanentemente o método ou qualquer outro ajuste de que falamos neste post, edite o arquivo de configuração vimrc.

Como saber se a minha versão do Vim tem suporte a criptografia

Se você efetuou a instalação do aplicativo a partir dos repositórios oficiais da sua distro, não há muito o que fazer. E o suporte provavelmente já estará lá.
Alguns usuários preferem baixar e compilar o código fonte — entre outras coisas, isto lhes dá acesso a uma versão mais atual do aplicativo.
Neste caso, pode ser necessário compilar com a opção ‘cryptv’ selecionada.
Use a opção ‘–version’, combinada ao comando grep, para saber se a sua versão tem suporte a criptografia:


vim --version | grep crypt

Se o +cryptv estiver presente, então está tudo ok com a sua versão.

vim version

Referências

Como considerações finais, tenha cuidado para não começar a editar (e gravar em seguida) um arquivo criptografado, que você não descodificou adequadamente. Todo o conteúdo do arquivo será perdido, caso você o faça.
Lembre-se que o texto armazenado na memória não é criptografado.
Isto significa que o administrador do seu sistema, tecnicamente, poderá ler o seu conteúdo, enquanto você o estiver editando.
O manual do Vim também informa que, em uma máquina antiga (32 bit) é possível quebrar uma senha de 6 caracteres em menos de 1 dia, por força bruta, no caso de usar o cryptmethod zip.
Você pode iniciar o Vim com criptografia ativada e o swap desligado, com as seguintes opções:


vim -xn meuarquivo.txt

Leia mais:
https://linux-audit.com/using-encrypted-documents-with-vim/.

Como lidar com um processo zumbi no Linux

De forma bem simplificada (ou em termos leigos), processo zumbi é aquele que ainda pode ser visto na tabela de processos, mesmo que já tenha sido finalizado.
Processos nestas condições também são chamados “defuntos” (ou defunct).

Para entender como os zumbis são criados, é necessário compreender como os processos são retirados do espaço da memória do sistema, após serem finalizados
Apesar da coincidência de temas, não há nada de macabro neste post.
Sob o ponto de vista técnico, a presença de zumbis no seu sistema é uma realidade, provavelmente, constante — e normalmente não é preocupante.

Como os zumbis aparecem

A cada vez que um processo completa seu ciclo e termina sua execução com sucesso, ele desocupa a memória e avisa que “morreu” ao processo que lhe deu origem (processo pai).
Neste momento, o pai deve executar uma chamada de sistema (system call) WAIT, que faz a leitura do estado do filho morto.
Quando o WAIT termina de ser executado, o cadáver é removido da memória — e a vida segue.
O problema aparece quando há defeitos no código do processo pai ou, por alguma razão, este é incapaz de ler o estado do processo filho.
Neste caso, a chamada de sistema pode simplesmente não ocorrer.
Como consequência, o cadáver não é removido, permanece na memória e continua aparecendo na tabela de processos.
Toda esta operação, descrita acima, é muito rápida.
Os zumbis são previstos pelo Linux.
São inócuos e, na maioria das vezes, nem são notados.
Muitos tem PID 1 como pai, que é o próprio init.
O init executa um processo de limpeza periódica que acaba por remover naturalmente os zumbis do sistema.
Por isto, é seguro dizer que não há com que se preocupar.

Como encontrar zumbis no Linux

Use o comando ps para checar o seu sistema:


ps axu | grep Z

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
justinc+  1920  0.0  0.0      0     0 tty2     Z+   nov07   0:00 [single] 
justinc+ 20324  0.0  0.0  12792   932 pts/1    S+   17:57   0:00 grep --color=auto Z

Observe a coluna STAT, que informa o estado de cada processo listado.
A letra Z indica quando um processo está em estado zombie.

How to find zombies

Como matar zumbis

Você não pode matar o que já está morto!

Não é possível terminar processos zumbis. Eles já estão finalizados.
Se a situação te preocupa, é possível informar ao processo pai que “sua criança” está morta — para que rodem a chamada de sistema WAIT.
Use o comando pstree para descobrir qual é o PID do processo pai.
Em seguida, é possivel enviar o sinal SIGCHLD para o PID do pai:

kill -s SIGCHLD ppid

Acima, substitua ppid pelo número do PID do processo pai.

Impacto da presença de processos zumbis no sistema

Como já foi dito, ocupam pouco espaço e sua presença, em geral, é inofensiva e sequer chega a ser percebida.
Mas há casos em que a quantidade de zumbis continua a crescer — às vezes rapidamente. Aí, sim, temos um problema.
Como consequencia da multiplicação dos zumbis, podemos nos deparar com 2 stuações desagradáveis:

  1. Cada zumbi mantem seu PID enquanto cria novos processos, com novos PIDs.
    Depois de um tempo, as possibilidades de criar novos PIDs sao exauridas pelo kernel do sistema.
  2. Mesmo que cada zumbi ocupe apenas uma quantidade muito pequena de memoria, um numero muito grande deles pode fazer a diferença e causar a lentidao ou, mesmo, o travamento do sistema.

Você pode agir individualmente em relação a cada zumbi… ou não.
Pode ser legal mostrar aos seus amigos que você tem uma ou outra “criatura” destas habitando o seu sistema, temporariamente.
É possível que o seu amigo também tenha…
Só uma rápida e crescente multiplicação deles é que irá exigir uma medida mais drástica: reboot, para limpar o sistema.