Sistemas operacionais


No portal IBM developerWorks, está sendo publicado um tutorial em três partes sobre desenvolvimento para web com o Eclipse Europa, usando Java, PHP e Ruby; por Michael Galpin, Desenvolvedor do eBay.

A terceira parte, sobre Ruby, deve sair breve saiu dia 18. Para acessar o conteúdo do tutorial, é necessário registrar-se gratuitamente no portal IBM developerWorks.


Outro artigo muito interessante, para quem está considerando suas opções de infra-estrutura para aplicações Java EE na web. JBoss, Geronimo, or Tomcat? — Três servidores de aplicação Java open source comparados, por Jonathan Campbell, JavaWorld.com, 2007-12-11. Só faltou cobrir também GlassFish.


O recente artigo An easy way to make your code more testable, no blog Programblings, me levou a outro artigo excelente.

We don’t write tests. There just isn’t time for luxuries, por James Golick, um desenvolvedor de softwre em Montreal, 2007-08-28. Golick, com argumentos objetivos passo a passo, contesta a afirmação que muito se houve de desenvolvedores ou times de software: “Não escrevemos testes ou fazemos cobertura de testes porque não temos tempo.” ou “Escrever testes toma tempo demais.”

Todo desenvolvedor precisa testar seu código, de alguma forma. A diferença é que alguns escrevem testes automatizados, enquanto outros usam humanos (normalmente, o próprio desenvolvedor) para verificar o comportamento correto. Então, o argumento “testar-nos-atrasa” reside na premissa que verificação manual é mais rápida que escrever testes automatizados.

Assim começa o raciocínio que se desenvolve ao longo do inteligente artigo. Leia e veja se você também concorda que a prática de testes automatizados pode ser bem produtiva.

Se práticas de desenvolvimento de software interessam a você, então sugiro ler também os artigos Pair Programming vs. Code Reviews, por Jeff Atwood, 2007-11-18; e Pair Programming vs. Code Reviews - It’s a no Brainer, por Mark Levison (Ottawa, Canadá), 2007-12-14. Eles confrontam programação em pares e revisão de código.


Conforme anúncio no Javalobby, acabou de ser lançada em dezembro a nova certificação Sun Certified Programmer for the Java Platform, Standard Edition 6 (CX-310-065) da Sun.

SCJP é a certificação de programação na linguagem Java, a mais fundamental no caminho de Certificações Sun para a Tecnologia Java. É também uma certificação bem reconhecida no mercado de trabalho. A nova versão do SCJP atualiza o programa da para cobrir Java SE 6.0.

Para saber mais:


Entrando na programação de páginas web, vale a pena ler The Problem With innerHTML, por Julien Lecomte, 2007-12-12.

E do HTML para o CSS. A escala graduada de 1 a 6 para Rate Your CSS Skill Level: Final Version & Poll montada pelo portal CSS-Tricks oferece critérios para você avaliar em que nível está sua habilidade com CSS. Minha auto-avaliação foi de 4. Para atingir 6, você tem que estar em estado graça ou ser membro da especificação no W3C. :-D


Da programação para os utilitários nerd. Hoje descobri algo interessante para quem às vezes lida com a linha de comando no Windows. Windows PowerShell. Esta janela de console melhorada virá no Windows Server 2008, mas qualquer usuário de Windows original (com a devida validação WGA) pode baixar gratuitamente da Microsoft.

Download Windows PowerShell 1.0 - PowerShell 1.0 para Windows XP Português do Brasil (KB926140).

Documentação: Windows PowerShell Documentation Pack (para baixar, em inglês e outros idiomas).

Já para quem conhece e sente falta dos comandos do Linux ao usar a linha de comando do Windows, recomendo meu velho conhecido GnuWin32, projeto em SourceForge que porta pacotes de utilitários GNU/Posix para Windows nativo (usando MinGW). O projeto disponibiliza centenas de pacotes binários, em arquivos ZIP para baixar.

