Sexta-feira, 8 Agosto 2008

Novo serviço de hosting VPS

Durante alguns anos user o serviço de VPS (Virtual Private Hosting) de uma empresa na Inglaterra, SparseZone. Onde usava um zone solaris e estava muito contente com o serviço deles.

Ocorre que o o SparseZone não vai mais oferecer o serviço (não sei o motivo), então tive de procurar outro lugar, um VPS com preço semelhante.

Então encontrei um serviço tão bom, é um VPS Linux, onde é possível escolher qual distribuição vai usar (Debian, Ubuntu, RedHat) em 32 ou 64 bits.

O serviço é oferecido pela empresa TekTonic, onde eles tem algumas categorias de serviços e planos. Eu peguei o Unmanaged em um plano básico, para usar neste site que está vendo agora.

No plano básico oferecem:

  • 294 MB de memória RAM
  • 13 GB de disco
  • 500 GB de taxa de transferência mensal
  • 1 endereço IP
  • 25% de uso de toda a CPU

Esta mensagem serve mais para incentivar a galera que quer ter sua própria maquina na internet, onde o preço não é caro e a experência é bem bacana.

De nenhuma maneira sou afiliado a esta empresa, nem vou ganhar desconto algum. Apenas acho que se o serviço é bom e barato, merece ser recomendado.

Eu Recomendo !

Escrito por claudio at 11:30 PM categorizado por Dicas e Scripts

Tags: dicas linux solaris

Quarta-feira, 2 Abril 2008

Conferência no Skype

O Skype suporta chamadas em conferência, onde é possível conversar (em áudio) com vários colegas, existe um manual sobre isso.

Mas o problema é que uso linux, então a interface visual mencionada no artigo, não é para linux, então procurei um pouco por essa informação e não encontrei nada.

Então fiz a tentativa, de selecionar os contatos do skype, segurando a tecla CTRL e clicar com o botão inverso do mouse, então surgiu a opção "Start conference with selected contacts", muito bom.

Escrito por claudio at 8:25 PM categorizado por Dicas e Scripts

Tags: dicas linux

Quarta-feira, 7 Novembro 2007

Conversão de charset para UTF-8, modo gráfico

Dicas

Segue uma maneira fácil de converter arquivos ou nome de arquivos para UTF-8. Um exemplo é quando copia-se arquivos acentuados em windows para linux, o nome de arquivo não é convertido, ficando um nome ilegível. Então deve-se converter o nome do arquivo para UTF-8.

Na dica anterior, foi mostrado como modificar o conteúdo do arquivo para UTF-8. O uso da ferramenta konwert por linha de comando é útil quando se tem muitos arquivos a serem verificados. Quando se tem poucos arquivos e estão visíveis na interface gráfica, torna-se mais prático usar alguns cliques para resolver isso.

Então a dica fica com o uso de um script específico para o Konqueror (KDE) que abre um menu de contexto com opções de conversão. O script é o ToUTF-8, encontrado no kde-apps.org, as instruções de instalação estão no site.

Requisitos

  • Linux
  • KDE
  • Konqueror
  • recode

Eu uso o gerenciador de arquivos krusader, que acho bem mais prático do que o konqueror.

Clique na imagem abaixo, para ver como ele funciona. 

Clique na imagem para ampliar

Escrito por claudio at 5:26 PM categorizado por Dicas e Scripts

Tags: linux dicas

Segunda-feira, 5 Novembro 2007

Conversão de charset para UTF-8

Em ambientes de desenvolvimento heterogêneos, onde existem diferentes sistemas operacionais e IDEs, é comum encontrar problemas de caracteres com encoding diferentes, como ISO-8859-1, UTF-8, etc.

No projeto que trabalho atualmente, existem windows e linux (por enquanto não tem apple), então é comum existirem arquivos com ISO-8859-1, ASCII e UTF-8.

Então não é uma boa idéia gravar arquivos .java, vogais com acentos e gravar em ISO-8859-1 e outro colega abrir esse arquivo em seu linux com UTF-8, uma bagunça.

Então segue um script para linux que verifica os encodings dos arquivos e outro que converte para UTF-8. Note que o script não mostra o arquivo se ele já estiver em UTF-8.

É necessário o utilitário konwert. Já usei anteriormente o recode e iconv, mas achei o konwert mais prático. E ele oferece uma opção interessante, onde ele tenta descobrir qual o encodingo do arquivo, através da opção any/pt/all-test

