segunda-feira, 28 de março de 2011

Primeiros Testes do Firefox 4.0: Novidades e Bugs

Decerto foi um grande "auê" quando recentemente a Fundação Mozilla anunciou o lançamento oficial do Firefox 4.0. Se você ainda não o baixou, pode baixar gratuitamente aqui, e se somar às dezenas de milhões de pessoas que já o baixaram.


  • Instalação

Ainda não existem binários do Firefox 4.0 nos repositórios de apt-get ou da maioria das Distros Linux (a não ser nos repositórios particulares da Fundação Mozilla). Assim, para usá-lo, basta baixar diretamente do portal acima o binário comprimido e descomprimir a pasta.
Se quiser, você pode descomprimí-lo e torná-lo disponível para todos os usuários, colocando-o na pasta /opt. Sigamos os passos:

tar -jxvf firefox-4.0.tar.bz2
mv firefox /opt/

Para executar, basta que se chame:

/opt/firefox/firefox

Simples e rápido!! Possivelmente a sua distro já tem as bibliotecas necessárias para rodar o Firefox 4. E este método também impede que você desinstale o Firefox 3, podendo testar a nova versão mantendo a anterior ativa.

  • Novidades


O Firefox 4.0 é bem interessante, tem um visual limpo e aprimorado graficamente, porém semelhante aos congêneres da versão 3. Como de esperado, é realmente mais rápido na execução de JavaScript e traz novas funcionalidades divertidas, como o conceito de "Aplicativo".
"Aplicativo" nada mais é do que reduzir uma aba ao pequeno ícone que ela porta, sem texto descritivo, de forma a diminuir o espaço ocupado pela aba. Muito útil para quem trabalha com muitas abas abertas ou para quem trabalha sempre com uma certa quantidade de abas fixas, como o GMail, Blogger, Facebook, etc. De certa forma, nos aproxima conceitualmente do que já reportamos como excelente funcionalidade do Flock no artigo Qual o Melhor Navegador??.
Aliás, se você é aficcionado por abas, você pode agora organizar suas abas em grupos, usando o recurso "Tab Groups", ou "Grupo de Abas". Basta selecionar a setinha para baixo no final da barra de abas e escolher este opção, que geralmente é a primeira. Inicialmente, suas abas vão surgir como pequenos quadrados dentro de um quadradão claro maior. Este quadradão claro é o grupo de abas, e só existe ele. Para criar um grupo novo, basta arrastar uma aba (na verdade, o quadrado com o desenho correspondente à aba que você deseja) para fora do quadrado branco maior, ou seja, em direção ao espaço vazio. Ela vai cair no chamado "Panorama", que é este espaço vazio, de modo que vai surgir um grupo novo para ela, ou seja, um novo quadradão branco. Daí é só brincar de arrastar abas para cá e para lá.
A vantagem de usar "Panorama" e "Grupo de Abas" é que em seu navegador surgem apenas as abas daquele grupo, de forma que muitas outras podem estar abertas, sem poluir sua tela nem deixar de ver o que acontece. Se você tiver medo de perder uma aba, basta verificar o ícone de grupo de abas que surge no final da barra de abas. Clicando nele, é possível se verificar outros grupos que você criou no Panorama. Um atalho para o "Panorama" é a combinação Crtl + Shift + E. Para abrir um grupo, basta dar um duplo-clique no mesmo. Para abrir uma aba de um outro grupo, basta clicar nela.
A famosa barra de status agora está reduzida e bem enxuta, deixando mais espaço para os plug-ins (extensões) que penduram ícones nela. Aliás, a engrenagem de extensões foi revisada e aprimorada, o que significa que possivelmente, ao instalar o Firefox 4, algumas extensões vão exigir que sejam atualizadas.
Outro recurso interessante é o Firefox Sync, disponível na janela de Preferências, aba Sync. Este recurso permite a criação gratuita de uma conta sua nos servidores do Firefox para você compartilhar seus favoritos entre cópias diferentes do Firefox, como, por exemplo, seu Firefox do trabalho, de onde estou digitando agora, com o de seu celular ou o de sua casa, onde você poderá desejar ver um favorito que você registrou em outra máquina. Assim, você não só tem um backup dos favoritos como também mantém a sincronia e não perde nada, nem mesmo o tempo de procurar duas vezes aquele artigo do Pajé que resolvia tanto seus problemas...


  • Bugs Novos

