Mostrando postagens com marcador caminho. Mostrar todas as postagens
Mostrando postagens com marcador caminho. Mostrar todas as postagens

domingo, 26 de maio de 2013

Atualizando o caminho dos arquivos numa listagem de hash

Recentemente, eu estava com uma estrutura de arquivos em diversos diretórios e subdiretórios e todos eles já estavam com os respectivos hashes MD5 armazenados em um arquivo texto (hash.md5) no diretório raiz. Bastava executar o comando "md5sum -c hash.md5" na raiz para a ferramenta verificar a integridade de todos os arquivos.

Entretanto, resolvi reorganizar a localização dos arquivos, mudando os arquivos de subdiretórios, criando diretórios novos etc. Eram os mesmos arquivos só que agora estavam em caminhos de diretórios diferentes. Com isso, após estas mudanças, o arquivo texto com os hashes MD5 também precisava ser atualizado para os novos caminhos dos arquivos.

Algumas soluções poderiam ser aplicadas. Uma seria recalcular todas as somas MD5, gerando novamente os hash de todos os arquivos, mas esta solução iria expor novamente o disco rígido em um uso intenso. Eram muitos gigabytes de dados armazenados. Outra solução seria editar o arquivo texto com os hashes, alterando cada linha para o novo caminho do respectivo arquivo. Mas era um arquivo com 1650 linhas e fazer isso manualmente torna impraticável, levaria uma eternidade.

Contudo a segunda era a solução que deveria ser aplicada, afinal os hashes dos arquivos já estavam gerados e só precisava atualizar os caminhos. O que poderia executar esta tarefa rapidamente? Simples, um script no interpretador de comandos.

A seguir, está o código do script que realizou a atualização dos caminhos, de cada arquivo, nas linhas do arquivo texto com os hashes MD5. É um script para o interpretador de comandos Bash, do Linux.

O que ele faz é, primeiramente, uma cópia de segurança do arquivo texto com os hashes. Depois será lida cada linha deste arquivo, onde serão armazenados em variáveis o hash (incluindo os espaços) que está no início da linha e o nome do respectivo arquivo, ignorando o caminho antigo. Então será realizada uma busca pelo arquivo e seu caminho atual é armazenado em outra variável. Por fim, as strings com o hash e o caminho atual são concatenadas e direcionadas para um novo arquivo texto com os hashes MD5.


#!/bin/bash
#

cp -f hash.md5 hashantigo.md5

while read LINHA
do

  HASH=`echo "$LINHA" | cut -c 1-34`
  ARQUIVO=`echo "$LINHA" | sed 's/^.\{34\}//' - | sed 's/.*\///' -`
  NOVODIR=`find */ -iname "$ARQUIVO" -type f -print`
  if [[ $NOVODIR ]]
  then
    echo "$HASH""$NOVODIR" >> novohash.md5
  fi

done < hashantigo.md5

mv -f novohash.md5 hash.md5

echo "Feito!"



Este script torna o processo muito mais rápido e menos traumático no acesso ao disco. Nesta reorganização, eu também separei os arquivos em volumes de aproximadamente 4.4 GB (capacidade de DVDs) pois foram gravados em mídias óticas. Cada volume tinha o seu "diretório raiz" com uma cópia do arquivo texto original com os hashes e o script. O script foi executado para cada volume. Por isso a necessidade do if no script, alguns arquivos não estavam no respectivo volume.

São diversos comandos do Bash, internos e externos, utilizados neste script. As páginas manuais de cada um deles podem ajudar no entendimento de sua execução.

domingo, 25 de novembro de 2012

Problema de Lógica: Caminho da estação

Um marido costuma chegar à sua estação precisamente às dezessete horas. Sua mulher costuma ir ao encontro do trem para levar o marido de automóvel. Um dia, o marido chega meia hora antes e resolve ir andando pelo caminho que ela costuma seguir. Encontram-se no caminho e os dois voltam para casa, chegando dez minutos mais cedo que de costume. Supondo que a mulher viaje com velocidade constante e saia de casa no tempo exato para encontrar o trem das dezessete horas, por quanto tempo o marido andou antes de ser encontrado por sua mulher?





RESPOSTA





A mulher e o marido chegaram em casa dez minutos mais cedo, assim nesse tempo ela economizou cinco minutos na ida e cinco minutos na volta, no caminho que seria de casa até a estação. Ou seja, quando ela encontrou o marido faltavam cinco minutos para as dezessete horas. Como o marido chegou na estação trinta minutos antes, então conclui-se que andou por vinte e cinco minutos.

quarta-feira, 24 de outubro de 2012

Breadcrumb no auxílio à navegação web

O breadcrumb, termo em inglês para migalha de pão, é um recurso auxiliar que exibe o caminho percorrido pelo usuário, dentre as páginas visitadas do site, durante a navegação. É um recurso extra para auxiliar o menu principal, atuando de forma secundária, e assim melhorar a localização do usuário dentro do site. No breadcrumb cada termo é um link para a respectiva página da estrutura hierárquica do site.

O breadcrumb é melhor aplicado quando o site possui páginas organizadas hierarquicamente. Onde as páginas formam níveis ou categorias ou ramos na organização do conteúdo, em uma estrutura estática de árvore. Entretanto, é possível ser aplicado dinamicamente para montar todo o caminho percorrido pelo usuário, independentemente se as páginas pertencem a uma mesma hierarquia, mas esta forma exige muito cuidado.

A aparência mais comum de um breadcrumb é na forma textual, com os termos separados por símbolos que se assemelham à setas, por exemplo o símbolo », numa disposição horizontal. É muito semelhante a caminhos de diretórios em gerenciadores de arquivos.

Um exemplo de breadcrumb:

Início » Livros » Nacionais » Astronomia » Manual do Astrônomo Amador

Assim como qualquer interface humano-computador, o breadcrumb necessita de um estudo de usabilidade para melhor atender a navegação do site e principalmente não confundir e atrapalhar o usuário. Além do seu posicionamento na página, deve-se preocupar principalmente com a estrutura dos níveis. O breadcrumb é muito comum em sites de comércio eletrônico, onde os produtos são separados por categorias e subcategorias.