Resolver download HTTPS no GetRight

Há muitos anos adquiri e uso o software shareware gerenciador de downloads chamado GetRight.

No tempo da banda não tão larga assim, um dos recursos do GetRight era buscar a aceleração de downloads com a engenhosa opção de segmentar o arquivo a baixar em vários pedaços simultaneamente, inclusive podendo baixar cada segmento de um servidor diferente. Atualmente, esse recurso tem pouca valia.

Dois recursos do GetRight que me interessam até hoje são os seguintes:

  • Opção de gerar um arquivo de log para cada download, onde fica anotado o URL (endereço) de origem do download e pode-se fornecer também uma anotação ou descrição.
  • A opção de preservar o horário (timestamp) de modificação do arquivo no servidor, ao invés de deixar o arquivo com a data em que você realizou o download. Esta opção só está disponível na versão paga do GetRight.

Enquanto os navegadores web não implementam esses recursos de forma nativa, eu vou usando o GetRight para gerenciar e organizar meus downloads.

Sobre a preservação do timestamp de modificação de downloads

Apesar da informação da data de última modificação do arquivo no servidor estar facilmente disponível no cabeçalho dos pacotes HTTP para um download, infelizmente os navegadores mais populares ainda não oferecem a opção de preservar a data-hora original do arquivo, embora existam demandas de usuários para que esse recurso seja implementado. Veja:

Uma extensão para Firefox que promete oferecer essa opção não funciona.

Voltando ao HTTPS

Contudo, já faz um bom tempo que observei que os downloads via HTTP (conexão segura) muitas vezes não estavam funcionando no GetRight, aparentando ficar extremamente lentos ou parados.

Como o GetRight não vem sendo mais atualizado desde a versão 6.5 de fev/2011, suspeitei de problemas de compatibilidade ou mesmo bug com a bibioteca DLL que implementa o OpenSSL no GetRight para suportar HTTPS.

Procurando na pasta do GetRight em Arquivos de Programas (x86), encontrei o arquivo libeay32.dll. Em Propriedades > Detalhes do arquivo vemos que se trata da OpenSSL Shared Library versão 0.9.8.11 de mar/2009.

Propriedades de libeay32.dll do GetRight

Consultei o site do projeto de software livre OpenSSL e vi que a versão estável mais recente disponível no momento em que escrevo este artigo era 1.0.2e.

Por se tratar de um software envolvendo criptografia, que tem restrições de uso e exportação para alguns países mais “complicados”, o site OpenSSL.org só disponibiliza os códigos-fonte do OpenSLL para baixar. Vários sites independentes oferecem o download de versões compiladas para Windows (32 e 64 bits) do OpenSSL. Optei por baixar de https://indy.fulgan.com/SSL/ o arquivo openssl-1.0.2e-i386-win32.zip (apesar do meu Windows ser 64-bit, o GetRight é antigo e 32-bit).

Extraí do ZIP baixado o arquivo libeay32.dll atualizado da versão 1.0.2e, substituí esse arquivo na pasta do GetRight e… sucesso! Os downloads via HTTPS voltaram a funcionar rapidamente no GetRight.

#ficaadica … Espero que seja útil para mais alguém.

Plug-ins em navegadores: o fim de uma era

Sem Plug-insRemonta à época do velho navegador internet Netscape a ideia de se definir uma API aberta de plug-ins para integrar tratamento de conteúdos e mecanismos específicos ao navegador, como vídeos, animações, gráficos vetoriais, PDF, aplicações dinâmicas etc., de forma que o os mecanismos nativos do navegador se concentrassem em navegação e exibição de páginas da “World Wide Web”. Isso fazia muito sentido naqueles anos 90.

E até agora, praticamente todos os navegadores populares da atualidade, em sistemas operacionais desktop como Windows, Linux e MacOS, ainda implementavam a arquitetura de plug-ins multi-plataforma denominada Netscape Plugin Application Programming Interface (NPAPI).

Contudo, no longo caminho de mais de 20 anos de evolução desde os idos do Netscape até hoje, e mais intensamente nos últimos anos, a necessidade de plug-ins vem decrescendo. E a tendência iminente é chegar a zero!

Este artigo busca um retrospecto e referências dos principais aspectos, contextos e fatos envolvidos na decadência dos plug-ins de navegadores.

Recursos nativos

Os navegadores e os padrões da web vem evoluindo para incorporar cada vez mais recursos nativos para conteúdo dinâmico, rico e interativo. Citemos alguns marcos importantes:

Ajax e Rich Internet Applications (RIA)

Os padrões de JavaScript, CSS (estilos), DOM (modelo de objetos das páginas web para manipulação programática, especialmente via JavaScript) evoluíram muito para suportar cada vez mais interatividade e experiência rica (RIA) nas páginas web, com destaque par a popularização do Ajax e de frameworks de programação web poderosos como jQuery e AngularJS, só para citar alguns. Veja por exemplo meu artigo Ajax e RIA – Radar do mercado, de mai/2011.

HTML5

O padrão HTML5 (desenvolvimento iniciado em 2007/2008 e recomendação oficial do W3C concluída em 2014-10-28, especificação liderada por Ian Hickson da Google), suportado por todos os principais navegadores da atualidade, incluiu elementos nativos para incorporação de multimídia como vídeo, áudio e legendas, equações matemáticas (MathML), gráficos vetoriais (SVG), canvas gráficos 2D (bitmaps dinâmicos) e 3D (WebGL) etc. diretamente em páginas web. Isso dispensa o uso de plug-ins antigamente utilizados para integrar com visualizadores multimídia do sistema operacional como Apple Quicktime, Windows Media Player ou VNC.

Referências sobre HTML5 e seus recursos nativos:

PDF

Mozilla Firefox, Google Chrome e Microsoft Edge atualmente incluem visualizadores nativos de documentos PDF. Isso dispensa o plug-in integrando o Adobe Acrobat Reader. O Chrome oferece também recurso nativo para Salvar como PDF páginas web, ao invés de imprimir.

A Adobe alega que o Acrobat Reader garante melhor experiência do usuário e garante total compatibilidade com o formato PDF, evitando erros e problemas na utilização de recursos avançados. Vários navegadores, mesmo possuindo visualizador nativo, oferecem alternativa de configurar o Adobe Acrobat Reader para abrir documentos PDF. Veja também Change in support for Acrobat and Reader plug-ins in modern web browsers, na base de conhecimento de Ajuda da Adobe.

Extensões ou complementos nativos do navegador

O modelo de extensões ou complementos específicos para os principais navegadores, disponibilizadas para baixar em repositórios ou “lojas” (Mozilla Add-ons, Google Chrome Web Store etc.), permite incorporar novas funcionalidades e comportamentos específicos aos navegadores como componentes adicionais nativos.

A era dos dispositivos móveis

E veio a era dos dispositivos móveis (smartphones e tablets), memória RAM e telas menores que os desktops, interação fortemente baseada em toque direto na tela, e em sua maioria com sistemas operacionais Google Android ou Apple iOS.

Com as diferenças e limitações de hardware, sistema operacional e software dos dispositivos móveis, em geral os aplicativos para estes dispositivos são mais enxutos e especializados. A consequência é que os navegadores internet para smartphones e celulares em geral não suportam mecanismos de plugin.

Depois da versão 11.1 do Adobe Flash Player em set/2013, a Adobe deixou de publicar Flash Player para browser em dispositivos móveis Android. No iOS, em meio a alegações controversas desde uma declaração Thoughts on Flash de Steve Jobs em abr/2010, o Flash nunca foi suportado nos dispositivos móveis da Apple. No Android, o Flash Player deixou de ser disponibilizado no Google Play Store; em Android 4 e inferior, ele só pode ser instalado manualmente diretamente a partir do repositório arquivado da Adobe.

Referências:

A extinção do NPAPI

Microsoft

O Microsoft Internet Explorer 5.5 SP2, em ago/2001, já havia descontinuado o suporte ao protocolo NPAPI, deixando de suportar os plug-ins no estilo Netscape em favor da integração via tecnologia ActiveX, introduzida desde o Internet Explorer 3, conforme artigo #30341 da base de conhecimento de suporte Microsoft.

O novo navegador Microsoft Edge introduzido no Windows 10, por sua vez, descontinuou também o suporte à tecnologia ActiveX. Veja A break from the past, part 2: Saying goodbye to ActiveX, VBScript, attachEvent…, 2015-05-06, por Microsoft Edge Team, em Windows Blog.

Google

Em setembro de 2013, Justin Schuh, Engenheiro de Segurança e Planejador de Obsolescência de Plug-in da Google, publicou no Chromium Blog que a arquitetura anos-90 do NPAPI se tornara causa frequente de travamentos, falhas, incidentes de segurança e complexidade de código; por causa disso, Chrome iria gradualmente reduzir o suporte a NPAPI a partir do ano seguinte.

