Atualizações de segurança Mozilla

Saiu ontem o Firefox 2.0.0.4. É basicamente uma atualização de segurança e estabilidade, trazendo também algumas melhorias no suporte ao Windows Vista.

Além do Firefox 2.0.0.4, estão disponíveis as atualizações de segurança das versões 1.5 dos produtos Mozilla: Firefox 1.5.0.12, Thunderbird 1.5.0.12. Eles corrigem as seis vulnerabilidades divulgadas em 30 de maio. A mais crítica é MFSA 2007-12, possibilidade de crash com falha de memória, que afeta todos os produtos Mozilla.

Para saber mais (em inglês):

Referências sobre engenharia e arquitetura de software

Uma extensa página em meu site de referências em TI mantinha com o singelo nome de “Engenharia de Software” uma variedade de tópicos. Pois bem, hoje a página “cresceu e se multiplicou”. Em uma profunda reestruturação e ampliação, a página se tornou uma nova seção Programação: Software, que contém os tópicos:

  • Engenharia de Software
  • Arquitetura de Software
  • Usabilidade e Acessibilidade
  • Livros relacionados

A página de Usabilidade ficava diretamente dentro da seção de Programação e, por coesão, foi movida para esta nova sub-seção. Os demais três tópicos foram originados da divisão e expansão da antiga página de Engenharia de Software. Confira o resultado!

Referências Java em português

Dei uma boa atualizada hoje na minha página de referências em português na Internet sobre Java.

Foram excluídos alguns portais desativados, como o Cafeh, e feitas boas inclusões como a iniciativa JEDI — Java Education and Development Initiative — em português impulsionada por Daniel de Oliveira, líder do DF JUG – Brasil.

Também foi criada uma nova seção de blogs em português focados em tecnologia Java. O seu ainda não consta lá? Então, mande-me o link (veja contato em Sobre Márcio d’Ávila).

Princípios e citações

Alguns princípios e citações pautam meu pensamento, minha personalidade, minha vida.

Um do principais é custo × benefício. A análise de custo-benefício é uma disciplina científica, mas para mim é praticamente uma filosofia de vida. Aliás, gostei da definição da Wikipedia (inglês) que diz que pode ser também “uma abordagem informal para se tomar decisões de qualquer tipo”. Dê uma olhada em Answers.com e verá que a análise de custo-benefício se aplica às mais diversas situações e áreas.

Nem sempre o tal custo é algo facilmente mensurável, como é por exemplo o custo financeiro. Mesmo quando o assunto é dinheiro, na maioria das situações existem custos diretos e os — às vezes tortuosos mas ainda assim relevantes — custos indiretos. Existe até o custo de oportunidade, aquele relativo a oportunidades perdidas ou boas alternativas não escolhidas.

Benefício, então, pode ser ainda mais intangível e subjetivo. Ou seja, pesar o custo-benefício — das coisas e das ações — tem sempre um grau de subjetividade, mas nem por isso deixa de ser, para mim, um jeito sensato de pensar.

Eu sempre desconfio das medidas “a qualquer custo”. Praticamente nada, para mim, é digno de ser a todo e qualquer custo. Existem, sim, decisões que tem um alto grau de importância ou relevância (mas relativo a quê e a quem?), o que pode ser uma medida de alto benefício. Aí sim pode-se justificar alto custo.

Assim como dizem que “toda unanimidade é burra”, todo absoluto é radical. Os extremos são sempre perigosos. E o equilíbrio, essência do custo-benefício, nem sempre é fácil, mas é um padrão lógico e justo.


Por falar em fácil, me ocorre outro ponto relevante: É mais cômodo culpar os outros do que admitir as próprias deficiências. Ou, no pensamento de Jean-Paul Sartre e na música dos Titãs: “o inferno são os outros”.

Pode ser mais cômodo, mas não torna as coisas mais fáceis nem resolve a situação.

Afinal, não é mais fácil modificar a si mesmo — ou algo que depende exclusivamente de você — do que modificar os outros e o resto do mundo? Então, se uma deficiência — ou falha, ou problema, ou culpa — está em você, maiores as chances de você mesmo ter os meios para resolver a situação.

Contudo, admitir as próprias falhas curiosamente é, em geral, muito mais difícil do que possa soar. Exige boa dose de coragem. Talvez seja por isso que, embora nas (tantas) vezes que erro sou o primeiro a admitir, não raro vejo nas pessoas uma reação de espanto ou admiração. Serei corajoso? Acho que ajo assim mais por convicção e hábito do que por esforço e coragem.

Errar é humano. Errar só não pode ser a regra. E insistir no erro, aí sim, é bobeira. Admitir um problema pode ser o primeiro passo para resolvê-lo. Então, meu pensamento: seja o primeiro a reconhecer seus erros para se tornar uma pessoa melhor.

Quando falei em coragem, me lembrei imediatamente de Rubem Alves, no texto O Passarinho Engaiolado (in: Teologia do Cotidiano): “Somente podem gozar a liberdade aqueles que têm coragem”.

Boas blogadas do dia

