FAQ


Com o início da vigência do Acordo Ortográfico da Língua Portuguesa no Brasil em 2009, uma necessidade decorrente dos usuários de computador é o suporte a esta reforma ortográfica nos programas.

O mais importante são os revisores ortográficos e gramaticais dos editores de texto, bem como dos programas onde há campos de entrada/digitação de texto, como os clientes de e-mail e os campos de texto dos navegadores/browsers internet.

Veja a seguir quais já oferecem suporte ao Acordo Ortográfico da Língua Portuguesa.

BrOffice/OpenOffice e Mozilla

O VERO – Verificador Ortográfico do projeto BrOffice.org inclui suporte ao acordo ortográfico desde a versão 2.0 já disponível em 1º de janeiro de 2009, graças ao trabalho do sergipano Raimundo Santos Moura.

Está disponível para uso com os programas do pacote de escritório BrOffice.org (editor de texto, planilha, apresentações, desenho) versões 3.x e 2.x (inclusive na divisão de sílabas).

Disponível também com os programas de internet da fundação Mozilla — o navegador Firefox, o cliente de e-mail Thunderbird, a suíte Seamonkey — na forma de extensão como dicionário pt_BR para o corretor ortográfico nativo.

Microsoft Office

A Microsoft liberou em 14/10/2009 o pacote de atualização KB972854 de 30/09/2009 para o Microsoft Office 2007, provendo suporte ao Acordo Ortográfico.

A página sobre a Atualização para o Verificador Ortográfico, Dicionário de Sinônimos e Verificador Gramatical do Microsoft Office 2007 também apresenta informações adicionais sobre a reforma ortográfica e indica Artigos sobre a Reforma Ortográfica da Língua Portuguesa.

Como o Microsoft Office 2003 já encerrou seu ciclo de vida principal de suporteem 14/04/2009, e entrou em suporte estendido apenas para atualizações de segurança até 2014 — a Microsoft deixou o suporte a essa versão de fora da atualização.

No Office 2007 com a atualização, observei que permanecia a autocorreção ao digitar de “linguiça” para “lingüiça” (com trema). Foi preciso eu remover manualmente: Opções do Word > Revisão de Texto > Opções de AutoCorreção > Substituir texto ao digitar > selecionar a substituição de linguiça > escolher o botão Excluir.

Para saber mais:

Continuo achando incrível a expansão do genialmente simples Twitter, que virou mania mundial — e como tudo que envolve internet, se espalha rapidamente entre os internautas no Brasil (inclusive eu).

O twitter combina características de rede social (site de relacionamentos) com “microblog” — este último combinação das características de blog, ao permitir a postagem de conteúdo pelos membros, com o de SMS, uma vez que as postagens devem ser curtas, não podendo exceder o limite de 140 caracteres cada.

A ideia parece relativamente simples, mas junta diversos conceitos e particularidades em uma combinação que tem se mostrado contagiante. Aos poucos, as pessoas e instituições vão descobrindo novas formas e objetivos de uso deste interessante serviço.

Microblog

A primeira característica essencial do Twitter é ser um microblog. Um usuário basicamente se inscreve no Twitter para:

  • Postar mensagens curtas, de até 140 caracteres cada.
  • Acompanhar as postagens de outros usuários.

O Twitter solicita cada postagem com a seguinte pergunta: “O que está acontecendo?” “O que você está fazendo?” Isto indica que a ideia inicial do Twitter propõe que as pessoas postem “mensagens instantâneas” sobre o que fazem, observam, descobrem ou pensam ao longo do dia. Mas cada um escreve o que bem entender em cada postagem.

Tem gente que realmente usa o Twitter como um diário instantâneo. Outros — indivíduos, empresas e meios de comunicação — preferem postar notícias e informações. Empresas podem usar o Twitter como canal de divulgação de ofertas, dicas e promoções, bem como relacionamento com seus clientes e fornecedores.

E, através dos simplórios recursos do Twitter em referenciar um usuário (através do símbolo arroba: @usuario) em uma postagem, e o de permitir enviar uma mensagem direta e privada a só um usuário, muita gente também utiliza o Twitter para trocar recados entre si, uma espécie de bate-papo não necessariamente em tempo real (já que o usuário referenciado ou destino não precisa estar utilizando o Twitter no momento, e pode ver a mensagem depois quando se conectar).

Rede social