Script 1 - checagem do encoding

#!/bin/sh

if [ $# -lt 1 ] ; then
    echo ""
    echo " Informe um diretório para pesquisar os arquivos .java "
    exit 1
fi

find $1 -name \*.java -exec file {} \; | egrep -v 'ASCII|UTF' | while read s; do 
	ff=`echo $s | awk -F ':' '{print $1}'`;  
	file $ff; 
	echo " charset   "; konwert any/pt/all-test  $ff; 
done

Script 2 - Conversão para UTF-8

#!/bin/sh

if [ $# -lt 1 ] ; then
    echo ""
    echo " Informe um diretório para converter os arquivos .java para UTF-8"
    exit 1
fi

find . -name \*.java -exec file {} \; | grep 8859 | while read s; do 
	ff=`echo $s | awk -F ':' '{print $1}'`;   
	konwert cp1252-utf8 -O  $ff; 
done                      

No script de conversão é usado a opção -O, que faz com que o arquivo original seja trocado pelo arquivo com encoding UTF-8 

Escrito por claudio at 1:46 PM categorizado por Dicas e Scripts

Tags: linux dicas java

Sexta-feira, 26 Outubro 2007

Descobrindo senha de banco de dados

Dicas

Você já passou por aquela situação de desconfiança, onde ao informar a senha de acesso ao banco de dados e pensou "poxa, tenho de informar a senha em texto limpo ?", desejando que a senha estivesse cifrada.

Isso por padrão ocorre em alguns servidores de aplicativos, onde a senha de acesso ao banco de dados é informada em texto limpo, em outros servidores de aplicativos a senha ecoa em asteriscos, deixando o usuário confortável que a senha está segura. Bem, não acredite nisso, a senha não está segura.

O que quero mostrar é que a senha pode ser extraida de outras maneiras, como inspecionar os pacotes de mensagens IP. O que pode garantir a senha é uma combinação de práticas e configurações para deixar o ambiente mais seguro.

Passo aqui um exemplo de como obter a senha do oracle configurado em um servidor de aplicativos conhecido no mercado.

Vejam abaixo na configuração da conexão, que a senha esta protegida por asteriscos


Faça os seguintes passos, para ver a senha no log

  1. Usar a biblioteca JDBC de debug da oracle: ojdbc14_d.jar
  2. Usar o driver XA oracle.jdbc.xa.client.OracleXADataSource
  3. Incluir as seguintes propriedades de JVM
    -Doracle.jdbc.Trace=true
    -Doracle.jdbc.LogFile=/var/tmp/oracle-trace/trace1
    
  4. Reiniciar o servidor de aplicativos

Basta acompanhar o log de trace do oracle ou do servidor de aplicativos, que a senha será impressa desta maneira

INFO: OracleXADataSource.getXAConnection()
03/10/2007 15:33:16 oracle.jdbc.xa.client.OracleXADataSource getXAConnection
INFO: OracleXADataSource.getXAConnection(user = claudio, passwd = admin123)
03/10/2007 15:33:16 oracle.jdbc.driver.PhysicalConnection setAutoCommit

Bonito não é ?

Para o Oracle é usado uma funcionalidade documentada, que é o trace das chamadas. Mas infelizmente, a senha é impressa junto. E vejam que nem com SSL, a senha é protegida.

E é necessário ter privilégios de administração do servidor de aplicativos.

Quando que isso pode ser útil ?

Já trabalhei em lugares onde a senha do banco de dados, era digitada no console do appserver, pelo próprio pessoal da equipe de DBA, e em algumas situações era necessário realizar alguma pesquisa no BD, então essa dica vale a pena.

Em banco de dados de código livre fica mais fácil, basta usar o código fonte do driver JDBC, modificar o código fonte para imprimir a senha e pronto.

Em banco de dados que não são de código livre, basta criar sua classe que estende DataSource e sobrecarregar o método getConnection e fazer um proxy para o DataSource do driver JDBC.

Então, percebam que os asteriscos no textfield não significam segurança para a senha do banco de dados.

Tenho essa dica há uns 3 anos e percebi que não escrevi sobre ela ainda.

Se essa dica foi útil para você, deixe um comentário, informando como ela lhe ajudou ! 

Escrito por claudio at 7:17 AM categorizado por Dicas e Scripts

Tags: java dicas

Sexta-feira, 10 Agosto 2007

Dicas de SSH (v2)

Dicas Em junho publiquei uma dica no uso de ssh, sem solicitar a senha do servidor. Isso envolve criar uma chave privada/pública e colocar a chave pública no servidor.

Ocorre que essa chave pode ter uma senha para proteger contra acesso não autorizado (passphrase), que é diferente da senha de login ssh.

Ao usar a dica que coloquei anteriormente, mas informando um passphrase, em cada conexão com o ssh, é necessário informar a senha do passphrase, o que invalida toda a dica, onde não é necessário informar senha nenhuma. Dai o motivo de não informar um passphrase.

Então conversando com o colega Bruno Borges da Summa (aka Miojo), ele disse que usou o ssh-agent para proteger o passphrase.

Então complementado a minha dica anterior,

  1. Geração de chave RSA de 2048 bits
    ssh-keygen -b 2048 -t rsa
    

    Desta vez informe um passphrase

  2. Use o ssh-agent para guardar o acesso ao passphrase
    $ eval `ssh-agent`
    $ ssh-add <private key file> # e.g. ~/.ssh/id_RSA
    $ ssh-add -l

A dica de como usar o ssh-agent, peguei de outro site.

­

Agora pode seguir o restante da dica anterior a partir do passo 2

Escrito por claudio at 9:26 PM categorizado por Dicas e Scripts

Tags: linux dicas

Segunda-feira, 30 Julho 2007

Como encontrar uma classe ?

Dicas Nesta dica mostrarei duas dicas que me ajudam muito no dia a dia.

1) Encontrar em qual biblioteca está uma classe 

Existem diversas situações onde é necessário encontrar em qual biblioteca encontra-se uma determinada classe Java.

Em 2004 coloquei uma dica de um script bash que resolve isso. Esse script mostra todos os arquivos que ele vasculhou para procurar a classe, mesmo que a classe não estivesse no arquivo, ele seria mostrada mesmo assim, causando desperdício de tempo e de tela.

Então aproveitei um tempinho e arrumei o script, onde é mostrado apenas o arquivo que contém a classe procurada e ainda arrumei a impressão da tela.

#!/bin/sh

usage="Uso:        findJavaClass directory ClassName   "

if [ $# -lt 2 ] ; then
    echo $usage
    exit 1
fi

if [ -d $1 ] ; then
    FIND_CMD="find $1"
else 
    echo "Diretorio nao existe"
    exit 1    
fi

$FIND_CMD -name \*.jar | while read jar_file ; 
do
    found_class=`unzip -l $jar_file | awk '{print $4}' | grep  $2`
    num_classes=`echo $found_class | wc -c`
    if [ $num_classes -gt 1 ] ; then 
        echo ""
        echo "Arquivo:"
        echo "    $jar_file"
        echo "Classes:"
        echo $found_class | sed 's/\ /\n/g' | sed 's/^.*/\ \ \ \ &/g'
    fi
done

  

E o um resultado como exemplo:

$ findJavaClass ~/javaSoftware/netbeans-5.5.1/ide7/modules/ext/jaxws21/ Task

Arquivo:
    /home/claudio/javaSoftware/netbeans-5.5.1/ide7/modules/ext/jaxws21/http.jar
Classes:
    sun/net/httpserver/ServerImpl$ServerTimerTask.class

Arquivo:
    /home/claudio/javaSoftware/netbeans-5.5.1/ide7/modules/ext/jaxws21/jaxb-xjc.jar
Classes:
    com/sun/istack/tools/ProtectedTask$AntElement.class
    com/sun/istack/tools/ProtectedTask.class
    com/sun/tools/jxc/AptBasedTask$1.class
    com/sun/tools/jxc/AptBasedTask$AptAdapter.class
    com/sun/tools/jxc/AptBasedTask$InternalAptAdapter.class

  

2) Como mostrar o conteúdo de um arquivo que está compactado ?

Quantas vezes por dia você descompacta um arquivo só para olhar o conteúdo do manifest ?

Então segue mais uma dica, onde não é necessário descompactar o arquivo.

$ unzip -c /home/claudio/javaSoftware/netbeans-5.5.1/ide7/modules/ext/jaxws21/jaxb-xjc.jar META-INF/MANIFEST.MF
  

Escrito por claudio at 2:56 AM categorizado por Dicas e Scripts

Tags: linux dicas java

 
     Navegue no histórico de mensagens: « First  « Prev   1 2 3 4 5   Next »  Last »