Artigos e tópicos interessantes para desenvolvedores

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. 😀


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.0PowerShell 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.

Exibição de imagens remotas no Thunderbird

O leitor de e-mail Mozilla Thunderbird 2 e o webmail GMail (Google Mail) têm em comum um recurso que agrega segurança, eficiência e praticidade. O bloqueio e a exibição seletiva de imagens externas dentro de mensagens de e-mail.

Imagens externas ou remotas são referências a imagens na web dentro de uma mensagem formatada, para compor o conteúdo. Em termos simples, é quando o remetente escreveu a mensagem formatada e usou para diagramação ou ilustração uma ou mais imagens mantidas na internet. Em termos técnicos: existe uma ou mais tags IMG no HTML da mensagem, cujo atributo fonte (SRC) aponta para uma imagem na internet.

Neste caso, o programa de e-mail, depois de baixar a mensagem, terá de acessar a internet novamente e baixar cada imagem remota referenciada, para que seja exibida a apresentação visual completa da mensagem recebida.

Tal uso de imagens pode ser usado de forma legítima e “inocente”, para compor uma mensagem formatada e ilustrada. É inclusive muito comum nas malas diretas de empresas, que usam imagens para ilustrar os produtos divulgados. Assim, as imagens não são incluídas no corpo de cada mensagem enviada — o que efetivamente reduz o tamanho da mensagem e o tráfego de envio — mas sim acessadas da web quando cada destinatário visualiza.

Pode ser prático para quem envia, mas é perigoso para quem recebe.

Os riscos

Para começar, podem me chamar de antiquado, mas eu particularmente sou favorável do correio eletrônico para mensagens de texto puro, sem formatação, como foi originalmente concebido. Formatação HTML (fontes, cores, tamanhos… etc.) aumenta muito o tamanho da mensagem trafegada, em comparação a se fosse enviado apenas o texto puro de seu conteúdo. Considerando que em geral os programas de e-mail, ao enviar uma mensagem formatada, enviam junto também uma versão alternativa em texto puro e que as informações de formatação ocupam “espaço”, o tamanho de uma mensagem formatada é mais de duas vezes maior que o tamanho do texto puro.

Mas mesmo que você considere essencial trazer para o correio eletrônico a riqueza visual que existe na web, com seus negritos, centralizados etc., existem riscos concretos nas mensagens formatadas com imagens.

Primeiro, tráfego de rede. Imagens em geral são muito maiores do que texto e, para exibir plenamente uma mensagem com diversas imagens, seu programa de e-mail terá que baixar todas as imagens remotas usadas. Porém, você pode ter uma boa banda larga e isso gasta poucos segundos.

Em seguida vêm os ricos sérios.

Segundo, a quebra de privacidade. Quando seu programa leitor de e-mail (mesmo que seja um webmail) baixa uma imagem remota para exibir em uma mensagem, ele tem que acessar o servidor web onde a imagem está. Este acesso fica registrado. Ou seja, o servidor web “sabe” que você (seu computador) buscou a imagem naquele momento. Algumas empresas utilizam imagens (às vezes “invisíveis”, com tamanho zero ou transparentes) em malas diretas exatamente para controlar quantos, quando e quem recebeu as mensagens, com base no registro de imagens acessadas em seu servidor.

Por fim, o risco de segurança. Fraudes, spams e outras incursões maliciosas freqüentemente utilizam o mecanismo de inserção de imagens remotas na mensagem formatada para explorar alguma vulnerabilidade de segurança, de forma a exibir conteúdo impróprio, introduzir no computador destino um arquivo maléfico, abrir uma brecha para invasão ou outro dano qualquer.

A precaução e as facilidades

É por esses riscos que o Thunderbird e o GMail — e outras aplicações de e-mail que seguirem o bom exemplo — bloqueiam por padrão a exibição de imagens externas nas mensagens recebidas. É oferecida uma opção para Carregar/Exibir as imagens, que pode ser acionada pelo usuário caso ele realmente deseje.

Na ilustração seguinte, você vê parte de uma mensagem formatada recebida pelo Thunderbird. No alto, há um aviso informando que as imagens externas foram bloqueadas (ou seja, ainda não foram baixadas) e um botão com a opção “Carregar imagens”. Na mensagem, pode-se perceber os espaços reservados para as imagens, não exibidas. Se, após conferir remetente, assunto e conteúdo textual, quiser exibir as imagens nesta mensagem específica, pressione o botão.