A formação da rede social no Twitter difere um pouco de serviços existentes como Orkut, Facebook, MySpace, LinkedIn e outros. Nestes, tipicamente cada usuário se vincula a outros mutuamente, criando seu grupo de “contatos” ou “amigos”. A característica essencial da criação do vínculo é que ele é mútuo entre cada dois usuários, isto é, um usuário solicita adicionar o vínculo a outro usuário, este outro usuário confirma/aprova, e a partir daí ambos ficam vinculados entre si.

Já no Twitter, cada vínculo é unidirecional/unilateral. Um usuário decide “seguir” outro qualquer, e a partir daí passa a acompanhar as postagens deste. Mas não há reciprocidade automática, isto é, um usuário pode seguir outro, independente desse último seguir o primeiro ou não. Cada usuário tem assim dois grupos de vínculos: o conjunto de usuários que ele escolheu seguir (following), e a lista dos usuários que o seguem (followers).

Entretanto, existem dois mecanismos reguladores. Primeiro, um usuário pode, uma vez identificado que tem um seguidor indesejado (por padrão, o Twitter notifica via e-mail um usuário quando alguém escolheu segui-lo), bloqueá-lo, desfazendo o vínculo criado pelo seguidor e impedindo que este estabeleça novamente o vínculo.

Segundo, o usuário pode ativar a opção de proteger suas postagens, de forma que: (a) para um usuário segui-lo, é preciso sua confirmação de aceite, embora o vínculo continue unidirecional; (b) suas postagens só podem ser lidas pelos seguidores aprovados.

O Twitter oferece também um novo recurso de listas. Cada usuário pode criar listas — públicas ou privadas — para organizar usuários que segue, de acordo com qualquer tema, rótulo ou característica de agrupamento que bem entender. Pode por exemplo criar uma lista de familiares, outra de colegas de trabalho, mais uma de colegas de escola, de especialistas em determinado assunto, de veículos de comunicação,… etc. Cada lista é um agrupamento ou (sub)conjunto arbitrário de usuários que você faz, permitindo exibir as postagens apenas daquele grupo de usuários quando selecionada. Um mesmo usuário pode constar em múltiplas listas.

Riscos de Segurança e Privacidade

Um risco de segurança enorme é que muitas pessoas embolam e confundem todos esses conceitos e recursos. Com isso, muitas vezes acabam postando conversas com assuntos privados em postagens públicas, e acabam inadvertidamente escancarando sua privacidade para o mundo!

Esse é um risco comum das ideias e serviços novos, pouco explorados e incipientes que vem surgindo na era da Web 2.0, da internet como canal interativo e social. Isso se agrava pelo fato da internet atingir bilhões de usuários de forma global, muitos deles despreparados tanto para lidar com a internet de forma proficiente, consciente e segura, quanto para compreender e utilizar adequadamente os serviços neste meio.

Outro risco também comum das redes sociais é que cada vez mais se tem acesso a conteúdo e informação de forma crua e direta, e de origens desconhecidas ou não confiáveis. É difícil se ter confiabilidade em “quem” realmente é cada usuário e no “o que” se recebe aos montes em milhões de mensagens. Boatos, mentiras e até golpes maliciosos podem ser rapidamente proliferados de forma difusa e semi-anônima.

Para combater um pouco o problema da confiabilidade da identidade dos usuários, o Twitter já realiza nos EUA um serviço de “certificação” de alguns usuários mais notórios, em geral celebridades e pessoas públicas — como o presidente americano Barak Obama e o jornalista brasileiro William Bonner — adicionando um selo de “conta verificada” a estes perfis.

Ferramentas

Por causa da simplicidade quase simplória dos recursos do Twitter, muitos outros serviços vão surgindo para complementar suas funcionalidades. Uma API disponibilizada pelo Twitter permite que esses serviços complementares se integrem e interajam com o Twitter, podendo autenticar um usuário e interagir com sua conta.

Um dos serviços mais comuns é o de encurtamento de URL. Como muitos URLs (endereços ou links) de internet são muito grandes e o Twitter tem o limite de 140 caracteres no texto total da mensagem, muitas vezes não há caracteres suficientes para se incluir um link extenso em uma mensagem, menos ainda se for um link acompanhado de uma frase ou descrição.

Por isso, a prática comum no Twitter é se utilizar um serviço chamado encurtador de URL (URL shortening). Existem diversos serviços gratuitos destes. Uma vez fornecido um endereço de internet, ele gera uma URL no site do encurtador com uma pequena sequência arbitrária de caracteres (em geral 4 a 6 letras e números), que funciona como um atalho que redireciona automaticamente para o endereço original.