Como nem tudo são flores... notei que, apesar do excelente release, existem sérios bugs na funcionalidade de impressão. A impressão de páginas é intermitente: ela pode funcionar muito bem, como pode simplesmente fazer o Firefox "estourar" na sua cara após apertar o "Print" da janela de impressão. Eu mesmo reportei este Bug à Mozilla e espero que corrijam logo, uma vez que testei as mesmas páginas no Firefox 4 e no 3.6.16, notando que o 3.6.16 se comporta perfeitamente. O problema se acentua se você tentar imprimir apenas uma página específica de um endereço que tem muito conteúdo.
Creio que estes pequenos bugs não vão interferir na sua navegação, a não ser que você precise muito imprimir conteúdo da internet, e sei que rapidamente novos releases surgirão corrigindo os bugs mais grotescos, como este.


  • Conclusão

Embora seja realmente interessante e melhorado, o Firefox 4.0 não é uma revolução de navegador, como parecia ser o 3.0, e foi lançado possivelmente sem o rigor suficiente de testes, deixando alguns bugs fáceis de detectar expostos. No entanto, é um navegador realmente rápido, muito funcional, bem mais agradável e inteligente. Resolver muito bem o problema de gerenciamento de favoritos, o que é uma coisa importantíssima para grande parte dos usuários. Acredito que vale a pena ao menos o download e a experiência de testá-lo e sentir como ele funciona para você.
Qualquer outra coisa, deixe seu comentário aqui no Pajé!!

sábado, 12 de março de 2011

Instalando o Ambiente de Programação Qt

O Qt é um arcabouço de desenvolvimento em C++ para ambientes gráficos (vide verbete da Wikipedia). Além de ser bem antigo, o Qt é muito poderoso e dá sustentação a uma série de grandes e complexas aplicações, como o KDE. Este artigo mostra como instalar o ambiente de desenvolvimento Qt em sua máquina Linux.


  • Instalação do Qt

Primeiramente, você precisará instalar os pacotes de desenvolvimento que são necessários para o Qt existir na sua máquina:

apt-get install libqt4-dev

Isto instalará os seguintes pacotes:

libdrm-dev libgl1-mesa-dev libglu1-mesa-dev libpthread-stubs0 libpthread-stubs0-dev libqt4-dev libqt4-multimedia libqt4-opengl-dev libx11-dev libxau-dev libxcb1-dev libxdmcp-dev mesa-common-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev xtrans-dev.

São em torno de 10MB para download e 43MB instalados.

É preciso também se instalar o compilador de C e C++, obviamente, uma vez que o Qt é um arcabouço para a linguagem C++:

apt-get install g++

Por fim, é preciso se instalar a ferramenta qmake, que gera automaticamente o seu projeto e o MakeFile do mesmo:

apt-get install qt4-qmake


  • Testando o Ambiente

Feitos os passos acima, seu ambiente deverá estar pronto para o desenvolvimento. Vamos fazer um pequeno teste. Crie um diretório para um programa no estilo "Hello World" do Qt:

mkdir Qt
cd Qt

Agora crie o arquivo de seu programa (inspirado neste tutorial):

vi main.cpp

e digite o código dentro dele:

#include
#include

 int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);

     QPushButton hello("Hello world!");
     hello.resize(100, 30);

     hello.show();
     return app.exec();
 }

Como estamos preocupados apenas em instalar o ambiente, não vou esmiuçar o que o código faz, mas os detalhes para tanto podem ser encontrados na referência do tutorial citado acima.
Terminada de codificar sua classe C++, você deve criar o arquivo do projeto da mesma (arquivo .pro):

qmake -project

E, agora, gerar o arquivo MakeFile:

qmake

Beleza, estamos quase no fim!! Para finalmente compilar seu programa, vamos fazer o MakeFile rodar:

make