[photopress:thunderbird_imagens_01.png,full,centered]

Porém, existem casos em que você confia bastante no remetente, sabe que ele comumente envia mensagens formatadas contendo imagens e quer que elas sejam sempre exibidas, de forma automática, sem que você tenha que solicitar a exibição de imagens a cada mensagem recebida. Para estes casos, também existe uma opção.

No Thunderbird 2, é o link “Sempre carregar imagens externas de email-remetente”.

[photopress:thunderbird_imagens_02.png,full,centered]

O Thunderbird armazena esta opção com uma das informações de um contato (remetente), no Catálogo de Endereços. Quando se escolhe o link e o remetente da mensagem em questão ainda não está no seu catálogo de endereços, abre-se uma janela de diálogo para adicioná-lo.

[photopress:thunderbird_imagens_03.png,full,centered]

Nessa janela, note a opção “Permitir imagens externas em mensagens com formatação HTML” marcada. Pronto. Com esta opção marcada em um contato adicionado a seu catálogo de endereços, o Thunderbird passa a baixar e exibir automaticamente as imagens nas mensagens formatadas recebidas deste remetente.

[photopress:thunderbird_imagens_04.png,full,centered]

Para saber mais:

Nota: uma mensagem do Submarino.com.br foi usada como exemplo nas ilustrações. A logomarca e o conteúdo ilustrativo exibidos são propriedade ou crédito do Submarino.

Uso de bibliotecas gráficas Java em ambiente servidor Unix/Linux

Entenda e soluciona erros do tipo Can"t connect to X11 window server em aplicações rodando em um servidor Java em sistema operacional Unix ou Linux.

Fundamentos

Aplicações rodando em um servidor Java EE podem precisar utilizar bibliotecas, frameworks componentes ou primitivas gráficas. Um caso típico é o processamento dinâmico de arquivos ou fluxos de dados de objetos gráficos como uma imagem, por exemplo, para a geração de um gráfico em um relatório, ou de um código de barras em um documento.

A maioria dos componentes gráficos pressupõe a existência de um ambiente gráfico (java.awt.GraphicsEnvironment), com dispositivo de exibição (tela), além de teclado e mouse. De fato, não faz sentido criar um componente gráfico desktop em Java como um Botão (Button) ou janela (Window, Frame, Dialog etc.) sem que o Java tenha um ambiente gráfico provendo as definições e configurações necessárias para a existência e exibição do componente.

Mas componentes gráficos mais genéricos como Canvas, Panel e Image podem ser criados sem existência de modo gráfico no ambiente de execução da VM Java.

Enquanto as aplicações Java desktop (Java SE) com interface gráfica (Swing, AWT etc.) requerem um ambiente gráfico para sua exibição onde a VM Java está executando, aplicações Java EE são processadas em uma VM Java no servidor, mas a exibição ocorre no lado cliente, em geral em um navegador web. Muitas vezes, um ambiente de execução servidor Java EE nem possui modo gráfico ativo.

Normalmente isso não faz diferença em sistemas Microsoft Windows, onde as primitivas do ambiente gráfico sempre estão presentes. Mas em sistemas operacionais como Unix/Linux, há diferenças no ambiente da execução da VM Java entre o modo gráfico interativo — onde há um servidor de ambiente gráfico X11 (X Window System, ver X.Org e XFree86) em execução — e o modo batch ou console não interativo (serviços ou processos daemon).

O ambiente servidor não interativo, sem dispositivos gráficos, é chamado no jargão técnico de modo “sem cabeça” ou “headless” em inglês.

Problema e solução

Para usar bibliotecas, componentes ou primitivas gráficas em ambiente servidor Unix/Linux, não interativo e sem modo gráfico, configure o Toolkit gráfico da VM Java para executar em modo “sem-cabeça”, ou Headless Mode, existente desde o J2SE 1.4.

Para isso, é necessário definir a propriedade de sistema java.awt.headless como true. Na linha de comando da execução Java, usa-se a opção -D conforme a seguir:

java -Djava.awt.headless=true

Alternativamente no código Java, no início da aplicação antes que o Tookit gráfico seja inicializado, pode-se executar:

System.setProperty("java.awt.headless", "true");

Sem esta definição em servidores Unix/Linux, a tentativa de uso de componentes ou métodos gráficos deve gerar uma erro similar a:

