Atualizando mercado de WCM

Em maio, comentei sobre a Fusões de gigantes também no mercado de ECM, quando ocorreu a compra da Vignette pela Open Text. Aproveitei para fazer um panorama atual sobre o mercado de Gestão de Conteúdo Corporativo (ECM).

Em 5 de agosto último saiu o Quadrante Mágico para Web Content Management (WCM) do Garner, para o mercado de gestão de conteúdo web (um segmento específico do ECM), de autoria dos analistas Mick MacComascaigh, Toby Bell e Mark R. Gilbert, Gartner.

[photopress:ecm_gartner_quarante_wcm_2009.png,full,centered]

Fonte: Gartner, agosto 2009, reproduzido por Oracle (Industry Analyst Reports sobre Oracle ECM/WCM).

A Oracle se posiciona este ano como líder, emparelhada com Autonomy, Open Text e SDL.

Irina Guseva comentou a análise em Parsing Gartner’s 2009 Magic Quadrant for Web Content Management em artigo para CMS Wire, 2009-08-10.

E ainda neste mês de setembro deve sair o novo relatório anual do Gartner com o Quadrante Mágico para ECM 2009. Vamos aguardar que alguma das principais empresas fornecedoras divulgue a análise para o público.

Checklist: Diagnóstico de indisponibilidade no ambiente de serviços web

Em mais de 16 anos trabalhando com o ambiente de aplicações e conteúdo web, boa parte deles atuando ou cooperando na administração, já vivenciei muitos problemas.

Em geral, nada é mais atordoante do que o surgimento (súbito ou intenso) de algum evento ou reclamação de indisponibilidade ou erro em um ou mais serviços ou recursos. Em um ambiente complexo como este, interpretar os sintomas, rastrear até a origem, identificar a(s) causa raiz do problema e obter uma solução é missão ampla e complexa.

Some-se o fato de, cada vez mais, o ambiente web estar sendo cenário de sistemas e serviços de missão crítica e operação ininterrupta 24×7. Ou seja, é uma estressante corrida contra o tempo.

Por isso, elaborei aqui um checklist procurando listar todos os elementos envolvidos neste complexo ecossistema, para orientar e facilitar o diagnóstico de indisponibilidades no ambiente de serviços web.

  1. Problemas e sintomas
    1. O quê: Caracterização dos problemas: quais serviços, em que situação
    2. Quando: Data ou período de início de problemas observados ou reportados
    3. Como: Cada problema identificado pode ser reproduzido sistematicamente, ocorreu uma única vez, ou é intermitente?
  2. Usuário
    1. Indisponibilidade ou problemas de configuração no acesso do usuário
    2. Desktop usuário infectado por malware
    3. Desktop usuário com problemas no navegador, no sistema operacional, instalação ou configuração de software
    4. Desktop usuário com gargalos ou problemas de processamento e desempenho de hardware (CPU, memória RAM, GPU, disco/armazenamento, rede), ou de configuração de driver, software ou sistema operacional
    5. Desktop usuário com falhas ou defeitos de hardware
    6. Robôs de busca e varredura com atividade excessiva
    7. Invasores, ataques e usos indevidos ou mal-intencionados
  3. Aplicação
    1. Defeitos (bugs, inadequações ou ineficiência) no código da aplicação, inclusive SQL (consultas, stored procedures) submetido ao banco de dados
    2. Serviços ou aplicações web implantados ou atualizados no período
    3. Configurações e testes realizados em produção ou desenvolvimento
    4. Mudanças no contexto/cenário operacional
  4. Infraestrutura de Software
    1. Gargalos de configuração ou picos de ocupação (slots, threads, ouvintes)
      1. Proxy ou web cache
      2. Servidor web
      3. Servidor de aplicação (Java EE, .NET, PHP etc.), CMS/ECM, SOA, ESB, BPM e outros servidores de middleware
      4. Servidor de banco de dados
      5. Outros serviços, recursos e mecanismos envolvidos (autenticação, transação, armazenamento etc.)
    2. Incompatibilidade e falhas – atualizações e patches no período
      1. Serviços proxy, web, aplicação, banco de dados, outros
      2. Sistema operacional
      3. Java VM, ferramentas, componentes e bibliotecas
  5. Infraestrutura de Hardware e Rede
    1. Hardware dos servidores – Gargalos ou falhas
      1. Uptime – tempo “no ar” desde o último desligamento
      2. E/S (I/O): discos, partições e storage em geral
      3. CPU: carga, multitarefa, deadlocks, temperatura
      4. Memória e cache
    2. Equipamentos e configurações de rede e conectividade
      1. Gargalos e falhas de hardware nos equipamentos de rede e conectividade
      2. Falhas (mau contato, encaixe, desgaste, ruptura etc.), interferência ou insuficiência em cabeamento, conectores e sinal sem-fio
      3. Ativação e configuração de interfaces, rotas e domínios de rede
      4. Mudanças e atualizações de configuração de switches, roteadores, hubs etc.
      5. Mudanças e atualizações de firewall, IDS e outros appliances de rede, conectividade e segurança
    3. Transmissão de dados e telecomunicações
      1. Falhas ou indisponibilidade nos canais (links) de comunicação de dados
      2. Gargalos no tráfego, volume ou QoS de dados
    4. Gerenciamento de energia e ambiente
      1. Falhas ou instabilidade no fornecimento ou rede de energia
      2. Falhas em no-breaks, estabilizadores ou geradores
      3. Falhas ou insuficiência na refrigeração
      4. Falhas ou incidentes na estrutura física do ambiente
      5. Invasores, ataques e ação ou mal-intencionada na segurança física do ambiente
  6. Provedores de serviços e recursos
    1. Mudanças ou alterações diversas ocorridas em provedores externos