O próprio Twitter e outras aplicações que permitem postar mensagens no Twitter podem converter links escritos em uma mensagem para um endereço “encurtado”, utilizando um serviço de URL shortening. Eis alguns serviços encurtadores de URL:

  • TinyURL.com: pode gerar uma sequência arbitrária de caracteres para o atalho, mas também permite que você escolha/defina a sua.
  • migre.me: seu site tem interface também em português.
  • bit.ly
  • LC4.in: menos conhecido, também tem interface em português.
  • Ow.ly
  • goo.gl: Google URL Shortener, atualmente usado nos produtos Google (não disponível para uso aberto).
  • dmoz Open Directory: listagem de serviços de redirecionamento e URL shortening.

Eis uma pequena lista de amostra de outros serviços complementares ao Twitter:

  • Twitpic e TweetPhoto: permitem que se poste e mantenha imagens e fotos, que podem facilmente ser referenciadas em mensagens do Twitter.
  • Twibbon: permite que se crie uma campanha para se promover e divulgar uma causa ou tema qualquer no Twitter. Para isso, cria-se uma “selo”, uma imagem com transparência que pode ser sobreposta — como um rótulo ou bottom (ribbon) — à imagem de cada usuário que adere a tal causa/campanha.
  • TweetGrid: permite criar um painel de termos de pesquisa para ser atualizado em tempo real com postagens referentes do Twitter.
  • Twinester: permite criar grupos ou comunidades baseados no Twitter.
  • Hashtags.org: busca postagens no Twitter por hashtag, com direito a gráfico de evolução de trends no tempo.

E existe uma infinidade de outros serviços e aplicações. Veja por exemplo os seguintes links:

Para saber mais

Algumas referências adicionais de informação sobre Twitter:

À zero hora deste domingo dia 18 de outubro começa o Horário de Verão 2009/2010 no Brasil.

O Horário de Verão (em inglês Daylight Saving Time – DST) é um recurso utilizado por dezenas de países, consistindo em alterar os relógios (em geral adiantando em 1 hora) durante o período do verão, para aproveitar por mais tempo a luz natural do sol e assim economizar energia.

Histórico

O histórico do horário de verão remete a origem da ideia a Benjamin Franklin, que em 1784 na França publicou uma carta anônima em um jornal sugerindo aos Parisienses que acordassem mais cedo para aproveitar a luz do sol e economizar energia de velas.

O moderno horário de verão com período definido é atribuído por várias fontes a William Willett, construtor Britânico e membro da Sociedade Astronômica Real da Inglaterra, que em 1907 deu início a uma campanha para adoção do horário de verão naquele pais. Mas a Wikipédia em inglês contesta essa informação e aponta o entomologista e astrônomo George Vernon Hudson, da Nova Zelândia, como o primeiro a propor o horário de verão moderno em um artigo de 1895 apresentado à Wellington Philosophical Society.

O horário de verão foi efetivamente introduzido pela primeira vez em 30 de abril 1916 na Alemanha, na Áustria-Hungria e, no mesmo ano, na Irlanda, como uma medida de economia após a Primeira Guerra Mundial, seguido depois por diversos países.

No Brasil

No Brasil, o horário de verão foi adotado pela primeira vez em 1931 em todo o território nacional, visando também à economia de energia elétrica, instituído pelo Decreto nº 20.466 de 01/10/1931. Após dois anos de experiência, a medida gerou oposição e foi revogada em 1933.

Em períodos subsequentes a hora ou horário de verão foi instituída e revogada — de 1949 a 1953 após a Segunda Guerra, de 1963 a 1968, motivado pelo efeito negativo das estiagens e a economia de energia hidroelétrica e suspenso durante a Ditadura Militar.

A hora de verão no Brasil voltou na presidência de José Sarney em 1985, com períodos definidos por Decreto a cada ano, inicialmente em todo o território nacional, mas depois passou a valer apenas em alguns estados (quais variando em sucessivos decretos).

Diferente de uma regra fixa de vigência do horário de verão modernamente adotada por diversos países, já que o ciclo solar é igualmente fixo e bem definido, no Brasil cada decreto desde 1985 arbitrava as datas anuais de início e fim, e pior, em geral com pouquíssima antecedência.

Essa variação constante e de “última hora” de datas e estados no Brasil causou muitos transtornos. A situação piora de forma crescente na era dos milhões e bilhões equipamentos eletrônicos e computadores com relógio interno e controle de horário, e ainda mais agravado no mundo da internet e das redes globais interconectando tudo! Veja por exemplo o artigo Horário de verão e a segurança dos computadores.

