Posts Tagged ‘Tutorial’

Usando Bash Scripts

abril, 3 - 2008

Um dos motivos pelo qual eu uso Linux no meu dia a dia, é que ele, ao contrario do que o tato pensa, agiliza minhas tarefas, e aqui eu vou dar um exemplo do poder do linux.

Vamos utilizar o bash para converter imagens tiradas com uma câmera digital para o formato 648×486 e tambem gerar uma versão menor 140×105 para usarmos como snapshot em uma pagina html :D.

Bom, primeiro, precisamos de um diretorio para colocar as fotos originais, que normalmente são do tamanho 2592×1944. O diretório escolhido é origin. criamos os diretórios para as fotos que serão colocadas no site, e para os snapshots, fotos e snaps respectivamente

>mkdir origin
>mkdir fotos
>mkdir snaps

agora, precisamos gerar um arquivo de script gera_html.sh que sera executado para gerar as fotos, e dar-lhe permissão de execução.

>chmod u=u+x gera_html.sh

Agora vamos fazer um loop de for que percorrera todos os arquivos da pasta origin gerando copias das imagens na pasta fotos, mas convertendo as fotos para 648×486, já que este parece ser um tamanho adequado para fotos que devem viajar pela rede. Observe que o for utiliza a lista gerada pela expansão origin/*, e que no começo do arquivo devemos colocar a #!/bin/bash para indicar que este é um bash script.

#!/bin/bash
CONT=1;for FILE in origin/*; do
convert $FILE -resize 648x486 \
fotos/foto-$CONT.jpg
CONT=$[$CONT+1]
done

Observe que as fotos serao geradas com o nome foto-1.jpg foto-2.jpg … foto-10.jpg, de forma que se quisermos ter foto-0001.jpg, temos que gerar o texto atraves de uma função

function cont_to_var
{
AUX=$1
for NUM in 1000 100 10; do
if [ $AUX -lt $NUM ]; then
AUX=0$AUX;
fi
done
echo $AUX
}

Atribuimos isto a uma variavel utilizando os recursos do bash, para entao podermos gerar nossas imagens. Podemos aproveitar o loop e ja gerarmos as fotos e os snapshots 😀

VAR=$(cont_to_var $CONT)
convert $FILE -resize 648x486 \
fotos/foto-$VAR.jpg
convert $FILE -resize 140x105 \
snaps/snap-$VAR.jpg
CONT=$[$CONT+1]

Agora basta apenas inserir a parte do codigo que gera a pagina html. primeiramente, preparamos uma pagina com a base, e a pagina com o final do arquivo, e entao utilzamos o while para finalizar o processo. Notamos que ao final do for, temos $CONT carregando o numero de fotos +1. Utilizaremos então o while com a condição [ $CONT -le $MAX ] que equivale a dizer while (cont <= max), e para cada iteração iremos inserir o tag com a imagem, redirecionando a saida para nosso arquivo fotos.html

MAX=$CONT
CONT=1
PAGE=fotos.html
COL=5

cat base.html > $PAGE
while [ $CONT -lt $MAX ]; do
check_linha_start $CONT >> $PAGE
print_img $CONT >> $PAGE
CONT=$[$CONT+1]
check_linha_end $CONT >> $PAGE
done
cat tail.html >> $PAGE

Observe que hove um redirecionamento da saida do cat é feito utilizando os operadores > e >>, cuja a diferença é que > apaga o arquivo antes de escrever o novo dado. A função check_linha_start checa a nescessidade de se iniciar uma linha da tabela (que deve conter 5 colunas), enquanto check_linha_end checa a nescessidade de se finalizar a linha

function check_linha_start
{
I=$[$1-1]
if (( ! $[$I%$COL] )); then
echo "<tr>"
fi
}
function check_linha_end
{
I=$[$1-1]
if (( (! $[$I%$COL]) || ($1==$MAX) )); then
echo "echo "</tr>"
fi
}

Para imprimir a imagem, utilizamos a função print_img

function print_img
{
IMG=fotos/foto-$(cont_to_var $1).jpg
SNAP=snaps/snap-$(cont_to_var $1).jpg
echo "<td><a \
href=\"$IMG\" target=\"_BLANK\">"
echo "<img src=\"$SNAP\">"
echo "</a></td>"
}

Os arquivos base.html e tail.html apenas abrem e fecham os tags basicos do html, mas poder ser utilizado para gerar códigos mais complexos com css, etc 😀

<html>
<body>
<table>

Agora basta apenas rodar o script e ser feliz 😀

Se você quiser, voce pode baixar o meu script aqui

Tilt-shift, arte de miniaturas!

março, 6 - 2008

Você já ouviu falar de tilt-shift? Tilt and Shift ou simplesmente tilt-shift é a arte de transformar fotografias reais em fotografias de miniaturas (como uma maquete), através de um efeito de lente ou de alguns filtros no photoshop. Fantástico, né?

Olha só umas loucuras que fiz essa semana, ainda não peguei a técnica 100%, mas foi divertido pra kct:

Foto da Santa Casa de SP que tirei há um mês

Foto do Cristo Redentor

Gostou da idéia? Quer aprender a fazer?

Clique aqui e veja um tutorial de tilt-shift.

Quer ver uma galeria de um bando de malucos que fazem isso?

Clique aqui e veja a galeria tilt-shift do Flickr.

Alemão, por que não?

março, 4 - 2008

Todo Geek sabe o quanto é imporante o acesso ao conhecimento. O acesso hoje em dia, é muito prático, com a existência de ferramentas como a wikipédia e tutoriais soltos pela internet.

Mesmo com todos os recursos, ainda existe a barreira do idioma, que é resolvida através dos free coursewares (utilizado originalmente para ensino de softwares) com cursos gratuítos, como é o caso dos cursos oferecidos pelo MIT.

A rede de rádio e TV alemã Deutsch Welle disponibiliza cursos de Alemão gratuitos no seu site que pode ser baixados e ouvidos em qualquer ugar.

Outra rede de notícias que disponibiliza cursos de idiomas gratuitos, é a rede britânica BBC que disponibiliza cursos de Inglês, entretanto a página é totalmente em Inglês, o que exige um conhecimento.