Exception in thread "main" java.lang.InternalError:
Can"t connect to X11 window server
using ":0.0" as the value of the DISPLAY variable.
        at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
        at sun.awt.X11GraphicsEnvironment.<clinit>
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName
        at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment
        at java.awt.Window.<init>
        at java.awt.Frame.<init>
        at java.awt.Frame.<init>
        at javax.swing.JFrame.<init>

Em Headless Mode, aplicações podem realizar as seguintes operações:

  • Criar componentes genéricos como Canvas, Panel, Image e outros componentes leves Swing que não sejam top-level;
  • Obter informação sobre fontes disponíveis, suas métricas e configurações;
  • Definir cor para renderização de texto e gráficos;
  • Criar e manipular imagens, bem como prepará-las para renderização;
  • Imprimir usando as classes java.awt.PrintJob, java.awt.print.*, javax.print.*;
  • Emitir um bipe de áudio.

Já a tentativa de criação ou uso de componentes ou primitivas que requerem obrigatoriamente um ambiente gráfico, em Headless Mode gera a seguinte exceção: java.awt.HeadlessException. Neste caso, verifique se a operação desejada realmente pode ser executada no servidor (em modo não interativo), ou se há outra forma de fazer a operação que não necessite do modo gráfico.

Referências

Ajax em Java – coletânea de referências

[Atualizado em 16 de agosto e 20 de dezembro de 2007, 27 de abril de 2008.]

Em meu artigo Novo impulso ao JavaScript, estive comentando como a onda de alta interatividade da Web 2.0 e o mecanismo AJAX estão impulsionando a evolução de componentes dinâmicos na web.

AJAX, acrônimo para Asynchronous Javascript And XML (JavaScript Assíncrono e XML), é a técnica de uso combinado de tecnologias existentes — JavaScript, XML e o objeto XMLHttpRequest — que visa propiciar mais dinamismo a páginas web, de forma a melhorar a experiência da interação do usuário. Assim, não chega a ser uma nova tecnologia em si, mas uma ampliação das técnicas de HTML Dinâmico (DHTML) no cliente web, agora interagindo também com o lado servidor.

O princípio de AJAX é, a partir de uma página web no navegador, submeter assincronamente pequenas requisições adicionais ao servidor web, e utilizar seu resultado em manipulações dinâmicas na página atual, sem a necessidade do usuário navegar para uma página inteiramente nova.

A organização OpenAjax Alliance, que reúne mais de 80 dos principais fornecedores e projetos de software livre relacionados a tecnologias para web, é dedicada a promover a adoção de AJAX de forma aberta e interoperável.

No campo estrito do HTML dinâmico com JavaScript, aplicável a páginas web independente da tecnologia no servidor, há excelentes frameworks — livres e gratuitos — de componentes web com suporte a AJAX:

Destaque também para as bibliotecas de apoio jQuery (dica do leitor Renato Silva; veja também docs, blog, refcard, tutorial, jQuery Brasil, exemplos) e Scriptaculous (veja Wiki com documentação e demos). Veja também Other Frameworks (mootools, Prototype, jQuery, YUI Library, MochiKit, Tibco General Interface, Scriptaculous, Dojo Toolkit, Base2, ExtJS), por Qooxdoo.

Falar de AJAX em aplicações web dinâmicas implica rapidamente em avaliar quais ferramentas no lado servidor se adequam melhor e mais facilmente ao tratamento de páginas e componentes dinâmicos. Este já foi tema de artigo meu em novembro de 2006, AJAX cresce rápido em Java.

Partindo dos componentes do Dojo Toolkit e outros, já existem plataformas e frameworks abertos e flexíveis para o suporte a AJAX em Java. As seguintes referências de destaque são software livre:

Diversos frameworks web MVC oferecem suporte a componentes Ajax. Em Java, uma das primeiras iniciativas de porte neste sentido foi o do Google Web Toolkit (GWT), poderoso, prático e livre, que já nasceu com foco em Ajax. Frameworks como Wicket — veja Interview: How Wicket Does Ajax, Javalobby, 2008-04-25 –, Struts 2 (WebWork) e NextApp Echo2, entre outros, incorporaram suporte a Ajax ao longo de suas evoluções. Para Tapestry, existe a biblioteca Tacos de componentes Ajax.

