linux

Backup Esperto com o Dropbox

Logo do Drop BoxFazer backup é importante, mas é uma tarefa enfadonha. Nas últimas semanas conheci um serviço muito bom de backup que torna a tarefa de backup super fácil. O serviço se chama dropbox.

Como funciona: na instalação é criada uma pasta especial chamada DropBox. Todo arquivo que você salva ali dentro é mandado para a nuvem. O backup é diferencial: se você estiver editando um texto de várias páginas e só alterar um parágrafo, somente este parágrafo é enviado, tornando o processo rápido e economizando banda de internet.

Espaço: o serviço oferece 2Gb gratuitos, e se você precisar de mais espaço o serviço pode ser contratado. Dependendo da sua necessidade pode ser interessante.

Compatibilidade:  tenho utilizado o serviço em um computador com Windows e outro com linux ubuntu, e programa funciona bem nas duas plataformas, inclusive os acentos (qualquer unicode, na verdade).

Confiabilidade: eu não faço ideia de quem detém o capital do dropbox, então por enquanto eu não tenho colocado informações sensiveis na minha pasta do dropbox.

Jabá: para assinar o Dropbox clique aqui e crie a sua conta gratuita com 2,25Gb!

Script para iniciar o tomcat

O tomcat costuma apresentar um problema chamado PermGen space Exception quando fazemos muitos undeploys e deploys sem reiniciar o processo do tomcat. Isso acontece por uma característica da jvm da Sun. Não chega a ser propriamente um bug.

Quando executamos uma aplicação java uma instância da jvm é criada exclusivamente para aquela aplicação. Na jvm existe um espaço de memória que nunca é reutilizado. Se chama espaço de memória permanente (PermGen space) e serve para guardar objetos do tipo Class. Quando se carrega uma aplicação, cada casse do jar ou war é instanciado como um objeto que fica alocado neste espaço de memória permanente. Se a aplicação tiver muitíssimas classes a jvm vai lançar uma mensagem de erro indicando que esse espaço está repleto e não é possível carregar a aplicação. Mas se as suas classes se encaixarem neste espaço (e em geral cabe) sua aplicação vai rodar sem problemas. Existem dois tipos de casos onde existe um consumo indevido do espaço de memória permanente:

  1. Programas que geram tipos de classe dinamicamente. O hibernate chega a criar algumas classes em tempo de execução, mas não chega a ser um número tão grande a ponto de gerar problemas. Para encher o espaço de memória permanente seria necessário criar centenas ou milhares de classes dinamicamente. Provavelmente um sistema que roda por muitos dias seguidos e criando classes novas possa chegar preencher todo este espaço. Mas seria um sistema mau escrito.
  2. Programas que carregam muitos tipos de classes dinamicamente. É o caso do tomcat que aceita deploy e undeploy de aplicações. Quando um desenvolvedor faz undeploy todos os objetos das classes da aplicação continuam lá no espaço de memória permanente e quando é feito o deploy da nova versão do context outros tantos objetos do tipo classe vão para a memória permanente. Em algum momento a memória acaba.

É por isso que no ambiente de desenvolvimento é comum ter de reiniciar o tomcat várias vezes ao longo do dia de trabalho. Como meu ambiente é para testes, eu limpo logs e o diretório work antes de rodar o tomcat, e coloco o tomcat.log que é o arquivo do log4j que eu configurei para exibir as mensagens do tomcat. Segue abaixo o meu script para iniciar o tomcat:

#!/bin/sh
TOMCAT_HOME="/opt/tomcat"
TOMCAT_LOGFILE="$TOMCAT_HOME/logs/tomcat.log"