Provavelmente isto chamará o g++, que compilará o programa e gerará um arquivo executável chamado "Qt". Para executá-lo, basta digitar:

./Qt

E surgirá o nosso programinha de Hello World na tela!!

É claro que existem ambientes de desenvolvimento próprios para o Qt, de forma que você poderá automatizar em grande parte os passos acima. Contudo, é sempre bom saber o que ocorre internamente, em especial quando se busca a solução de algum problema ou a identificação de uma biblioteca omissa em seu ambiente.

terça-feira, 8 de março de 2011

Qual o Melhor Navegador??

Vivemos cada vez mais as pressões que se resvalam sobre nós consoante à guerra dos navegadores. Vejamos que existem pesquisas minuciosas apontando qual o navegador mais popular, qual ganhou mais pontos, qual perdeu, para onde foram os pontos que flutuam entre um navegador e outro. Vemos o Firefox perder terreno para o Google Chrome, vemos novos navegadores surgindo e outros se apagando. Para o usuário final, fica difícil saber o que usar... neste artigo vamos discutir dois navegadores e entender um forte argumento que pode direcionar a sua busca pelo seu navegador ideal!! Acompanhe-nos!!
Uma pesquisa atual (2011) e detalhada sobre os principais navegadores pode ser encontrada aqui: http://internet-browser-review.toptenreviews.com/. Este portal investiga criteriosamente uma riqueza de detalhes, como: segurança, tempo de inicialização, compatibilidade, usabilidade, abas, zoom, getos do mouse, etc, etc... Com tanta informação, é possível se escolher o melhor navegador?? Bom, particularmente, uso o Firefox, e posso denfendê-lo com os seguintes argumentos:

  • É multiplataforma: não importa em que sistema você está, sempre haverá um Firefox possível de se usar. Assim, você terá intimidade com o navegador independente da máquina que está usando no momento; isto é essencial para quem precisa passar por diversos setores, para quem viaja ou para quem, por algum motivo, precisa usar máquinas diferentes em seu cotidiano;
  • Foi o primeiro a criar e ainda é o melhor a apresentar o conforto da navegação privada. Por mais que ela possa ser emulada com opções de configurações em qualquer navegador, isto incluiria diversos passos até que se tenha a segurança de se navegar sem deixar rastros. Se você usa computadores públicos, esta opção é mais do que desejável!!
  • A quantidade de extensões, temas e perfumarias é enorme!! Simplesmente enorme!! A própria engrenagem de extensões do Firefox permite que se construam os mais diversos plug-ins com as mais diferentes funcionalidades, dada a sua flexibilidade e engenhosidade, além da facilidade que oferece aos desenvolvedores ao resolver as extensões usando Javascript, e não linguagens específicas de programação ou script.

Mas note que estou apenas acrescentando mais informações e critérios a esta sopa que já está bem mexida e cheia... assim, antes que ela vire um grande Yakisoba, vou lançar apenas um critério para que você decida certeiramente qual navegador deve usar: escolha o que tem funcionalidades que mais lhe agradam ou ajudam em seu dia-a-dia, ou seja, o navegador que você mais gosta!!
O navegador é o seu melhor amigo, um cachorro virtual, e estará com você durante todo o tempo em que seu computador estiver ligado. Portanto, não se furte a decidir que o melhor deles é aquele que faz o que você precisa da maneira melhor!! Seja com um plug-in especial de que você precisa muito, seja com aquelas funcionalidades que você gosta, seja com a aparência que mais lhe agrada. Este é o melhor. Ele abana o rabo e traz o jornal. Quando preciso, deita-se e finge-se de morto. Está sempre ao seu lado e não falha.
Vamos a um exemplo... imagine que você é rato de webmail (como o GMail ou o Yahoo), escreve para um ou mais blogs (como este que você está lendo) e gosta de visitar o Youtube, Facebook, dentre outros sistemas de redes sociais e multimídia conhecidos. Se este é seu caso, eu recomendo que você use o Flock. As figuras abaixo não deixam negar:

  • O Flock tem excelentes ferramentas para decorar seu webmail e deixar você logado mesmo que a página esteja fechada. Você configura o tempo em que ele deve verificar o e-mail e ele envia avisos periódicos indicando mensagens novas. Tem inclusive uma tela especial para as mensagens de e-mail aparecerem sem precisar voltar ao webmail. Funciona com os principais sistemas, como GMail, Yahoo, etc.
  • Tem uma ferramenta equivalente para blogs (Blogger, Wordpress, Blogsome, Typepad, LiveJournal), Twitter, Facebook, MySpace, Digg, Bebo e muitas outras redes sociais;
  • Acessa o Delicious e tem uma ferramenta integrada para o Facebook Chat;
  • Tem um menu de pesquisa de fotos e vídeos automático e rápido (vide Figura 01), com ferramentas sofisticadas de compartilhamentos de imagens e multimídia nos mais diversos sistemas, como YouTube, Photobucket, Flirck, Picasa, TinyPic;
  • Permite que você arraste qualquer tela, figura ou texto do navegador para uma área reservada onde o conteúdo é guardado e indexado automaticamente, podendo depois ser convertido em imagem, exportado ou automaticamente anexado em um artigo de um blog ou e-mail, por exemplo;
  • O Flock tem um mini-editor de blog que permite a você escrever o artigo inteiro, colocar links, figuras e todas as coisas que normalmente se usam sem precisar digitar na tela do navegador (vide Figura 02). Ainda permite que se salve o rascunho, visualize o resultado e se coloque as Tags (Marcadores);
  • É gratuito e multiplataforma.