Recomendo obter a ferramenta GetGnuWin32, que traz um script que baixa/atualiza todos os pacotes mais recentes do GnuWin32, e outro que descompacta todos os pacotes em uma pasta gnuwin32. Depois é só copiar/mover essa pasta para onde achar mais adequado (por exemplo, C:\ ou C:\Arquivos de programas\) e adicionar gnuwin32\bin ao PATH. Feito isso, grep, find, sed, tar, diff e mais quase mil outros comandos estarão disponíveis na linha de comando do Windows (inclusive na PowerShell).


Por falar em Linux, uma última nota. O IDG Now! noticiou que as Urnas usarão Linux em eleições de 2008.

O TSE autorizou a substituição dos sistemas operacionais VirtuOS e Windows CE para o sistema aberto Linux, adaptado pelo próprio órgão, em todas as 430 mil urnas eletrônicas usadas nas eleições de 2008, que escolherão prefeitos. Segundo o Tribunal, o objetivo é conferir mais transparência e confiabilidade à urna e ao processo eleitoral.

Em início de setembro eu havia substituído meu antigo Ubuntu 6.06 LTS (Long Term Support) pelo Ubuntu 7.04, lançado em abril 2007.

Como o Live CD de boot do 7.04 “Feisty Fawn” não me dera opção de atualizar a versão anterior já instalada, na época eu fiz uma instalação do zero, recriando a partição Linux.

Agora resolvi atualizar para a versão mais recente Ubuntu 7.10 — codinome Gutsy Gibbon — lançada em outubro. Desta vez, optei pelo procedimento de atualização on-line (ver Gutsy Upgrades), que é tão simples quanto um-dois-trêeeeeees, desde que você tenha uma boa conexão Internet banda larga:

  1. Acionar a opção do menu Sistema > Administração > Gerenciador de Atualizações.
  2. Assim que o gerenciador buscar atualizações e exibir a mensagem “Nova versão release 7.10 disponível”, clicar no botão “Atualizar”.
  3. Seguir as instruções do assistente que vai preparar a atualização, baixar e instalar todos os pacotes necessários e, ao final, reiniciar o sistema.

O processo de download e instalação é demorado. Afinal, você estará baixando praticamente um CD via Internet e instalando tudo. Comigo, demorou um pouco mais de duas horas.

Durante toda essa instalação, o assistente apenas me solicitou intervenção para confirmar substituição do arquivo /etc/bash.bashrc. A janela de confirmação tinha opção para mostrar um diff entre o conteúdo atual e o novo proposto do arquivo, o que facilitou bastante (o bom hábito que tenho de adicionar uma linha de comentário com nome, data e breve descrição em toda alteração que faço em um arquivo de script ajudou mais ainda).

Também confirmou, já no fim das instalações, a remoção de alguns poucos pacotes que não eram mais suportados na nova versão. Consenti.

Após a reinicialização do sistema — necessária ao final da atualização — e o login, foi exibido um erro do gerenciador de sessões Gnome (não anotei a mensagem). Apenas fechei a janela de diálogo e segui em frente, mas vi que os componentes da interface gráfica ficaram com uma aparência “grosseira” (sem acabamentos como cantos arredondados, degradê ou profundidade). Também notei que os ícones da área de trabalho não foram exibidos.

Quem já conhece as instalações do Ubuntu/Debian, sabe que a atualização de kernel do Linux não remove o pacote anterior, por medida de segurança, o que deve ser feito manualmente depois. Por isso, abri o Gerenciador de Pacotes Synaptic (menu Sistema > Administração) e removi o pacote do kernel anterior 2.6.20 do Linux, já que o Ubuntu 7.10 instalou o kernel versão 2.6.22.

Em seguida, vi que na área de notificação do Gnome (canto superior direito, perto do relógio) um ícone me recomendava ativar o driver proprietário da minha placa de vídeo Nvidia, para melhor desempenho. Marquei a ativação na janela e o Ubuntu automaticamente acionou o download e instalação do pacote próprio, recomendando ao final Reiniciar o Ubuntu. Comandei novo boot.