cd $TOMCAT_HOME
rm logs/* -rf
rm work/Catalina/localhost/* -rf
bin/catalina.sh jpda start
ps aux|grep tomcat
echo "tomcat iniciado..."

sleep 5

while [ ! -f "$TOMCAT_LOGFILE" ]; do
sleep 1
echo "arquivo de log ainda não foi criado..."
done

echo "log do tomcat existe e será exibido a seguir:"
tail -f logs/tomcat.log

Ubuntu 8.04 LTS

Ontem de noite comecei a atualização do meu Ubuntu 7.10 para a versão nova que saiu ontemd e manhã, a versão 8.04 LTS. Precisei baixar cerca de 1.3 Gb de dados para realizar a atualização que ocorreu muito bem. Até o momento não percebi nenhum perda de dados ou configurações. As impressoras que eu tinha instalado continuam lá e meu ambiente gnome continua com a mesma aparência de antes. Meu teclado brasileiro não teve problemas de configuração, como li em outro blog que relatou a instalação do 8.04 RC por boot de CD…

Não gostei quando soube que viria a versão beta do firefox 3, mas a versão parece estável, e ainda busca as informações de proxy direto do sistema, o que é um ganho para mim que configuro proxy duas vezes por dia.

Uma coisa que não gostei foi ele ter retirado o VMWare que eu tinha instalado. Ele me perguntou se eu queria tirar algumas bibliotecas perdidas onde constava o vmware, e achei melhor tirar e instalar novamente depois da instalação. Foi uma precaução minha, portanto.

No asf@web já saiu um post sobre a atualização do sistema. O Antonio Fonseca também não encontrou problemas na atualização. Aguardo o relato de outros colegas usuáriod e ubuntu, como o Elcio que também estava se arriscando ontem 😉

Bolsinhas de CD

A Micro$oft andou distribuindo CDs por aí com uns live qualquer coisa: nada que não seja distribuido por download na internet. Eu recebi os dois CDs que estão na foto do lado: um no Campus Party (o que não se faz por um capuccino grátis, hein Vinícius?), e outro veio com uma revista. Um colega meu que usa linux recebeu um destes CDs junto da sua assinatura da revista, e me perguntou o que ele deveria fazer com o disquinho.

A minha irmã Sandra tem uma ótima sugestão no blog dela: bolsinhas de CD a Yohanah já está usando a bolsinha dela que a tia fez 😉

Bolsinha de CD

Se você tiver uma outra sugestão do que fazer com esses CDs promocionais chatos deixe o seu comentário aqui.

Ubuntu Novo

Eu uso Ubuntu linux e neste sábado fiz a migração para a nova versão, a 7.10. Estava com medo de atualizar, pois a última atualização que fiz não deu muito certo, e alguns programas pararam de funcionar, mas eu confesso que fiz a atualização no processo “next man”, clicando nas opções sem ler quase nada.

Para atualizar meu ubuntu da versão 7.04 para a 7.10 foi necessário baixar uns 900Mb de pacotes e a instalação foi interrompida com diversas perguntas sobre manter ou não arquivos de configuração do apache, e outros módulos (o que achei chato, mas necessário).

Aparentemente tudo está correndo bem: minha experiência foi positiva. Só notei que o tema da janela de início de sessão do gnome ficou bagunçado (é um tema personalizado).

Os plugins que eu utilizo no eclipse

Eu utilizo o eclipse wtp europa que possui todos os plugins que eu preciso. Esta versão do eclipse pode ser baixada por este link:

Versão para o Windows
Todas as versões, inclusive linux e Windows

O eclipse wtp europa é a consolidação de diversos plugins. Com ele dá para programar em java, editar qualquer arquivo xml, arquivos jsp e sql. Existem uma perspectiva que permite a conexão com qualquer banco de dados jdbc, e a partir daí posso rodar queries sql simples. Para tarefas mais exigentes eu utilizo um programinha externo chamado Squirrel SQL. Prefiro utilizar o wtp com o Squirrel ao plugin quantum, que também é um bom plugin.

Dificilmente eu trabalho com o hibernate. Quando isso acontece eu utilizo um segundo plugin para o eclipse que é o hibernate tools, do grupo jboss. Fora isso não instalo nenhum plugin. É comum o eclipse ficar instável após a instalação de muitos plugins. Por isso eu prefiro uma instalação mais enxuta que normalmente se limita ao wtp.

Um outro plugin que muitos colegas usam é o sysdeo. O papel desse plugin é iniciar e derrubar o tomcat e facilitar o debug. Eu não gosto nada nada desse plugin, e prefiro fazer o debug dispensando o uso de quaisquer plugins. Para fazer isso, veja esse link: .

Por fim, existe o plugin para o struts chamado Easy Struts. Esse plugin dá uma visão gráfica do struts-config.xml. Eu deixei de utilizar o plugin assim que eu entendi como funciona o xml, porque eu sempre achei, e continuo achando que o struts-config.xml é uma aberração da natureza. Agora com o struts 2 ficou bem mais fácil de mapear as ações, e eu não sinto necessidade alguma de plugin.

Bem, esses são os plugins que eu utilizo ou que já utilizei no eclipse.

TV na internet com o Joost


Consegui uma senha de beta tester do Joost. Faz algumas semanas que eu enviei alguns emails aos colegas mais conectados implorando por um convite ao serviço Joost, mas não consegui. Tive de aguardar sair a senha pela fila de espera do site. O Joost é um serviço de TV sobre IP, ou seja programação em video distribuído pela internet. O programa é criação do autor de dois outros programas de sucesso, o Kazaa e o Skype.

O programa se encontra em versão beta e não há versão para linux: tive de experimentar o programa em um computador diferente da minha estação pessoal linux. Apesar de ser uma versão beta eu não encontrei nenhum bug sequer. Eu dei uma zapeada pelos canais e assisti a uma partida da final de um campeonato de Poker. Os programas ficam disponíveis para você assistir a hora que lhe for conveniente, e eventualmente é interrompido para exibir comerciais do Joost. O único inconveniente que encontrei foi esse, pois o Joost não espera um momento de intervalo para apresentar o comercial.

Fora isso o lag é muito pequeno, e só encontrei lag nos primeiros cinco ou dez segundos do programa, quando pode ocorrer um travamento enquanto o Joost carrega um cache do programa. Os programas disponíveis são relativamente poucos, mas vêm aumentando. Tem receitas culinárias, vários esportes, documentários e programas relacionados a música. Nota de curiosidade vai para o canal de Boliwood, pois eu sempre quis ter acesso a música indiana. Apesar das roupas serem exageradas, eu gosto das músicas.

Por fim, se você pretende se alistar na fila de beta tester, verifique antes se você dispõe de configuração necessária para rodar o programa. Menos que 512Mb de memória, por exemplo, é insuficiente, e uma boa conexão internet com limite de download adequado.

Quando a distribuição sugere pacotes incompatíveis

Distribuições linux trazem um conjunto de coeso de componentes de sistema operacional e assessórios que juntos funcionam sem que haja conflitos. Ou pelo menos na teoria é assim.

Por acaso passei pelo mesmo problema duas vezes em menos de 24h. Primeiro ao instalar o tomcat no ubuntu 6.10 que opero na Assembléia, e hoje ao instalar o mesmo tomcat em um servidor Suse.

Ambas distribuições sugerem o uso do tomcat 5.0.30, mas quando se instala as ferramentas de administração do tomcat, o admin simplesmente não roda devido a uma incompatibilidade entre o struts da distribuição e os arquivos de configuração do admin. Em outras palavras: o sistema recomenda um struts incompatível com a recomendação do admin do tomcat.

Solução? Fazer como qualquer mortal faria, baixando o tomcat estável (5.0.28) do site da apache, que vem com o strutus adequado, processo relativamente tranquilo e rápido, apesar de não manter o santo padrão das distribuições (diretórios, autorizações…).

Agora, quando me argumentarem que tomcat só se instala em servidor com os YaSTs e apt-gets, posso dizer por experiência própria que nem sempre é o melhor.

Por último, para quem ainda não se convenceu: quando vou instalar o tomcat no SUSE o YaST sugere que se instale o java open source. Resultado: incompatibilidade com vários códigos java. Solução: instalar outro pacote do SUSE com o java da sun…

E se você só usa a tal distribuição só porque lhe garantiram que era a distribuição mais estável e que usar outra distribuição vai contra a política da empresa? Bem, daí só resta ficar resmungando nos blogs afora :-/