Em minhas visitas freqüentes ao InfoBlogs, tem se tornado um hábito fácil achar ótimos artigos e blogs e de tecnologia. E um bom blog puxa outro. Eis minhas recomendações de hoje:

Níveis da administração

[Revisado em 2010-03-05.]

À medida que experimento e convivo com os níveis organizacionais de empresas, principalmente de médio e grande porte, percebo e compreendo na prática a diferenciação de características dos níveis hierárquicos de gestão.

É nítida a existência de três níveis: o Estratégico da alta gestão (institucional, executiva), o Tático da gestão departamental e o Operacional da gestão localizada (equipes). Consegui identificar e diferenciar algumas características interessantes destes níveis, que listo a seguir.

Nível
Estratégico Tático Operacional
C
a
r
a
c
t
e
r
í
s
t
i
c
a
Abrangência Global, Corporação, Instituição Regional, Unidade, Divisão, Departamento Local, Setor, Equipe
Área Presidência, Alto Comitê Diretoria, Gerência Coordenação, Líder técnico
Perfil Visão, Liderança Experiência, Organização Técnica, Iniciativa
Resultado Efetividade Eficácia Eficiência
Horizonte Longo prazo Médio prazo Curto prazo
Foco Destino Caminho Passos
Diretrizes Visão, Objetivos Planos de ação, Projetos Processos, Atividades
Conteúdo Abrangente, Genérico Amplo, mas Sintético Específico, Analítico
Ações Determinar, Definir, Orientar Planejar, Gerenciar Executar, Manter, Controlar, Analisar
Software Painel de Controle, BI, Editor de texto Project, Planilha, Editor de texto, Apresentação Service Desk, CRM, ERP, Aplicações específicas

Enquanto tenho aprendido isso empiricamente, fiz uma pesquisa na Internet e tive a feliz surpresa em descobrir que minhas experiências práticas convergem para o que a literatura acadêmica preconiza.

Descobri a Teoria Neoclássica da Administração e suas idéias, que parecem o caminho para me dar fundamentação teórica e a organização metodológica para este meu conhecimento tácito.

Estou descobrindo — para tudo na vida tem uma primeira vez, não importa quando — autores fantásticos como Peter Drucker (1909-2005, austríaco) e o mundo dos negócios segundo ele. É de Drucker a corretíssima frase “o que não se pode medir, não se pode gerenciar”. E completando: Não se pode medir o que não se pode definir. E para definir é preciso entender.

É, quanto mais aprendo, mais certeza tenho de quanta imensidão ainda há a aprender. Ou, como diria o filósofo Sócrates: “tudo que sei é que nada sei”.

Para saber mais:

Eficiência, Eficácia e Efetividade:

IDEs Java – download e pontos fortes

Atendendo a pedidos, em meu artigo recente sobre Melhores IDEs Java gratuitos, acrescentei os links para baixar os produtos e pacotes adicionais, relativos a cada IDE: Eclipse com Exadel/RedHat, NetBeans e Oracle JDeveloper.

Também aproveito para destacar aqui os pontos fortes de cada IDE, em minha opinião:

Eclipse com Exadel Studio Pro (futuro Red Hat Studio): software livre; a popularidade fiel do Eclipse e suas excelentes ferramentas de refactoring em projetos e em código Java em geral; mais as ótimas ferramentas visuais do Exadel, incluindo editor HTML/JSP/JSF “estilo Dreamweaver” e suporte a frameworks populares Struts, Spring e Hibernate.

NetBeans e seus Packs: software livre; facilidade na instalação e na variedade de assistentes produtivos; distribuição toda localizada para Português do Brasil; editores UML (com engenharia reversa e sincronização de código), BPEL, XML e WSDL no Enterprise Pack; excelente editor visual GUI desktop (Swing); ótimo conjunto de ferramentas de desenvolvimento para plataformas móveis no Mobility Pack.

Oracle JDeveloper: pacote completo e abrangente; rico em ferramentas para a plataforma Java EE; grande integração com produtos Oracle — gerenciador de banco de dados Oracle Server, Oracle AS e os frameworks TopLink e ADF.

Como sempre, a pergunta que não quer calar — Qual deles é o melhor IDE? — não tem resposta simples e direta; depende das suas necessidades, expectativas e preferências.

Refletindo sobre OO e patterns

Muito bom o artigo do Vitor Fernando Pamplona, Cuidado com a Orientação a Objetos e os Design Patterns, de ontem. Mesmo para quem não concordar com alguns pontos do texto ou até com nada, vale como momento de reflexão sobre como tem sido sua experiência e aplicação de orientação a objetos e padrões de desenho/projeto (assumindo que você é um profissional da área de análise de sistemas e/ou desenvolvimento de software, claro).

Os comentários do artigo também estão interessantes.

Novo impulso ao JavaScript

Há poucos anos atrás, JavaScript era um das linguagens de programação mais criticadas e detestadas. Os mais radicais inclusive questionariam chamá-la de linguagem de programação. Programadores e desenvolvedores “de verdade” gostavam de linguagens “de verdade”, como C, Java, Pascal, C#, Fortran… tudo menos JavaScript, que nem tipagem forte tinha e ainda se dizia uma linguagem orientada a objetos.