Tentador, não é?? Este é o melhor navegador?? Será o Firefox (ou outro navegador qualquer) melhor do que ele?? Siga meu argumento e se pergunte: "de que preciso realmente??"; de sua resposta mágica surgirá o seu verdadeiro melhor navegador, independente da complexidade das informações e da acurácia dos resultados das pesquisas. Navegue tranqüilo e seja feliz!!


Figura 01: Tela do Flock contendo a barra de imagens e a barra lateral de contas e serviços.



Figura 02: Editor de Blogs do Flock contendo parte deste artigo.


Blogged with the Flock Browser

sábado, 5 de março de 2011

Como Remover um Commit Errado no SVN? Ou: Como Desfazer um Commit no Subversion?

Este artigo é dedicado a todos aqueles que já enviaram um commit equivocado para o SVN e quebraram ou estragaram alguma coisa no sistema onde trabalham. Quem nunca fez isso antes, que atire a primeira pedra!!
Bom, mas vamos lá.... A reposta para a pergunta acima é bem simples: não há como. Meu Deus, então agora estou perdido?? Calma, não se preocupe!! Existe uma técnica que lhe permite reverter o seu repositório para um estado anterior, se for realmente preciso. Acompanhe nosso artigo.


  • Por Que não há uma Forma Direta de Desfazer Commits??

Se desejar, você pode ir imediatamente para a solução do problema, lá embaixo. Entretanto, eu resolvi incluir esta seção aqui para lhe ajudar a pensar mais sobre como funciona o SVN e quais as suas premissas, aumentando seu conhecimento sobre o mesmo.
O SVN armazena seus dados em um banco de dados interno (ou em BDB - Berkeley Data Base, ou em FSFS). Evidentemente, seria possível fazer operações comuns a bancos de dados, como delete ou roll back. Contudo, o Subversion não permite qualquer tipo de remoção de entradas (inserts) de dados que foram efetivadas, sob risco de comprometer a segurança do repositório. Observe o risco a que os desenvolvedores estariam sujeitos e a falta de confiança que se geraria sobre os repositórios se isso fosse possível, considerando cenários como:

  1. Um desenvolvedor ou administrador de sistemas é demitido. Num acesso de raiva e considerando-se injustiçado, ele remove grande parte dos commits dos repositórios da empresa, deixando-os em estados muito primitivos e perdendo grande parte dos códigos gerados durante anos.
  2. Um desenvolvedor mal intencionado pratica sabotagem industrial: elimina ou deturpa parte do código do sistema antes do mesmo ser compilado e o envia para produção. Após a implantação do sistema danificado, o desenvolvedor remove o trecho defeituoso que criou, eliminando a única prova concreta de sua ação.
  3. Imagine que ninguém será demitido e não há qualquer pessoa mal intencionada. Ao contrário: todos trabalham felizes e freneticamente. Contudo, a equipe tem o hábito de, vez por outra, remover um commit mal feito. A uma certa altura, descobre-se um erro grave no sistema que está há mais de 1 mês em produção. A correção parece simples e poderia ser feita em cerca de um dia. Contudo, a quantidade de commits removidos impede que se consiga restaurar o código exato da versão que está em produção. Resultado: o erro vai persistir lá até que a versão seguinte seja totalmente finalizada e implantada...