Finalmente o Decreto nº 6.558, DE 8 de setembro de 2008, no governo Lula, instituiu uma regra permanente para a Hora de Verão em parte do território nacional, mas como infelizmente muita coisa no Brasil — ainda mais na política — sempre tem algo para complicar, o decreto tem dois problemas:

  • Enquanto nos Estados Unidos as (raras) alterações de regra no horário de verão foram sempre publicadas com mais de um ano de antecedência, o Decreto de 2008 mais uma vez “sagrou” a falta de planejamento brasileira, sendo publicado pouco mais de um mês antes do início da vigência do horário de verão naquele ano.
  • No artigo primeiro que cria a regra fixa de datas de início e fim, o Decreto tem um parágrafo que cria uma exceção incrível: “No ano em que houver coincidência entre o domingo previsto para o término da hora de verão e o domingo de carnaval, o encerramento da hora de verão dar-se-á no domingo seguinte.” Depois tem gente que reclama quando dizem que no Brasil tudo acaba em samba (ou em pizza)…

Para saber mais:

Computadores com Windows: Um dos grandes impactos do horário de verão do Brasil é no ajuste dos milhões de computadores pessoais com o sistema pessoal Windows. Veja as seguintes informações e orientações a respeito:

Depois do incidente de segurança envolvendo o portal da operadora Vivo que abordei ontem, um artigo de hoje da IT Web tem tudo a ver: 5 lições de segurança, por Greg Shipley, Tyler Allison e Tom Wabiszczewicz, da empresa Neohapsis especializada em GRC (GRC em inglês), para InformationWeek EUA, 10/09/2009.

No artigo, os especialistas quebram o silêncio típico do mundo corporativo sobre segurança e trazem uma síntese de sua experiência em observação direta das brechas de segurança do mundo real onde realizaram investigações forenses, para ajudar as empresas a entender como essas brechas acontecem e o que se pode fazer sobre elas.

Eles ressaltam: “Após centenas de casos, podemos afirmar, sem sombra de dúvidas, que os ataques estão mais sofisticados do que nunca. Com agilidade, eles exploram controles de segurança falhos e práticas operacionais negligentes e, munidos com ferramentas comuns para gerenciamento de rede, adaptam malwares. Táticas e tecnologias de segurança da informação também progrediram, mas não no mesmo ritmo.”

O mais admirável é que os recursos para mitigar as brechas de segurança são métodos razoáveis e bem conhecidos. O que é preciso é um esforço para que esses métodos sejam implementados e continuamente praticados de forma mais ampla e efetiva pelas corporações.

Problema – vulnerabilidades e ameaças nas aplicações

O Website de uma empresa geralmente serve como porta de entrada para os ataques. Aplicativos web são a porta preferida dos invasores.

Isso porque equipes de TI em geral investem apenas em segurança do perímetro e do tráfego da rede, incluindo proteções clássicas como firewall, antivírus, antispam, IDS/IPS, SSH, HTTPS e VPN. E mesmo nestes casos, não fazem um monitoramento proativo e contínuo, nem tem um plano de resposta a incidentes consistente e efetivo. Por outro lado, mantém sistemas desatualizados e ignoram aplicativos falhos que podem, facilmente, ser explorados.

Códigos de software com pouca ou nenhuma preocupação com segurança desde sua concepção — o que passa inclusive pela escolha de tecnologias que já englobem conceitos e mecanismos nativos de segurança, robustez e proteção — escancaram brechas de segurança por todos os pontos das aplicações.

Nas aplicações corporativas internas, as maiores preocupações costumam ser com vazamento de informações e com uso e permissões indevidos — até mesmo maliciosos, no caso de colaboradores insatisfeitos ou despreparados, negligentes, imprudentes.

Mas quando as aplicações são externas, especialmente em portais, sítios e serviços web abertos à Internet, o universo de ameaças subitamente se expande para o mundo todo, para qualquer pessoa no planeta com acesso internet, algum tempo disponível e intenções que podem ir da curiosidade inconsequente ao crime.

