sexta-feira, 16 de março de 2012

Listando o conteúdo de um arquivo .tar.gz ou tgz sem extrair

Muitas vezes recebemos um arquivo .tar.gz ou tgz e queremos dar uma olhada no conteúdo sem precisar extrair..

O comando para fazer isso usando o GNU tar é o seguinte:

# tar -ztvf arquivo.tar.gz

Com o comando acima é possível listar o conteúdo do tar (tape archive) comprimido com gzip.

Para saber mais o que significar cada opção "ztvf" basta consultar o manual do tar.

# man tar

obrigado



sexta-feira, 29 de julho de 2011

Configurando Timezone no Linux (Horário de Brasília)

Configurando para o horário de Brasília...modo rápido.

Auto explicativo....


# rm /etc/localtime
# ln -s /usr/share/zoneinfo/Brazil/East /etc/localtime

quinta-feira, 21 de julho de 2011

Convertendo datas com o comando date no Linux

Uma tarefa comum que nos deparamos todos os dias é pegar um timestamp no formato Unix em segundos e transformar em String e vice-versa.

Para mais detalhes do formato de hora no Unix consulte [1]

No Java você chamando System.currentTimeMillis() ele retorna a hora corrente em milisegundos.

Por exemplo aqui ele me retornou 1308528000000

Para ver a hora que esse número representa basta dividir por 1000 e chamar no shell do linux

$ date -d @1308528000
Sun Jun 19 21:00:00 BRT 2011

A divisão por mil é porque a hora no formato Unix esta em segundos e cada segundo tem 1000 milisegundos.

Para fazer a operação inversa basta chamar

date -d "2011-06-19 21:00:00" "+%s"
1308528000

terça-feira, 23 de novembro de 2010

quinta-feira, 28 de outubro de 2010

SQL MERGE no MySQL

Hoje finalmente me deparei com uma feature cuja solução direta era fazer um MERGE no MySQL.

Para minha surpresa o MySQL não suporte MERGE [1].

Como assim ? Este comando existe desde 2008 no padrão SQL:2008 e ainda não foi implementado.
Enfim, é o custo de não pagar por uma licença.

Pesquisando um pouco descobri outro comando para fazer o trabalho do MERGE.
O ponto negativo é que terei que usar um comando específico do MySQL.

Depois se quiser trocar de banco de dados terei que reescrever todas as queries.
Foda né ? Posteriormente qual o custo disso ?
Não compensa pagar logo a licença de um BD decente ?
Pode ser que o custo de adaptação posterior em termos de desenvolvimento, testes, homologação seja muito mais caro que pagar a licença do Oracle ou DB2.

Enfim, uma coisa para se pensar...

Mas voltando a solução do problema.
A primeira solução com que me deparei foi o REPLACE [3].
Mas lendo a documentação me deparei com a seguinte frase.

REPLACE works exactly like INSERT, except that if an old row in the table has the same value as a new row for aPRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted.

Porque diabos ele faz um DELETE e depois um INSERT ao invés de fazer um simples UPDATE ?
Alguém pode me explicar isso ?

Isso inviabilizou o uso do REPLACE devido a restrições de chaves estrangeiras que todos conhecem. Não poderia apagar e escrever linhas referenciadas por outras tabelas.

Pesquisando com mais cuidado achei o salvado da pátria que é o

INSERT ... ON DUPLICATE KEY UPDATE [4]

Pois bem, ele resolve exatamente o que queria fazer com o MERGE.
O único problema é que isso é uma extensão do MySQL deixando a query fora do padrão.

Para referência segue um query com o KEY UPDATE

INSERT INTO USERS ( id, name, location)
VALUES
( 1, 'leonardo', 'mantena')
ON DUPLICATE KEY UPDATE
name = VALUES (name),
location = VALUES (location)


sexta-feira, 22 de outubro de 2010

Fazendo Post Get de um JSON com o curl



curl -d @create_user.json -H"Content-Type: application/json" -H"Aplication/json" http://teste.com:8080/rest/teste

Onde create_user.json é o arquivo local com o conteúdo JSON

Para fazer um GET faça:

curl -v -X GET -H"Accept: application/json" http://teste:9080/rest/teste

Sem mais...

segunda-feira, 18 de outubro de 2010

Como converter uma chave privada Linux PEM para o Putty PPK

Usuários Linux acostumados com o uso de certificados no formato PEM vão ter problemas ao utilizar o Putty no Windows.

Este guia vai ensinar como fazer a conversão para o formato apropriado do Putty.
Sei que a maioria não usa chaves privadas, mas quem usar o Amazon EC2 será obrigado a lidar com isso.

Todas as chaves privadas de acesso as máquinas virtuais do Amazon EC2 estão no formato PEM.
Para acessar do Windows usando o Putty por exemplo, estas devem ser convertidas para PPK.

Segue os passos:

1. Fazer o download do utilitário PuttyGen

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Link Direto: http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe

2. Executar o PuttyGen, clicar no menu em Conversions e depois Import Key.




2. Localizar o arquivo PEM a ser convertido




3. Clicar em Save Private Key



4. Confirmar e Salvar sem Passphrase. Clique em Yes


5. Escolher onde Salvar e o nome do arquivo PPK.




6. Configurar a chave em sua conexão no Putty