Após este segundo boot, não ocorreu mais o erro do Gnome e a interface gráfica voltou ao normal, com a aparência bem acabada novamente e os devidos ícones/arquivos de volta à minha área de trabalho.

Tudo parecia 100%, até que tentei abrir o navegador Firefox. Pelo ícone da interface gráfica, o programa não abria. Então, resolvi executar firefox pela janela de terminal, para ver se o console exibia algum erro. Exibiu:

Segmentation fault. Core dumped.

Bem, agora era só pesquisar no Google para ver se alguém já tinha passado por isso e… mas que Google se eu não tinha Firefox? ;-)

Experimentei então o básico. Primeiro, removi e instalei novamente os pacotes do Firefox, embora já estivesse atualizado com a versão 2.0.0.11 mais recente. (Prática comum de informática que chamo de “descer do carro e subir de novo”.) Não funcionou.

Apostei então na configurações pessoais anteriormente existentes. Excluí todo o diretório ~/.mozilla/ e… bingo! O Firefox abriu.

Reinstalei os pacotes ubufox e ubuntu-docs (que por sua vez requer yelp e gnome-user-guide), e a página local de documentação do Ubuntu voltou a ser a home-page do Firefox. Em seguida, reinstalei todas as extensões que uso.

Pronto. Superado o problema com o Firefox, a atualização para o Ubuntu 7.10 Gutsy Gibbon foi bem sucedida. Todo o meu ambiente anterior (incluindo arquivos pessoais e configurações) do 7.04 foi preservado.

Navegando na internet novamente, vi que outros tiveram problemas parecidos com Firefox no Ubuntu, embora não tenha encontrado ninguém que solucionou o problema como fiz, removendo as configurações pessoais do navegador.

De novidade positiva, por enquanto só notei que o novo Ubuntu 7.10 reconheceu meu adaptador Bluetooth, pois vi um novo ícone Gerenciador Bluetooth na área de notificação. Isso faz jus à fama de ótima compatibilidade de hardware do Ubuntu, um dos vários motivos que o torna uma das distribuições Linux mais amigáveis para uso pessoal (seja em desktop ou laptop/notebook).

O blog do Leandro publicou uma dica de uma dica que saiu no Viva o Linux.

Resumindo, é este Guia alfabético de comandos do Linux, totalmente em português, por Morganna Diniz, professora do Centro de Ciências Exatas e Tecnologia da UNIRIO:

Os consultores de segurança Billy (BK) Rios, da Verisign, e Nate McFeters, da Ernst & Young, vêm há vários meses realizando pesquisas sobre vulnerabilidades na forma como os programas em Windows lidam com URIs, em especial os diversos esquemas (esquema é a parte inicial do URI, que precede os dois-pontos e especifica o tipo ou protocolo do recurso; como http: e mailto:) e os tratadores de URI registrados no Windows.

Em julho, eles descobriram a Falha no tratamento de URL em Windows XP e 2003 com Internet Explorer 7 instalado, que permite execução de código remoto: Microsoft Security Advisory (943521). Esta vulnerabilidade foi divulgada em final de julho (Secunia SA26201) e consta na lista Common Vulnerabilities and Exposures (CVE) sob o número CVE-2007-3896 — mais informações no National Vulnerability Database (NVD).

A falha foi detectada manifestando-se através do navegador Firefox em Windows XP com Internet Explorer 7 instalado, afetando até a versão 2.0.0.5. Em poucos dias, Firefox e Thunderbird 2.0.0.6 já bloqueavam a falha, registrada como Mozilla Foundation Security Advisory 2007-27. Detalhes podem ser vistos no acompanhamento dos bugs Mozilla 389580 (CVE-2007-4041) e 394974 (CVE-2007-4841).

À época, os mais inflamados da permanente competição Firefox × Internet Explorer levantaram discussões sobre de qual navegador era a “culpa” da vulnerabilidade. Conforme sugeriu o próprio Billy Rios, ambos falharam.