Aplicações sem segurança tipicamente expõem vulnerabilidades amplamente conhecidas — do conhecimento de qualquer hacker de plantão — e graves como:

  • Autenticação vulnerável, com usuários e senhas fracas, pouco ou nenhum controle a tentativas de acesso “força bruta” etc.
  • Baixa granularidade de permissões, de forma que um vez acessado com usuário legítimo muitas vezes se permite acessar alguns serviços ou situações que não seriam efetivamente necessárias ou mesmo devidos àquele usuário.
  • Ausência de validação, consistência e crítica de dados no lado servidor, quando um usuário está com JavaScript desativado ou defeituoso no lado cliente.
  • Ausência de validação de condições limite nos tipos, formatos, valores e tamanhos recebidos em dados ou parâmetros fornecidos pelo usuário, permitindo ataques como Estouro de buffer e de pilha, Corrupção de memória, Negação de serviço (DoS).
  • Ausência ou insuficiência de tratamento robusto, inteligente e proativo de exceções na aplicação. Muitas vezes a maior parte das inúmeras situações de erro ou exceção possíveis são esquecidas, descartadas ou subestimadas pelos programadores.
  • Ausência de mecanismos de rastreabilidade e auditoria, como gravação de registros de log/históricos de acessos e ações do usuário e do próprio sistema.
  • Mecanismos de proteção (integridade e privacidade) de dados com criptografia ausentes, simplórios/precários, ou mal implementados.
  • Não evitar Injeção de código, Injeção de SQL, Injeção de HTML e Cross site scripting (XSS) nas entradas de dados e parâmetros fornecidos pelo cliente/usuário.
  • Utilizar ou permitir a Inclusão de arquivos locais (ou remotos).

A lista de possibilidades comuns poderia se estender. Mas por aí já se percebe que boa parte das aplicações na web são “queijos suíços” em potencial, em se tratando de abundância de furos de segurança.

Solução – informação e ferramentas desde o início

Ao abordarem que se deve levar segurança de TI a sério, os peritos apontam o caminho: “A melhor defesa de uma empresa é a integração da segurança no ciclo de vida de desenvolvimento de aplicativos. A criação de códigos com poucas falhas de segurança oferece um retorno maior do que se tentar reparar aplicativos em uso.”

A organização internacional Web Application Security Consortium (WASC) reúne um grupo de especialistas e praticantes de segurança e representantes de comunidades de código aberto, voltada para intercâmbio de idéias e organização e promoção de melhores práticas, em segurança de aplicação na World Wide Web. WASC consistentemente lança informação técnica, artigos, guidelines de segurança e outras documentações úteis sobre segurança de aplicações web.

Entre o material da WASC, destaco uma compilação com descrição de mais de 50 ameaças e vulnerabilidades em aplicações web, o Glossário de Segurança Web e o padrão de referência para avaliação de vulnerabilidades de aplicações web, Web Application Security Scanner Evaluation Criteria (WASSEC). O material é aberto, público e gratuito (em inglês).

Para a varredura e análise de vulnerabilidades em aplicações existem ferramentas para auxiliar e prover alguma automação e agilidade nos trabalhos. Há desde softwares livres como o Wapiti – Web application vulnerability scanner / security auditor até produtos comerciais como IBM Rational AppScan e HP WebInspect / Application Security (veja também Web Application Scanners Comparison).

Também o padrão internacional ISO/IEC 15408: Information technology — Security techniques — Evaluation criteria for IT security é um conjunto de normas disponíveis gratuitamente.

O padrão ISO 15408 é baseado no Common Criteria for Information Technology Security Evaluation / Critérios Comuns para Avaliação de Segurança de Tecnologia da Informação (abreviado como Common Criteria ou CC). Este, por sua vez, é originado dos padrões para critérios de avaliação de segurança do Departamento de Defesa dos Estados Unidos (TSEC), Canadá (CTCSEC) e Europa (ITSEC, França, Alemanha, Países Baixos e Reino Unido).

CC é um framework padronizado de critérios para especificação, implementação e avaliação de requisitos e propriedades de segurança em sistemas de informação e produtos de TI. O rigor da avaliação é medido em sete níveis, Evaluation Assurance Level, EAL1 a EAL7. Cada EAL consiste em um pacote ou conjunto de requisitos de segurança, denominados Security Assurance Requirements (SARs).

Até eu dou modestas contribuições de informação sobre boas práticas que podem garantir um código de aplicação mais segura, nos artigos: Eficiência e segurança com SQL parametrizado e Senhas armazenadas com segurança.

Não faltam informação e recursos livremente disponíveis, em abundância e muitas delas de alta qualidade e fácil utilização, para que as empresas e instituições comecem a praticar e adotar a construção de aplicações seguras.