Por motivos como estes, a remoção direta de commits não é possível. No entanto, existe a solução paliativa, um pouco mais agressiva, porém que funciona e é razoavelmente fácil e segura. Acompanhe-a na próxima seção!!


  • Removendo um Commit Indesejado

Se é realmente necessário remover um ou mais commits do SVN, e espero que tenham sido os últimos, então a única solução é fazem um dump do repositório filtrado pelo número de revisão, eliminá-lo, recriá-lo e restaurar o dump com um load, de forma a carregar no repositório recém-criado todas as revisões até a última antes das indesejadas. Todas estas ações devem ser feitas como root!! Vamos fazer isso passo a passo...

1. Fazendo o dump:
Considere que seu repositórios se chame "repo" e você está no diretório onde ele se encontra. Primeiramente, pare todos os acessos ao repositório, para congelá-lo (ou seja, pare o Apache, se você usa o WebDAV, ou impeça o login via SSH de usuários comuns, se você usa o protocolo svn+ssh://). Descubra o número da última revisão boa (desejada), a partir da qual todas serão eliminadas (suponhamos: revisão 200), para que façamos o dump de tudo até ela. Agora, considerando esta revisão, faça o dump:

svnadmin dump repo --revision 0:200 > repo.dump

É criado o arquivo repo.dump, que contém todas as revisões deste o tenro início de seu repositório até a revisão informada, de número 200.

2. Remova o repositório e crie outro idêntico:
Se você quiser, por segurança, pode mover o repositório para outro nome ao invés de apagá-lo, de forma a manter uma cópia de segurança do mesmo, caso alguma operação falhe. Você pode também fazer um backup do diretório completo do repositório ou armazená-lo em um arquivo .tar.gz, para economizar espaço, caso o repositório seja muito grande.

rm -rf repo
svnadmin create --fs-type bdb repo

Isto recria o repositório com mesmo nome, só que agora completamente vazio.

3. Agora sim, subindo tudo!!
Rode o comando, considerando o arquivo de dump gerado e o repositório novo recém-criado. Observe que, evidentemente, convém utilizar o mesmo nome do repositório antigo, para que outras configurações de seu sistema permaneçam válidas:

svnadmin load repo < repo.dump

Se tudo deu certo até aqui, você terá seu repositório recuperado até a revisão que você informou no dump, de forma que as posteriores foram ignoradas e serão perdidas.

4. Para finalizar, não esqueça deste procedimento!! Atribua as mesmas permissões de arquivos, dono e grupo originais às pastas do repositório, especialmente ao diretório "db" e seus arquivos. Se você usa o WebDAV, por exemplo, terá de tornar os arquivos pertencentes ao usuário "www-data" (ou o nome que tem seu usuário do Apache), e não "root", como é inicialmente criado. Não esqueça de verificar se os diretórios estão marcados como executáveis, se for o caso, para permitir a criação de novos arquivos de log no diretório "db".

5. Teste tudo bem detidamente, para evitar surpresas. Em tudo funcionando, finalmente, faça a faxina: elimine ou faça backup do repositório antigo e dos arquivos de dump que ainda estão no disco.

Bom, pessoal, testei realmente todos estes comandos, embora eu mesmo já tenha me visto em situações de utilizar este mecanismo para eliminar commits errados. Torço que tudo dê certo com vocês!!

Mais detalhes sobre administração de repositórios, consultem o manual do SVN (SVN Red Book), Capítulo 5. Veja também nosso artigo completo sobre Como Fazer Backup de Repositórios SVN. E, claro, COMENTEM!!!