Arquivo de March, 2009

Shell Script – Tratamento de querystring como cgi

Postado por Gabriel Verta em 24/03/2009

Como fazemos para pegar os valores de uma querystring rodando um shell script por cgi?

Vamos ao código:


for var in `echo $QUERY_STRING | tr "&" "\t"`
do
key=$(echo $var | tr = " " | awk '{print $1}';);
value=$(echo $var | tr = " " | awk '{print $2}';);
declare "query_$key"="$value";
done

Agora a lógica:

Quando chamamos um script via cgi, este cria a variavel de ambiente QUERY_STRING, que conterá o valor do GET em uma string única. Assim temos que tratar esta string para que tenhamos as variáveis com os valores que enviamos.

Vamos começar com este trecho:

`echo $QUERY_STRING | tr "&" "\t"`

Neste estamos mandando exibir o valor da variável QUERY_STRING e jogando a saida para o comando tr, que faz uma tradução de um texto em outro, transformando todos os & em \t no caso.
E o que é esta ` (crase) antes e depois do comando? Serve para você efetivamente executar um comando do shell, onde o resultado é retornado para o script.

Vamos para a próxima linha do script:

key=$(echo $var | tr = " " | awk '{print $1}';);

A partir desta linha, dentro do for, já temos a variavel var com o valor parametro=valor, então temos que pegar este parametro e valor. Exibimos o valor de var, jogando a saída padrão para o tr novamente, só que agora transformamos = em espaço, para aí jogarmos esta saída em outro programa para separar os argumentos, no caso o awk, onde mandamos exibir somente o primeiro parâmetro, rodando direto no shell seria algo como:


$ awk '{print $1}';
parametro valor
parametro

Digitando parametro e valor no awk e mandando exibir apenas o primeiro parâmetro ele retorna somente o primeiro.

Na linha seguinte do nosso script, a mesma coisa é feita, com a diferença de que o segundo parâmetro é pego para termos o valor e não a chave desta vez.

Agora já temos key com a chave do parâmetro do GET, e value com o valor da chave. Vamos a próxima linha:

declare "query_$key"="$value";

Agora estamos criando a variável com o valor de key com o valor de value. Como assim?

Se no GET tivessemos algo como stiod=nozes, $key teria o valor de stiod e $value o valor nozes. Então estariamos criando uma variável stiod com o valor nozes. Seria algo como se estivessemos digitado stiod=nozes no código. Ou seja, a partir deste momento, com o fim do for, temos uma variável com cada chave do GET com o prefixo "query_", e seus respectivos valores.

Seguindo o exemplo anterior, se tivessemos passado arquivo.sh?stiod=nozes, mandando exibir o valor da variável query_stiod seria exibido o valor nozes (echo $query_stiod)

É isso ai,
;)

Como extrair o conteúdo de um arquivo rpm?

Postado por Gabriel Verta em 16/03/2009

O comando que extrai todo o conteudo de um arquivo rpm, criando as pastas que o rpm criaria a partir do diretório atual:

rpm2cpio arquivo.rpm | cpio -idmv
;)

Link sobre cpio

Migration no Codeigniter

Postado por Rafael Monteiro em 13/03/2009

Olá !

Nesse post abordarei uma implementação básica de migration utilizando como base o framework Codeigniter.

Cenário

Para aqueles que desconhecem, o recurso de Migration consiste na abstração das alterações em bases de dados para uma classe que automatiza essa tarefa. Isso é particularmente útil quando trabalhamos em equipe e cada profissional desenvolve em seu ambiente, eventualmente modelando novas tabelas ou adicionando campos as já existentes. Dessa forma, evita-se trabalhar diretamente com o SQL (o que possibilita uma independência do SGBD) e o processo de atualização dos diversos ambientes (inclusive o de produção, quando for o caso) se torna mais simples e ágil.

Continue Reading »

PDFTK – Merge de arquivos FDF e PDF

Postado por Gabriel Verta em 10/03/2009

Estava com um problema onde eu precisava preencher um formulário de um arquivo PDF, e conseguia fazer isso gerando um arquivo FDF no PHP. Porém não era tão agradável o usuário baixar o arquivo no formato FDF, que nem é tão conhecido assim, e quando este arquivo fosse aberto, seria feito o download do PDF remoto com o formulário preenchido e ainda só depois de aberto este conseguir salvar uma versão final do arquivo PDF.
Foi então que o PDFTK resolveu o meu problema onde consigo fazer o "merge" destes 2 arquivos através do seguinte comando:

pdftk entrada.pdf fill_form formulario.fdf output saida.pdf

Além deste, também tinha outro problema onde eu precisava juntar vários arquivos pdf para gerar um dinamicamente, e através do PDFTK também conseguimos fazer este merge de PDFs da seguinte forma:

pdftk arquivo1.pdf arquivo2.pdf cat output saida.pdf

É isso ai! =)

Av. Conselheiro Nébias, 368A, Cj. 413
Vila Mathias - Santos - SP
Telefone: (13) 3345-4580

© 2008 - 2009 Stiod. Todos os direitos reservados.