Essa preocupação é especialmente crítica na web, que cada vez mais se apresenta como um veículo de serviços e aplicações em larga escala e abrangência.

Empresas do meu Brasil (e do mundo!), cuidem seriamente da segurança de suas aplicações e serviços, especialmente na internet!

Para saber mais:

  • Referências sobre Segurança Digital e Privacidade, incluindo Informação sobre segurança, Entidades e centros, Criptografia, Infraestrutura de chaves públicas (ICP), Malware, Segurança de e-mail, Firewall, Prevenção e detecção de intrusos, Padrões, Protocolos e aplicações, Privacidade, Bibliografia e outros tópicos relacionados.

O mundo do software vem ficando cada vez mais amplo, abrangente e complexo. Se você olhar o universo abrangido por tecnologias como Java, verá que é difícil “enxergar até o fim de seu horizonte”.

Com isso, a curva de aprendizagem de tecnologias para desenvolvimento de software cresce muito. Em contrapartida vão surgindo iniciativas de melhores práticas e modelos prontos para simplificar situações comuns.

Duas forças nesse sentido da simplificação ou organização de situações comuns em software são os Patterns e os Frameworks.

Software Patterns são padrões conceituais que documentam a caracterização e a solução para problemas comuns (genéricos) de construção de software. Visam definir um idioma comum para estas situações (em vez de descrever a situação/problema/solução, você cita o nome dado a ela) e evitar que se “reinvente a roda”.

Existem patterns voltados para modelagem/desenho — design patterns, arquitetura de software — architectural patterns, integração — integration patterns. Embora não sejam específicos do paradigma orientado a objetos, os design patterns surgiram na área de software contemporâneos a esse paradigma e por isso muitas vezes são definidos usando conceitos de OO e mais facilmente aplicáveis em linguagens com suporte a OO.

Frameworks são arcabouços de construção de software. Ainda não encontrei grandes definições para frameworks, mas eu entendo framework como um modelo de trabalho predefinido para implementação de determinado aspecto de software. Um framework costuma englobar bibliotecas, componentes, APIs, estruturas, mecanismos e uma proposição (ou às vezes imposição) de forma de trabalho.

Enquanto patterns são modelos conceituais, frameworks são soluções práticas e específicas para determinada situação e tecnologia/linguagem. Freqüentemente um framework se baseia ou implementa um ou mais patterns aplicáveis àquela situação. Frameworks visam facilitar e acelerar o desenvolvimento de software.

[Texto originalmente postado na lista de discussão MGJUG-users, em 26/jul/2008.]

Livros sobre software patterns:

Para saber mais:

[Atualizado em 31 de outubro de 2008.]

No contexto de arquitetura de software, ambos os termos técnicos Tier e Layer em inglês podem ser traduzidos para português como Camada, em geral relativo a sistemas multi-camadas. Mas cuidado para não haver equívoco ou ambiguidade, pois os dois termos não são meros sinônimos, têm significados distintos.

  • Layer se refere a Camada Lógica de organização dos componentes do sistema ou aplicação.
  • Tier se refere a Camada Física ou Estrutural dos componentes com foco na infra-estrutura (hardware, sistema operacional e serviços/servidores) e suas responsabilidades no sistema.

Segundo Peter Eeles, no artigo Layering Strategies, o termo layer (camada) se refere à aplicação do padrão arquitetural genericamente conhecido como Layers Pattern, que estrutura em camadas um sistema que requer decomposição, por algum motivo. Por exemplo, um sistema:

  • que é muito complexo para ser compreendido em seu todo de uma só vez;
  • que é difícil de ser mantido;
  • que é construído por equipes distintas, possivelmente com habilidades e conhecimentos diferentes;
  • cuja maioria dos elementos reusáveis são difíceis de se identificar.

Eis as principais camadas lógicas (layers), segundo Martin Fowler in: Patterns of Enterprise Application Architecture (Addison-Wesley, 2003, ISBN-13 978-032112742-6, 560 p.), Capítulo 1 – Layering, The Three Principal Layers:

Camada Lógica Responsabilidades
Apresentação Interação com usuário (exibição de informações, validação de entrada), provisionamento de serviços.
Domínio / Negócio Lógica específica particular ao sistema ou aplicação.
Acesso a Dados Comunicação com bancos de dados, EIS, sistemas de mensagens, monitores de transação.

Uma boa prática que se prega no projeto da arquitetura de software é que cada camada lógica só deve interagir com a(s) camada(s) imediatamente adjacente(s), visando a maior separação de atribuições (coesão) e o baixo acoplamento.