Nos navegadores web, principal ambiente operacional do JavaScript, existiam entre Firefox/Mozilla e Internet Explorer muitas diferenças nas suas implementações da linguagem e, principalmente, no modelo de objetos de documento (DOM) utilizado para se manipular a estrutura da página web com JavaScript.

O Mozilla (de Netscape a Firefox) foi quem lançou e evoluiu várias versões da linguagem JavaScript, mas a correspondente JScript implementada pelo Internet Explorer tinha uma série de diferenças e de adições proprietárias da Microsoft. Lidar com essas diversidades realmente enlouquecia qualquer programador.

Fazer uma aplicação DHTML (HTML com JavaScript) multi-browser era uma tarefa difícil, às vezes inviável. Em 2003 e 2004, eu mesmo tive que estudar um bocado para fazer Validação de formulários HTML, Tratamento de CPF e CNPJ e Eventos multi-plataforma em JavaScript.

Essa realidade foi bastante amenizada à medida que se consolidou padronização da linguagem JavaScript pela ECMA (ECMASCript) e do Document Object Model (DOM) pelo W3C. O Firefox sempre foi bem aderente a estes padrões, e as novas versões do Internet Explorer têm gradativamente aprimorado esta compatibilidade.

E eis que a era Web 2.0 e o desenvolvimento AJAX deram novo impulso ao JavaScript. Como o próprio HTML e o ambiente HTTP não têm evoluído com a rapidez exigida pelo aumento de demanda por recursos nos serviços através da web, quem deu uma luz no fim do túnel para uma explosão de interatividade na web foi o bom e velho JavaScript. A linguagem é o próprio componente “J” em AJAX: Asynchronous Javascript And XML.

Por bem ou por mal, os desenvolvedores de aplicações e serviços interativos para web têm sido obrigados a dar mais atenção ao JavaScript e, com isso, a linguagem tem perdido seu mito de endemoniada para se tornar um ambiente de programação viável, com riqueza de recursos e grande flexibilidade. Ou, na excelente definição do artigo JavaScript – Nem Java, nem Script – Uma Interessante Linguagem Orientada a Objetos (sem classes), por Leonel Togniolli:

[JavaScript] é uma linguagem dinâmica, fracamente tipada, com orientação a objetos baseada em prototipos.

Se quiser entender melhor o que significa essa definição, leia o artigo citado, que é bem interessante.

Na esteira da Web 2.0, explodiu o desenvolvimento de componentes Ajax e, por conseqüência, despontaram os magos do JavaScript, e recursos e ferramentas cada vez mais interessantes e poderosos estão surgindo, baseados em JavaScript.

Vários IDEs de desenvolvimento para web oferecem suporte a edição e validação de sintaxe Javascript. Além disso, um excelente ambiente para monitorar, inspecionar e depurar JavaScript em ação — assim como CSS, HTML, DOM, tempo de carga de páginas e Ajax — é o Firebug, uma poderosa extensão para o navegador Firefox. Recomendo a leitura do artigo Puxão de orelha faz bem, JavaScript também. Apresento o Firebug!, por Giovane Roslindo Kuhn.

Também existem bibliotecas que, a partir dos pobres componentes padrão atualmente existentes de estrutura de página e formulários do HTML, criam componentes de interface mais sofisticados, há muito já disponíveis em ambientes de programação gráfica desktop, como árvores, tabelas etc.

Existe o popular Dojo Toolkit, um framework DHTML/AJAX de código aberto escrito em JavaScript. Outro exemplo é a biblioteca JavaScript Qooxdoo. Sua lista de componentes é bem rica, como se pode ver no showcase. Conheci esta biblioteca por outro artigo também de Leonel Togniolli: Clientes Ricos Ajax na Web com Qooxdoo.

document.write("Hello world, again, JavaScript!") 🙂

Para saber mais:

Tutorial Tomcat atualizado e outros

O Tutorial Tomcat – Instalação e Configuração Básica, artigo mais popular em meu site pessoal desde 2003, foi mais uma vez atualizado na revisão nº 25, hoje. A principal atualização é passar a cobrir o Tomcat 6.0, que suporta as especificações mais recentes da plataforma Java EE 5.0 para web, Java Servlet 2.5 e JavaServer Pages (JSP) 2.1.

O tutorial ainda não foi testado no Tomcat 6, mas devido à sua compatibilidade retroativa com o Tomcat 5.5, não deve haver nenhum problema.

Ao atualizar o texto, foram feitas melhorias na organização e conteúdo dos tópicos de Introdução e Instalação do Tomcat.

Outras atualizações

Aproveitando o tópico, destaco dois outros artigos que foram atualizados. O primeiro é Idiomas – Dicionários e outros recursos para aprendizado e ensino, uma coletânea de referências úteis, principalmente para Inglês, também atualizado hoje.

Em tempo, dia 6 de maio foi atualizado o artigo sobre PMBOK e Gerenciamento de Projetos, incluindo agora uma figura que ilustra a dinâmica dos cinco grupos essenciais de processos de gerenciamento do Guia PMBOK.