Contudo, creio que o uso dos componentes dinâmicos AJAX está atingindo o seu auge quando aplicado ao padrão JavaServer Faces (JSF), que tem como fundamento exatamente a programação web em Java orientada a componentes e eventos. Estão surgindo componentes JSF cada vez mais ricos e com melhor suporte a AJAX. Cito as principais bibliotecas/frameworks JSF livres que conheço, com suporte a AJAX:

Uma tabela comparativa de várias bibliotecas pode ser encontrada em AJAX JSF Comparison Matrix.

Veja também as indicações em Uma centena de sugestões para programação Ajax e Javascript, por Cid Andrade, 2008-04-16.

Para saber mais (em inglês):

Apresentações em PDF

Na hora de preparar minhas apresentações (slides), eu prefiro gerá-las em PDF do que usá-las em formato nativo do Microsoft PowerPoint (PPS), por exemplo. Primeiro porque é mais fácil haver um Acrobat Reader instalado em qualquer computador do que um PowerPoint Viewer, garantindo assim maior compatibilidade. Segundo, porque o formato PDF é muito mais “universal” para se distribuir. E por fim, mas não menos importante, porque o formato PDF garante a correta exibição de fontes e objetos, independente da configuração ou recursos instalados no computador destino.

Além disso, o Acrobat conta igualmente com um modo tela-cheia (full-screen) para apresentações. Só não conta com adereços de transição, que eu particularmente acho cansativos e dispensáveis na maior parte dos casos.

[Atualização] No PowerPoint 2007 (Service Pack 2) e no BrOffice.org, é possível exportar a apresentação diretamente para formato PDF.

No Windows, se você tem o FreePDF instalado ou outra impressora PostScript/PDF para a geração de arquivos PDF, as configurações a seguir gerarão sua apresentação PowerPoint como PDF no tamanho ideal para tela cheia.

No PowerPoint:

  1. Menu: Arquivo » Configurar página
  2. Slides dimensionados para: “Apresentação na tela” (Largura 25,4cm × Altura 19,05cm)
  3. Orientação – Slides: “Paisagem”

No FreePDF (pela impressão do PowerPoint):

  1. Menu: Arquivo » Imprimir
  2. Botão Propriedades
  3. Orientação: “Retrato”
  4. Botão Avançado
  5. Papel/Saída » Tamanho do papel: “Tamanho de página personalizada PostScript”
  6. Editar tamanho: Largura 190.50 × Altura 254.00, Unidade: “Milímetro”

Na hora de apresentar, coloque o Acrobat Reader em modo tela-cheia: Ctrl+L

Renovação da CNH

Se você obteve a Carteira Nacional de Habilitação (CNH) de motorista no Brasil até 1993, não deve ter feito o curso de Direção Defensiva e Primeiros Socorros. A partir de junho de 2005, ao renovar sua habilitação, deverá fazer o Curso de Atualização para Renovação da CNH — 10h de Direção Defensiva e 5h de Primeiros Socorros — em um Centro de Formação de Condutores (CFC) — vulgo auto-escola –, ou submeter-se a uma prova de avaliação no Detran de seu estado.

De acordo com a Resolução nº 168 de 14/12/2004 (em vigor desde junho de 2005, alterada pela Resolução 169, de 17/03/2005) do Conselho Nacional de Trânsito (CONTRAN), seu Artigo 6º, Parágrafo 1º diz o seguinte:

§1º Por ocasião da renovação da CNH o condutor que ainda não tenha freqüentado o curso de Direção Defensiva e de Primeiros Socorros, deverá cumprir o previsto no item 4 do anexo II desta Resolução.

E o item 4 do Anexo II é:

4. CURSO DE ATUALIZAÇÃO PARA RENOVAÇÃO DA CNH

4.1 CURSO TEÓRICO
4.1.1 Carga Horária Total: 15 (quinze) horas aula

4.1.2 Estrutura curricular

4.1.2.1 Direção Defensiva – Abordagens do CTB – 10 (dez) horas aula
– Conceito
– Condições adversas;
– Como evitar acidentes;
– Cuidados na direção e manutenção de veículos;
– Cuidados com os demais usuários da via;
– Estado físico e mental do condutor;
– Normas gerais de circulação e conduta;
– Infrações e penalidades;
– Noções de respeito ao meio ambiente e de convívio social no trânsito: relacionamento interpessoal e diferenças individuais.