As camadas físicas (tiers) caracterizam a infra-estrutura sobre a qual o sistema ou aplicação executa. As camadas físicas podem variar de acordo com a plataforma e o ambiente tecnológicos específicos que se utiliza. Um modelo canônico de camadas físicas em ambiente web pode ser resumido como a seguir.

Camada Física Caracterização
Cliente Navegador (browser) web, páginas DHTML (HTML, JavaScript, CSS, DOM), componentes/plug-ins adicionais RIA (Flash, Applet Java, JavaFX, ActiveX, XUL etc.), outros objetos MIME (dados, documentos e arquivos em outros formatos).
Rede e Serviço Web Servidor web, protocolo HTTP sobre TCP/IP, processamento de requisição-resposta do cliente web, encaminhamento e integração com servidor de aplicações.
Serviços de Componentes e Aplicação Servidores de aplicação (plataformas mais comuns: Java EE e Microsoft .NET), servidor de objetos distribuídos (EJB, COM+, CORBA etc.).
Serviços de Dados e Integração Servidores de bancos de dados (SGBD), sistemas de mensageria, mecanismos de integração/interação com outros sistemas (EIS).

 

Tipicamente, as camadas lógicas são mapeadas em uma ou mais fatias da camada física da arquitetura. Para exemplificar um mapeamento típico de camadas lógicas em camadas físicas no ambiente web, a apresentação em geral abrange o cliente web, o servidor web e os mecanismos MVC do servidor de aplicação; o domínio ou negócio se concentra no servidor de aplicação; e o acesso a dados se concentra nos servidores de bancos de dados e outros eventuais componentes na camada física de dados e integração.

Contudo, para Eeles, o termo layer é um conceito geral de divisão de um sistema em camadas, que pode ter diversas estratégias de organização e aplicação. Este autor define tier como um caso específico de layer associado a estratégia particular de responsibility-based layering (camadas baseadas em responsabilidades).

Eeles ainda adverte para o fato que mesmo tiers não implicam a efetiva organização ou distribuição física. Um sistema 3-tier pode estar fisicamente em um único hardware, ou ter suas camadas distribuídas entre dois ou mais computadores (grid, cluster, farm etc.).

Para saber mais:

Layers Pattern:

Depois que atualizei para o novo Ubuntu 8.04 LTS Hardy Heron (utilizando a opção automática pelo Gerenciador de Atualizações), quase tudo funcionou perfeitamente.

Observei até agora apenas um problema de configuração: os botões laterais “Avançar” e “Voltar” — que uso freqüentemente para navegação no histórico de páginas web (Firefox) — do meu mouse Logitech MX700 pararam de funcionar. Eles funcionavam até o Ubuntu 7.10 com as configurações que apresentei em meu artigo Mouse multi-botões no Linux.

Pesquisando na Internet, achei o artigo Logitech MX1000 Mouse on Ubuntu 8.04 Linux (Hardy Heron), 2008-04-27, cujas sugestões de configuração funcionaram para mim.

Eis o que fiz.

Primeiro, assegure-se de ter instalado o pacote xserver-xorg-input-evdev referente ao driver evdev. Se necessário, instale o pacote. Você pode fazer isso graficamente pelo Gerenciador de Pacotes Synaptic (menu Sistema > Administração) ou por linha de comando:

sudo apt-get install xserver-xorg-input-evdev

Depois, localize o nome exato do dispositivo do seu mouse.

cat /proc/bus/input/devices

No meu caso, para o Logitech MX700 encontrei N: Name=”PS2++ Logitech MX Mouse”.

Depois, edite o arquivo de configuração do X11. Antes disso, faça uma cópia de segurança.

sudo bash
cd /etc/X11/
cp -p xorg.conf xorg.conf.backup
gedit xorg.conf

Comente a configuração de InputDevice anteriormente existente para o mouse e adicione uma nova similar a esta, usando o driver evdev (minha configuração anterior usava o driver mouse):

Section "InputDevice"
	Identifier	"Logitech MX700"
	Driver		"evdev"
	Option		"Name"		"PS2++ Logitech MX Mouse"
	Option		"HWHEELRelativeAxisButtons"	"7 6"
EndSection

O Identifier pode ser livremente escolhido por você. Se o seu mouse é outro modelo, substitua pelo nome mais apropriado. Já a opção “Name” deve receber exatamente o mesmo nome encontrado no arquivo de devices.