Logo ficou claro que a origem da falha foram mudanças no tratamento de URIs em bibliotecas atualizadas pelo IE7, em Windows XP e 2003. Mas todos os programas que também não tratavam URIs maliciosas para prevenir o problema se tornavam vetores dessa vulnerabilidade ao ativar certos endereços (URIs) internet.

O comportamento falho no processamento de URIs foi detectado e solucionado no Firefox e Thunderbird 2.0.0.6, Skypecorrigido na versão 3.5.0.239 –, Trillian IMcorrigido na versão 3.1.7.0entre outros.

O mais recente anúncio de atualização de segurança foi do Adobe Reader/Acrobat 8.1.1 (visualizador/processador de PDF), que também trata a tal falha em Windows XP/2003 com IE7 instalado (Adobe Security bulletin APSB07-18 e CVE-2007-5020, 2007-10-22), que afeta Adobe Reader e Acrobat até versões 8.1 e 7.0.9.

O que mais me impressiona é que o problema de URIs maliciosas está sendo corrigido nos diversos programas afetados, mas a Microsoft até hoje ainda não solucionou a falha original que o IE7 em XP/2003 introduziu em julho!

Instalei hoje o Ubuntu versão 7.04 — codinome Feisty Fawn — a partir do CD que solicitei e recebi, gratuitamente, em algumas semanas (a postagem veio lá dos Países Baixos). Também é possível obter a instalação por download.

Dando boot pelo live CD do Ubuntu 7.04, escolhi a opção de instalação. Estranhei, porém, que a instalação do CD não ofereceu opção para atualizar a versão anterior 6.06 LTS que eu já possuía instalada. Através de download, eu já havia realizado anteriormente uma atualização de versão de Ubuntu em outro computador e foi uma brisa.

Como eu não mantinha nada crítico na partição raiz, optei por formatar as partições ext3 e swap preexistentes e fazer uma nova instalação do zero.

A instalação foi tranquila e sem problemas.

As telas de inicialização e de finalização ficaram mais limpas, no estilo “Windows XP”, apresentando apenas a barra de progresso e não mais a lista de recursos e serviços que vai sendo ativada/desativada. Apesar disso ser mais amigável para iniciantes, eu senti falta das informações, que me faziam sentir mais “controle” do que estava acontecendo.

Logo após a primeira inicialização na nova versão do Ubuntu, o sistema solicitou baixar um caminhão de mais de 120 MB em atualizações de pacotes instalados (previsível, na primeira atualização). A distribuição já veio com pacote OpenOffce.org 2.2, navegador Firefox 2.0, editor de imagens Gimp 2.2 e mais uma vasta seleção de pacotes disponíveis para instalar.

Após a instalação, precisei fazer as mesmas configurações adicionais que havia feito para o Ubuntu 6.06 LTS:

  • Codificação de caractere e o Ubuntu pt_BR, passando a codificação de caractere padrão de UTF8 para ISO-8859-1.
  • MP3 no Linux, instalando o pacote gstreamer0.10-plugins-ugly e bibliotecas adicionais relacionadas.
  • Flash para Firefox em Linux, essencial para navegar em sites com conteúdo Flash. Bastou instalar o pacote flashplugin-nonfree (v9.0.48.0), para som e vídeo do Flash Player 9 funcionarem no Firefox 2, sem qualquer configuração adicional.
  • Mouse multi-botões no Linux, para suportar os botões adicionais do meu mouse Logitech MX700.

Logo na instalação das bibliotecas para MP3 e do Flash, observei que os repositórios Universe e Multiverse (software livre não certificados pelo Ubuntu, e Software não livre restrito por copyright ou problemas legais, respectivamente) já vêm ativados por padrão, de forma que bastou simplesmente escolher, no gerenciador de pacotes Synaptic, os novos itens desejados. Aproveitei para instalar o Sun Java 6 JDK, também disponível pelos repositórios Multiverse.

Por enquanto, ainda é muito cedo para qualquer impressão além da instalação. O Ubuntu continua sendo uma ótima e fácil distribuição Linux para desktop.

« Página Anterior - Próxima Página »