4.1.2.2 Noções de Primeiros Socorros – 5 (cinco) horas aula
– Sinalização do local do acidente;
– Acionamento de recursos em caso de acidente;
– Verificação das condições gerais da vítima;
– Cuidados com a vítima.

4.2 DISPOSIÇÕES GERAIS […]

4.3 ABORDAGEM DIDÁTICO-PEDAGÓGICA […]

O DENATRAN disponibiliza cartilhas para o estudo autodidata, mas a página com as publicações alertava que o material é apenas informativo e não deve ser utilizado como fonte única de estudo para a prova de renovação da CNH:

As cartilhas são encontradas também em sítios de Detran estaduais (GO, PR, RN, SP etc.) e em portais de download independentes como no SuperDownloads.

Os Detrans de RJ e PE disponibilizam cartilhas próprias.

Eis aqui alguns simulados eletrônicos diversos sobre conhecimentos teóricos, para 1ª habilitação e/ou renovação:

Para saber mais — Legislação e órgãos de trânsito:

Substituir JDK no NetBeans

Se você atualizou ou substituiu a versão de Java (JDK) no seu computador, excluindo a versão anterior com a qual havia instalado o IDE NetBeans, provavelmente ocorrerá um erro ao tentar iniciar o NetBeans com o novo JDK. Em Windows, é exibida uma janela de diálogo com o erro “Cannot find java.exe” e o programa é interrompido.

Isto ocorre porque o NetBeans armazena em um arquivo de configuração qual é o caminho para o Java SE que ele utiliza como padrão, escolhido durante a instalação. A solução é editar o arquivo etc/netbeans.conf dentro do local de instalação do NetBeans, com um editor de texto-puro (como o Bloco de Notas/Notepad), e localizar no arquivo o trecho a seguir:

# default location of J2SE JDK, can be overridden by using --jdkhome <dir> switch
netbeans_jdkhome="C:\\Arquivos de programas\\Java\\jdk1.5.0_09"

Substitua então o caminho entre aspas após netbeans_jdkhome pelo local de instalação do novo JDK, por exemplo:

netbeans_jdkhome="C:\\Arquivos de programas\\Java\\jdk1.6.0"

Pronto. Salve e feche o arquivo. Agora você deve conseguir abrir o NetBeans utilizando o novo JDK.

Referência:

  • Cannot find java.exe (em inglês), tópico no Fórum da Sun sobre Desenvolvimento Java, agosto de 2005.

Código do consumidor

[Atualizado em 2008-12-24.]

Já se passaram 16 anos desde que entrou em vigor o Código de Defesa do Consumidor (CDC) do Brasil, através da Lei nº 8.078, de 11 de setembro de 1990. O portal de legislação do Planalto mantém sempre o texto da lei atualizado, incluindo todas as alterações, inclusões e exclusões, bem como o resultado final no texto compilado.

No portal de Direito do Consumidor no Ministério da Justiça, além do texto integral do Código de Proteção e Defesa do Consumidor em HTML e PDF, ainda está acessível a Exposição de Motivos para ele publicada no Diário do Congresso e uma Cartilha do Consumidor.

O Decreto nº 5.903, de 20 de setembro de 2006 da Presidência da República regulamentou a Lei nº 10.962, de 11 de outubro 2004 (sobre a oferta e as formas de afixação de preços de produtos e serviços para o consumidor), e dispõe sobre as práticas infracionais contra o direito do consumidor obter informação adequada sobre produtos e serviços, previstas no CDC. Este novo decreto define como os preços devem ser informados e expostos de forma clara e precisa para o consumidor.

O Decreto nº 6.523, de 31 de julho de 2008, regulamentando o CDC, fixa normas gerais sobre o Serviço de Atendimento ao Consumidor – SAC, a partir de 1º de dezembro de 2008.

O Brasil é um país que tem um Direito do Consumidor dos mais avançados do mundo, fortemente amparado pela Justiça, especificamente com o Departamento de Proteção e Defesa do Consumidor do Ministério da Justiça, os Juizados Especiais das Relações de Consumo nos estados e suas comarcas, e os órgãos estaduais e municipais de defesa e orientação do consumidor — os PROCONs. Tem um Portal do Consumidor, do Governo Federal, e o Inmetro – Instituto Nacional de Metrologia, Normalização e Qualidade Industrial (Informações ao Consumidor).

O consumidor brasileiro conta também com ONGs e iniciativas sociais, bem como portais internet, voltados a prestar informação, apoio e serviços ao consumidor:

E você, já leu o CDC? Não? Então leia e defenda seus direitos!

Fontes para os amantes do TeX

[Atualizado em abril 2007 (CMU 0.6.3), março 2008 (CMU 0.6.3a), abril 2008 (LM 1.106), outubro 2009 (CMU 0.7.0 e LM 2.004).]

Dr. Donald E. Knuth, professor emérito da Universidade de Stanford University na “Arte de Programação de Computadores”, é um dos papas da ciência da computação, autor da célebre série de livros The Art of Computer Programming, considerada uma “bíblia da computação”.

Em 1977, desapontado com a qualidade da tipografia então existente ao ver a prova da edição atualizada do seu segundo volume da série, Knuth se interessou por tipografia digital e acabou por criar todo um sistema para composição digital de textos. Os frutos desse trabalho incluem outra série de livros denominada Computers and Typesetting, o sistema METAFONT para a definição vetorial de fontes, e o sistema de composição de documentos TeX. Até hoje, o ambiente programável LaTeX, desenvolvido desde 1985 por Leslie Lamport a partir do TeX, é largamente utilizado no meio acadêmico, sendo em muitas universidades um padrão para escrita de artigos, monografias e outros documentos técnico-científicos.

Para o sistema TeX, Knuth criou com o METAFONT uma família de fontes denominada Computer Modern, atualizada em 1992. Com alto contraste entre elementos finos e grossos, estas fontes são muito elegantes, agradáveis e legíveis, além de contemplar toda a gama de símbolos matemáticos, letras gregas etc.

Se você é um “mero mortal” que utiliza OpenOffice Writer, Word ou outro editor de documentos, mas gostaria de utilizar a gloriosa família de fontes Computer Modern, a boa notícia é que existem projetos que migraram as fontes para formatos como o OpenType, para uso geral em Windows, Linux e outros sistemas operacionais, com suporte a alfabetos internacionais latinos (caracteres acentuados) e Unicode.

Latin Modern (LM) por GUST Polônia

O GUST, Grupo de Usuários do Sistema TeX da Polônia, mantém o projeto The Latin Modern (LM) Family of Fonts.

[photopress:fontes_lm_amostra.png,full,centered]

As fontes Latin Modern são derivadas das famosas fontes Computer Modern criadas por Donald E. Knuth e publicadas pela primeira vez pela American Matematical Society (AMS) em 1997. Uma das principais extensões foi a adição de um extensivo conjunto de caracteres diacríticos, cobrindo vários conjuntos de caracteres baseados no Latino, a maioria europeus, mas também outros como Vietnamita. Este projeto é de autoria de Bogusław “Jacko” Jackowski e Janusz M. Nowacki a.k.a. “Ulan”, apoiado em assuntos de LaTeX por Marcin Woliński.

A família Latin Modern é constituída por 72 fontes texto, publicadas com MetaType1 sources, mais 20 fontes matemáticas. As 72 fontes de texto definem 40 tipos diferentes, sendo as demais variações de corpo em um mesmo tipo. Agrupando os tipos nas variações normal, negrito e itálico (algumas não tem todas as variações) resulta em 14 fontes distintas, conforme ilustrado: 6 monoespaçadas, 5 romanas (com serifa) e 3 sem serifa.

A família é distribuída na forma de um conjunto de fontes Postscript Type1 e conjuntos de arquivos de métrica TEX para diversas codificações de caractere. As fontes também estão disponíveis no formato Open Type (OTF), prontas para uso em processadores de documentos WYSIWYG populares.

As fontes Latin Modern são lançadas sob a GUST Font License (GFL), que é licença livre, legalmente equivalente à LaTeX Project Public License (LPPL), versão 1.3c ou posterior.

Computer Modern Unicode (CMU) por Andrey V. Panov

Já o russo Andrey V. Panov criou as Computer Modern Unicode fonts, com total suporte a caracteres acentuados e alfabetos internacionais Unicode.

A versão mais recente do trabalho de Panov, lançada em junho de 2009, pode ser baixada gratuitamente no repositório de software livre SourceForge – projeto cm-unicode, em diversos formatos abertos de definição de fonte, inclusive o OpenType (OTF), suportado na plataforma Microsoft desde o Windows 2000. Veja em Fontes Computer Modern (TeX) Unicode um passo-a-passo de instalação em Windows.