Ainda no arquivo xorg.conf, localize a seção ServerLayout, verifique e atualize a linha InputDevice relativa ao mouse. O nome do InputDevice deve ser o exato Identifier do mouse que você definiu.

Section "ServerLayout"
	...
	Inputdevice	"Logitech MX700"
	...
EndSection

Salve o arquivo xorg.conf.

Pronto. Reinicie o X11, saindo (logout) e entrando novamente, para ativar as novas configurações.

Para testar o funcionamento de todos os botões e controles do mouse no driver evdev, você pode usar a aplicação gráfica xev. Execute a partir de uma janela de comando, pois as informações de eventos gerados na janela gráfica de teste aparecem em texto no console.

Um aviso final: Vi em alguns fóruns que a opção Option "CorePointer" não deve ser usada na seção InputDevice com o evdev. No meu caso, realmente testei adicionar esta opção e o meu mouse ficava completamente inoperante com ela.

Eis uma ampla expansão do artigo Relatórios, gráficos e boletos em Java (2007-11-18), incluindo atualizações de Notas tech da semana (2007-12-01), anúncios de JFreeChart 1.0.9 (2008-01-07) e OpenReports 3.0 (2008-01-06) e várias outras referências.

As ferramentas livres para criação de relatórios estão, aos poucos, ampliando sua abrangência e recursos para a área de inteligência de negócios (business intelligence – BI), integrando recursos como relatórios dinâmicos, ferramentas OLAP (processamento analítico on-line) e ETL (extração, transformação e carga de dados), a partir de armazéns de dados (data warehouse – DW) e outras fontes de informação.

Relatórios & BI

  • OpenReports, solução open source para geração de relatórios, visa ser poderosa, flexível e fácil de usar. Provê geração dinâmica parametrizada baseada em navegador, com recursos de agendamento. Suporta vários mecanismos de relatório open source — JasperReports, JFreeReport, JXLS, Eclipse BIRT –, consultas baseadas em SQL direto com QueryReports e ChartReports, e suporte a OLAP via Mondrian e JPivot.
  • JasperForge, por Jaspersoft, projetos de software livre para inteligência de negócios: Jaspersoft BI Suite; biblioteca de geração de relatórios JasperReports + editor de relatórios iReport, com saída em formato PDF e outros; JasperServer / JasperAnalysis; e JasperETL.
  • DynamicJasper é uma biblioteca open source que cria relatórios Jasper Reports dinamicamente via código, sem a necessidade de se criar arquivos .jasper, simplificando a criação de relatórios de baixa/média complexidade.
  • Pentaho Open Source BI Suite, plataforma e coleção de projetos open source para inteligência de negócios. Inclui Relatórios (incorporou o antigo JFreeReports), Análise (Mondrian OLAP Server), Dashboards, Integração de Dados (Kettle ETL), Mineração de Dados (Weka).
  • Eclipse BIRT (Business Intelligence and Reporting Tools), sistema de produção de relatórios para aplicações web em Java, incluindo um editor de relatório baseado no Eclipse e um componente runtime para o servidor.
  • JPivot, biblioteca de custom tags JSP que renderiza uma tabela OLAP e provê para o usuário navegações OLAP típicas como slice-dice, drill-down e roll-up. JPivot usa Mondrian como servidor e também suporta fontes da dados XMLA.
  • DataVision, ferramenta open source de relatórios no estilo de Crystal Reports, com saída em HTML, XML, PDF, Excel, LaTeX2e, DocBook, arquivo texto delimitado por tab ou vírgula.

Para saber mais:

Gráficos

  • JFreeChart, biblioteca para geração gráficos (barras, pizza, linha etc.), pode ser utilizada com JasperReports, OpenReports e outros.
  • Apache Batik, toolkit para Scalable Vector Graphics (SVG) em Java, inclui SVG Parser, Generator e DOM. Parte do Apache XML Graphics Project.

Boletos

Para saber mais:

  • Artigo “Made in Brazil: Criando seus próprios boletos bancários com o JBoleto”, por Fabio Souza, revista Mundo Java nº 26 (ano V), novembro 2007.

Geração de documentos PDF

  • iText, por Bruno Lowagie, biblioteca para geração de PDF, utilizada por JasperReports, mas pode ser utilizada diretamente para manipulação avançada de PDF.
  • Apache FOP (Formatting Objects Processor), formatador de conteúdo XML para PDF via XSL-FO.

Para saber mais:

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

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.

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

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.

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.

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.

Próxima Página »