Como evidência de que a web estava pronta para essa transição, Schuh apresentou dados baseados nos dados anônimos de uso coletados pelo Chrome indicando que à época apenas seis plug-ins haviam sido usados por mais de 5% dos usuários no mês anterior: Silverlight (15%), Unity (9,1%), Google Earth (9,1%), Java (8,9%), Google Talk (8,7%) e Facebook Video (6%).

Em artigo de atualização de novembro de 2014, com os dados indicando que o uso de NPAPI continua em queda, a Google apresentou a contagem regressiva para o NPAPI, com todos os plugins passando a ser bloqueados por padrão em jan/2015, depois o suporte a NPAPI desabilitado por padrão em abr/2015 (o que efetivamente ocorreu no Chrome 42) e, por fim, o suporte a NPAPI sendo permanentemente removido do Chrome em set/2015 (Chrome versão 45). Assim ocorreu.

Mozilla

Em 8 de outubro de 2015, Benjamin Smedberg, gerente de engenharia de qualidade do Firefox na Mozilla, publicou um anúncio sobre plugins NPAPI no Firefox: a Mozilla pretende remover o suporte a plugins NPAPI no Firefox até o fim de 2016. Apenas o suporte a Adobe Flash deve ser mantido em caráter excepcional. Novas plataformas como o Firefox 64-bits para Windows já nascem sem suporte a plugins.

Similar à Google, Smedberg também justifica que com a evolução dos browsers e da Web, muitos recursos que antes requeriam plugins estão agora disponíveis nativamente. E que com a velha NPAPI, plug-ins são fonte de problemas, travamentos e incidentes de segurança para os usuários.

Firefox começou este processo vários atrás, com o mecanismo de ativação manual de plugins, permitindo que usuários ativem um plugin apenas quando necessário. Smedberg cita que a decisão da Mozilla espelha a de outros navegadores modernos, como Google Chrome e Microsoft Edge, que também removeram suporte a plugins legados.

Os remanescentes e os novos movimentos

Quatro plug-ins para incorporação de aplicações dinâmicas avançadas ainda merecem destaque: O Adobe Flash Player, o Java Plug-in, o Microsoft Silverlight e o Unity 3D. Vamos avaliar a situação e tendência para cada um deles.

Flash

O Adobe Flash é a única tecnologia complementar que ainda persiste, praticamente unânime, largamente utilizada para vídeos em fluxo (streaming), jogos e animações em sites web, com forte intenção de continuidade de suporte pelos principais navegadores.

A Google trabalhou em conjunto com a Adobe para integrar Flash Player built-in no Google Chrome, inclusive com atualizações automáticas, sem a necessidade do usuário baixar manualmente. O Flash Player embutido no Chrome utiliza Pepper Plugin API (PPAPI), um sistema mais novo e seguro de integração de plug-ins desenvolvido pela Google a partir de 2009.

O Internet Explorer 5.5 em diante passou a integrar o Flash Player via ActiveX (a instalação da Adobe fornecia um plug-in ActiveX especialmente para o IE) e, com o dessuporte do ActiveX no novo navegador Microsoft Edge, este passa a integrar o Flash Player nativamente, similar ao Chrome.

No artigo NPAPI Plugins in Firefox, de out/2015, a Mozilla informa que com a descontinuidade do NPAPI em 2016, o suporte a Flash será mantido como uma exceção, sem ainda revelar detalhes técnicos, mas anuncia que Mozilla e Adobe vão colaborar para melhorar a experiência do Flash no Firefox, incluindo estabilidade, desempenho e segurança.

Java

O uso de applets Java integradas ao navegador tem tido um universo mais especializado de aplicações. Tirando proveito do poder e abrangência de aplicações Java capazes de lidar com todo tipo de recurso no computador, no Brasil posso citar pelo menos dois grandes exemplos:

O plug-in Guardião de Segurança antifraudes durante as transações on-line (internet banking), desenvolvido pela GAS Tecnologia e utilizado por Banco do Brasil, Caixa Econômica Federal, Itaú e Santander, recorreu a applet Java para seus propósitos.

No Poder Judiciário, as aplicações web de processo eletrônico, como o Processo Judicial Eletrônico (PJe) instituído nacionalmente pelo Conselho Nacional de Justiça (CNJ), tem usado intensamente applet Java para acessar o certificado digital de pessoa no computador do usuário, para assinar digitalmente documentos eletrônicos e/ou para autenticação segura.