Os itens de diagnóstico aqui listados são, em geral, apenas os elementos a serem verificados, sem entrar em detalhe de como fazer o diagnóstico, pois isso pode variar muito de um ambiente para outro.

Entre os recursos de diagnóstico, destaco dois, presentes na maioria dos sistemas ou componentes de tecnologia:

  • Arquivos de log/registro/histórico de mensagens/avisos/alertas/erros
  • Console, ambiente ou ferramenta de administração, monitoramento e controle

Como a lista é grande, priorize a análise e o diagnóstico dos elementos para os quais haja indício provável — em especial, evento, registro ou alta probabilidade de incidente, falha, ou alteração recente –, deixando os menos suspeitos para o final. Como costumo dizer: “Não procure chifre em cabeça de cavalo.”

Referências relacionadas:

Redirect versus Forward

Atualizei meu artigo de coletânea de Informações úteis sobre a cabeçalhos HTTP e tipos MIME, no tópico sobre redirecionamento.

Acrescentei uma seção citando a diferença entre o Forward (encaminhamento) de Java e o mecanismo de Redirect (redirecionamento) HTTP. Além disso, fiz duas figuras que, creio, ilustram bem Redirect e Forward e evidenciam as diferenças entre os dois mecanismos.

Nas referências do tópico, há o artigo em português de Rafael Ponte e o tópico em Java Practices, com mais informações a respeito do tema.

Extensões para Firefox atualizado

Meu artigo Extensões para o navegador Firefox foi revisado hoje, com atualizações sobre a compatibilidade entre algumas extensões e as versões de Firefox e a inclusão do VERO, Verificador Ortográfico 2.0 para Português do BrOffice.org, que incorpora inclusive o Acordo Ortográfico da Língua Portuguesa de 1990, em vigor no Brasil desde 1º de janeiro de 2009. O VERO 2.0 está disponível para a família Mozilla, em extensões Português (Brasil) e Português (Portugal).

Na revisão anterior do artigo, havia sido incluída a extensão HTML Validator, muito útil para desenvolvedores web.

Tutoriais de HTML e CSS

Patrick Griffiths, especialista em HTML e CSS desde 1999, é autor dos ótimos tutoriais de HTML e CSS que mantém no site HTML Dog. O trabalho de Griffiths com o site também resultou no livro HTML Dog: The Best Practice Guide to XHTML and CSS, publicado pela New Riders (nov/2006, ISBN: 0321311396).

Ao longo de 2008, o jovem Elomar França fez um igualmente ótimo e útil trabalho traduzindo para o português os tutoriais de HTML e CSS do HTML Dog, trabalho que publicou em artigos de seu blog Codando. Eu já havia citado o trabalho de Elomar em março deste ano.

Patrick e Elomar merecem sinceros agradecimentos por suas contribuições à comunidade de desenvolvedores web. Segue abaixo a relação dos tutoriais, com referências para as traduções de Elomar no blog Codando e os originais em inglês de Patrick no site HTML Dog.