[photopress:fontes_cmu_amostra.png,full,centered]

Dica: Para baixar o pacote compactado cm-unicode-*-otf.tar.gz, você precisará de um descompactador que suporte compactação GZip, como PowerArchiver e 7-Zip para Windows, ou gunzip nas plataformas Unix/Linux. Para compactação xz que passou a ser utilizada no pacote 0.7.0, utilize PowerArchiver (2011 ou superior) ou PeaZip em Windows, ou o XZ Utils em Unix/Linux.

A família CMU provê oito fontes distintas, com suas variações de normal, negrito e itálico (assim como a família LM, algumas não incluem todas as variações): duas sem serifa, quatro com serifa e duas monoespaçadas.

O catálogo de fontes do LaTeX

Uma relação extensiva de fontes disponíveis para o LaTeX pode ser encontrado com exemplos no The LaTeX Font Catalogue, no Grupo de Usuários TeX da Dinamarca. O principal repositório dos arquivos de fontes é o Comprehensive TEX Archive Network (CTAN) tex-archive/fonts.

Várias das fontes estão disponíveis em formato OpenType, que pode ser instalado para uso geral no Windows.

Referências

Para saber mais (maioria dos links em inglês):

Flash para Firefox em Linux

[Atualizado em 17/09/2007.]

Flash Player 9

O novo Flash Player 9 (versão 9.0.48.0, de 16/01/2007) para Linux está disponível, bastando instalar o pacote flashplugin-nonfree, no repositório Não-livre (Multiverse) do Ubuntu 7.04 (Feisty Fawn). Flash Player 9 foi também portado retroativamente (backported) para Ubuntu 6.06 LTS e 6.10.

Vídeo e som no Flash Player 9 funcionam de imediato com Firefox 2 do Ubuntu 7.04, sem necessidade de pacotes ou configurações adicionais.

Você deve obter o Flash Player de uma destas fontes:

  • Recomendado: Instalando o pacote flashplugin-nonfree do repositório Não-livre (Multiverse) do Ubuntu, utilizando um gerenciador de pacotes — Synaptic em modo gráfico, aptitude em modo texto, apt-get em linha de comando.
  • Baixando diretamente da Adobe e instalando manualmente, a partir de Adobe Flash Player Centro de download, ou de Adobe Web Player Alternates – Linux.
  • Baixando e instalando manualmente, de macromedia.mplug.org.

Flash Player 7 com Firefox 1.5 e Ubuntu 6.06

Se você tiver instalado o plug-in para Firefox Flash Player 7 Linux (versão 7.0.68 de setembro/2006), para exibir animações e vídeos em Flash dentro do Firefox 1.5 em Linux Ubuntu, recomendo fazer as devidas atualizações de Flash e Firefox.

Nas versões antigas com Ubuntu 6.06 LTS, você pode ter a decepção — como eu tive — de não ter sons reproduzidos e dos vídeos em Flash travarem após tocar apenas 1 ou 2 segundos. Escavando um bocado na Internet, eu encontrei duas soluções distintas. Após aplicar ambas, os fluxos Flash vídeos passaram a tocar continuamente e com som no Firefox 1.5.0.7 do Ubuntu 6.06.

Configurar Firefox para alsa-oss

  1. Instale o pacote alsa-oss. Comando utilizando aptitude:
    $ sudo aptitude install alsa-oss
  2. Edite o arquivo /etc/firefox/firefoxrc e altere o DSP de “none” para “aoss”. Usando o editor gedit, por exemplo:
    $ sudo cp -p /etc/firefox/firefoxrc /etc/firefox/firefoxrc.backup
    $ sudo gedit /etc/firefox/firefoxrc

    FIREFOX_DSP=”aoss”
    
  3. Reinicie o Linux.

Acertar dependências ESD para Flash

  1. Crie o link simbólico /usr/lib/libesd.so.1 da biblioteca procurada pelo Flash:
    $ sudo ln -s /usr/lib/libesd.so.0 /usr/lib/libesd.so.1
  2. Crie um arquivo /tmp/.esd/socket esperado pelo Flash:
    $ sudo mkdir -p /tmp/.esd/
    $ sudo touch /tmp/esd/socket

Depois de tudo configurado, abra o Firefox, navegue por exemplo para YouTube ou Google Video e teste se os fluxos de vídeo em Flash tocam com imagem e som sem problemas.

Para saber mais (em inglês):