Com o fim do suporte a NPAPI já ocorrido no Chrome 45 (set/2015) e iminente no Firefox (dez/2016), que era o mecanimo de integração do Java plug-in nestes navegadores, a Oracle recomenda, no curto prazo, os usuários migrarem para Internet Explorer (Windows, que integra o Java plug-in via ActiveX) ou Safari (MacOS X, que ainda suporta NPAPI) para acessar aplicações Java através do navegador. E de forma mais definitiva, orienta os desenvolvedores a migrar as applets Java para aplicações Java Web Start, que podem ser disparadas através do navegador via protocolo Java Network Launching Protocol (JNLP), mas executam como aplicações desktop independentes no Rumtime Java SE e não interagem com o navegador depois de iniciadas.

Microsoft Silverlight

O Silverlight é uma tecnologia da Microsoft baseada em .NET Framework, que nasceu em 2007 aparentemente para concorrer com o Flash da Adobe, e que já teve sua descontinuidade anunciada na versão 5 com o fim do suporte pela Microsoft em 2021. Nesse meio tempo, um grande adepto do Silverlight foi o serviço Netflix de filmes e séries pela internet, que tirou proveito do controle de conteúdo protegido por direitos autorais (DRM) do Silverlight para reproduzir os vídeos em desktop Windows e MacOS. O Silverlight plug-in se integra ao navegador via NPAPI ou, no Internet Explorer, ActiveX. Como o Edge não suporta nenhuma das duas tecnologias de plug-in, o Silverlight não é compatível com o novo navegador da Microsoft.

Com a descontinuidade do Silverlight em 2021, a Netflix anunciou desde 2013 que pretende migrar para vídeo HTML5 com Premium Video Extensions nos computadores desktop. Em dispositivos móveis, smart TVs e consoles de jogos, a Netflix já possui seu próprio aplicativo dedicado e não depende de navegador.

Unity 3D

NPAPI Plugins in Firefox

“As part of our plugin strategy, Mozilla and Unity are proud to jointly announce a close collaboration and an aligned roadmap that will enable Unity-based content to be experienced directly in the browser without plugins. As this technology continues to evolve, Unity has announced an updated roadmap for its Web Player technology.”

Conclusão

Com a popularização de marcos tecnológicos como Ajax, HTML5 e dispositivos móveis, o uso de plug-ins nos navegadores web perdeu fortemente o sentido. Acrescente-se a isso a extinção do suporte à velha arquitetura de plug-ins NPAPI por dois dos navegadores mais utilizados (Chrome e Firefox, além do IE e Edge) até 2016.

Somente o Adobe Flash, por sua grande popularidade em conteúdos web e experiência de usuários, tem sido tratado de forma excepcional pelos fornecedores de navegadores com estratégias para manter sua compatibilidade.

Desenvolvedores de aplicações internet e provedores de conteúdo devem repensar profundamente suas estratégias de integrar conteúdo e aplicações às páginas web mais adequadas aos tempos atuais, deixando para trás a era dos plug-ins.

Atualizações: Gerenciamento de projetos e impressora PDF

Estou tão corrido e sem tempo que fiz uma grande revisão no meu artigo sobre Gerenciamento de Projetos em 11 de julho (!) e só hoje vou comentar aqui.

Uma grande parte da revisão foi atualizar informações para a quinta edição do PMBOK. Desde o alinhamento com a norma ISO 21500, até as figuras e textos refletindo a incorporação da nova área de conhecimento “Partes Interessadas” e a revisão dos processos de GP, que passaram de 42 para 47.

Outra grande parte foi na última seção, que citava como referencial de organização para guias e boas práticas em gerenciamento de projetos apenas o IPMA, de origem européia (e sua afiliada brasileira ABGP). Agora são citados também o PRINCE2, de origem inglesa, e os métodos e ferramentas ágeis como Scrum, Kanban e Project Model Canvas (este último do brasileiro José Finocchio Júnior).

Confira o artigo atualizado: PMBOK e Gerenciamento de Projetos.

Ainda no assunto de atualização de artigos mas com bem menor abrangência, revisei hoje o artigo sobre criação de arquivos PDF a partir de conteúdo no Windows. Basicamente percorri os sites do Ghostscript e das impressoras PDF avaliadas, verificando suas versões atualizadas e novidades trazidas, como compatibilidade com o Windows 10, por exemplo.

Confira: Gerando PDFs com (ou sem) o Ghostscript.