HTML

CSS

Boas blogadas Java e afins

EJB 3: Dead Or Alive? (em inglês), artigo por Adam Bien, 2008-08-22, em Javalloby DZone. Veja também Absolute Beginner EJB 3 / JPA Series – the Essential Bootstraps And Background Information, no Weblog de Adam Bien.

Why you should consider Tapestry 5 (em inglês), artigo por Joshua Java, 2008-08-21. Veja também a discussão do artigo em TheServerSide.COM. A versão 5.0.14 do framework open source de apresentação web Tapestry foi recentemente lançada e o Tapestry 5 está quase atingindo o nível de release estável (GA). A nova geração do Tapestry, criado e mantido pelo contundente Howard Lewis, vem se mostrando cada vez mais sólida e madura, buscando superar algum criticismo contra as mudanças profundas e quebras de compatibilidade retroativa introduzidas na evolução pelas versões 3, 4 e 5 do Tapestry.

JavaFX is Dead, Long Live JavaFX (em inglês), por Per Olesen, 2008-08-22, impressões sobre o Java FX Preview SDK, disponível para download gratuito.

CodeGear promove encontros on-line para desenvolvedores Java (em português), notícia por Paula Zaidan, 2008-08-20, em JavaFree. Durante dois dias (21 e 28 de agosto) de sessões on-line, gratuitas e em português, especialistas da companhia apresentam as novas funcionalidades do JBuilder 2008, no JBuilder Day América Latina. A divisão CodeGear pertencia à Borland e foi recentemente comprada pela Embarcadero.

Four harmful Java idioms, and how to fix them (em inglês) – Rewrite convention and optimize your code for maintainability. Artigo por John O’Hanley, 2008-07-29, em JavaWorld.com.

Spring Recipes: A Problem-Solution Approach, crítica de livro escrita por Meera Subbarao, 2008-08-21, em Javalobby DZone.

OpenXava 3.0.3: JPA Application Engine (em inglês), notícia por Javier Paniza, 2008-08-19. Veja mais sobre o OpenXava no site do projeto.

Jt – Java Pattern Oriented Framework (Jt 2.7), TheServerSide.COM. Veja também Jt Framework project em java.net.

Presentation: Future Directions for Agile, por David Anderson, 1h 32min;
Presentation: 10 Ways to Screw Up with Scrum and XP, por Henrik Kniberg, 1h 28min; ambas em inglês, em InfoQ, filmagem de apresentações realizadas durante o evento Agile Conference 2008.

7 Principles Of Clean And Optimized CSS Code (em inglês), artigo por Tony White, 2008-08-18, em Smashing Magazine.

13 hand-picked Vertical and horizontal CSS Menus (em inglês), por Developer Fox, 2008-08-20. Veja também Usando CSS para criar uma barra de abas, por Márcio d’Ávila, 2004-01-07, e referências em Componentes e Bibliotecas JavaScript e AJAX – Menu e Treeview HTML Dinâmico em JavaScript.

Pré-estréias: Eclipse Ganymede e Firefox 3

Dois grandes projetos de software livre estão próximo do lançamento de nova versão em fim de junho: Eclipse IDE e navegador Firefox. Ambos entraram agora em fase final de desenvolvimento, passando de Beta a Release Candidate (candidato a lançamento final).

O Firefox 3 (codinome Gran Paradiso) lançou seu Release Candidate 1 em 16 de maio. É baseado no mecanismo de renderização web Gecko 1.9, em desenvolvimento nos últimos 33 meses. Com mais de 14.000 atualizações desde a versão anterior, o Gecko 1.9 inclui uma profunda revisão de sua arquitetura para prover melhores desempenho, estabilidade, precisão e simplicidade.

Testes preliminares nas versões beta do Firefox 3 vêm mostrando que ele está muito mais rápido, principalmente na execução de JavaScript. Também está mais estável e eficiente no uso de memória. E a nova versão do mecanismo Gecko utilizado promete resultar em um navegador mais seguro, mais fácil de usar e mais personalizável.

A Fundação Mozilla continua em sua marcha rumo ao JavaScript 2.0 (padrão ECMAScript Edition 4).

Veja novidades do Firefox 3 e as Notas da versão do Firefox 3 RC1 (em inglês). Baixe o Firefox 3 RC1 (Windows, Mac OS X e Linux, em Português do Brasil e dezenas de outros idiomas).

Enquanto o lançamento oficial do Firefox 3 está previsto para o final de junho, já há planos para a atualização Firefox 3.1 até o final de 2008.

Em 13 de maio houve o anúncio do IDE Eclipse 3.4 Ganymede M7. Ganymede (nome, em inglês, de uma das luas de saturno descobertas por Galileu) é o codinome do lançamento coordenado e simultâneo de diversos projetos para a Plataforma Eclipse versão 3.4. Este Milestone 7 pode ser considerado o Release Candidate 0 (RC0), depois do congelamento de API ocorrido no M6.

Com lançamento final previsto para 25 de junho próximo, o Eclipse Ganymede 3.4 prevê a integração de pelo menos 24 projetos da Fundação Eclipse, pouco mais que os 21 do lançamento anterior Eclipse Europa 3.3. Entre os novos projetos englobados, estão Eclipse Packing Project (EPP), Rich Ajax Platform (RAP) e o suporte ao controle de versão Subversion (SVN) com o Subversive.

O projeto de empacotamento do Eclipse, EPP, está elaborando uma nova página de download de pacotes para o Eclipse 3.4, que já pode ser usada para o download do Ganymede M7.

O Eclipse vem perdendo força com a evolução rápida do projeto livre concorrente NetBeans. A versão mais recente deste é o NetBeans IDE 6.1, cada vez mais rico e poderoso em recursos e fácil em instalação e uso. Vejamos o que o Eclipse 3.4 trará em contrapartida.

JavaScript news: biblioteca PHP.js e desempenho no Firefox 3

[Atualizado em 15 de março de 2008.]

O advento do Ajax fez ressurgir nos últimos anos o interesse e a importância do JavaScript e do processamento dinâmico no lado cliente, algo que perdeu foco quando se firmaram o servidores de aplicação (Java EE, MS DotNET, PHP…) atraindo maior poder de processamento e desenvolvimento de tecnologias para o lado servidor (final dos anos 90). Já me referi ao tema em maio de 2007, no post Novo impulso ao JavaScript.

Primeiro, a linguagem JavaScript (padronizada como ECMAScript) passou a ser encarada de forma mais “séria”, não apenas mera linguagem de script para automação e interatividade secundárias, mas como uma linguagem de programação dinâmica e orientada-a-objeto (baseada em protótipos) para ambiente interpretado.

Desde que a fundação Mozilla tomou a dianteira da evolução do JavaScript (mecanismo Gecko 1.5 do Netscape 6 e Mozilla Firefox 1.0, correspondente ao ECMAScript Edição 3) por volta do ano 2000, a linguagem vêm evoluindo rapidamente rumo ao JavaScript 2.0 e ECMAScript 4ª Edição. Houve também grande crescimento no desenvolvimento e evolução de bibliotecas e frameworks JavaScript para ambiente web cliente.

Além da Coletânea de referências JavaScript Ajax que reuni desde junho 2007, destaco agora o trabalho de Kevin van Zonneveld, no projeto que ele denomina “Portando PHP para Javascript”. Desde o início de 2008, ele já escreveu em Javascript 113 funções originárias do PHP, trabalho disponibilizado como software livre na biblioteca PHP.js. [Nota: não confundir com phpjs, interpretador JavaScript em PHP.]


Em outra faceta, eficiência e desempenho na execução de Javascript pelos navegadores voltam a ser aspectos relevantes. Em seu artigo 37 JavaScript benchmarks (2008-02-13 no blog Pathfinder Agile Ajex), Brian Dillard destaca que benchmarks JavaScript ganharam grande visibilidade na era Ajax.

O mecanismo Gecko 1.9 integrante do Firefox 3 — atualmente em beta — vem trazendo grande melhoria no quesito desempenho. O artigo Firefox 3 Performance Gets a Boost, por Ryan Wagner, 2008-02-25, apresenta resultados do SunSpider JavaScript Benchmark em Windows, em que uma compilação diária recente do Firefox 3 (com otimização PGO) em desenvolvimento apresentou um tempo de execução perto de 10 vezes mais rápido que o Internet Explorer 7.0.

O artigo Firefox 3.0 Beta 4 – Benchmarked, 2008-03-11, no ZDNet blog Hardware 2.0, por Adrian Kingsley-Hughes, traz o gráfico a seguir com resultados do teste SunSpider até o Firefox 3 Beta 4; fala também do teste ACID 3, mais nova bateria de testes de conformidade do Web Standards Project’s Acid Tests, em que o FFB4 também tem o melhor desempenho no momento, com score 67%.

Firefox 3 beta 4 mais rápido no teste SunSpider

O Firefox 3 inclui muitas outras evoluções e melhorias neste e outros aspectos, como conformidade no teste Acid2 e outros recursos que prometem acirrar a guerra de browsers com Opera, Apple Safari e, claro, o Internet Explorer 8 em desenvolvimento.

Para uma visão detalhada dos recursos já concluídos e demais previstos na nova versão do navegador Mozilla, veja Firefox 3 Product Requirements Document (PRD) – Feature List and Status, parte do Firefox 3 – Gran Paradiso Planning Center, Mozilla Wiki.

Trolls na web

Você sabe O que é e como lidar com um Troll na web?

Eu não sabia, mesmo já tendo me deparado com alguns internet afora.

Para saber o que são Trolls na web e ainda aproveitar dez dicas de como lidar com eles, basta seguir o link anterior e ler o interessante artigo do repórter Guilherme Neves, de 29 de janeiro.

Junto com André Crespani, Guilherme edita o blog Infosfera, canal de Tecnologia do portal ClickRBS, RS/SC.

Artigos JSF para começar 2008

O padrão JavaServer Faces (JSF) da plataforma Java EE — para construção de interface de usuário (IU/UI) web — tem sido cada vez mais difundido. É portanto um bom tema de tecnologia para começar o novo ano.

Uma boa introdução prática a JSF 1.2 (JSR 252) é o tutorial Getting started with JavaServer Faces 1.2, Part 1: Building basic applications (em inglês), por Richard Hightower, CTO da ArcMind, 2007-12-18, em IBM developerWorks. O acesso ao conteúdo do tutorial requer registro (gratuito). Recomendo também os artigos e FAQ listados na página de documentação JSF (em inglês) da Sun.

As atualizações das especificações JSF 1.2 e JSP 2.1 trazidas pela plataforma Java EE 5.0 homogeneizaram a convivência das duas tecnologias web, introduzindo a Linguagem de Expressão Unificada (Unified EL).

Já existem também boas bibliotecas de componentes JSF livres disponíveis para os desenvolvedores. Tudo isso contribui para a adoção da tecnologia ser cada vez mais rápida, ampla e fácil.

Mas a agilidade dos tempos modernos sempre pede mais e por isso já se discute a evolução JSF 2.0. No artigo JSFTemplate Components (em inglês), agosto 2007, Ken Paulsen destaca que criar um novo componente em JavaServer Faces ainda é difícil e burocrático. A proposição para a JavaServer Faces 2.0 (JSR 314) reconhece a importância em tornar mais fácil a autoria de componentes, fazendo disso uma prioridade da nova versão.

Pode-se fazer um paralelo da precupação de JSF 2.0 com a facilidade e simplicidade que o recurso de Arquivos de Tag de JSP ([1], [2], [3]) trouxe para a criação de bibliotecas de tags personalizadas, ou mesmo com a facilidade de criação de páginas dinâmicas da própria tecnologia JSP em relação a servlets.

Veja também JSFTemplating and Woodstock: Component Authoring Made Easy (em inglês), por Ken Paulsen, Jason Lee e Rick Palkovic, dezembro 2007. Uma thread de comentários e discussões sobre este artigo foi criada em TheServerSide.COM.

Outro artigo recente relacionado a JSF e AJAX é The AjaxComponent strategy for JSF: The best of both worlds (em inglês), por Matthew Tyson, JavaWorld.com, 2007-12-20.

O anúncio da Apache.org sobre lançamento do Apache Portals Bridges 1.0.4, 2007-12-29, também é a propósito, pois o projeto Portals Bridges provê integração com frameworks web JSF e Struts, Groovy e componentes Portlet (JSR-168).

A fundação Apache, porém, é totalmente eclética em projetos Java, pois hospeda o desenvolvimento de diversos frameworks web, como MyFaces (implementação de JSF), Struts, Tapestry e o inovativo Wicket, que teve sua versão 1.3 lançada (discussão em TSS) agora em 2 de janeiro.