Frase do dia

“You are better off running as non-admin without anti-virus than you are running as admin with anti-virus.”
Aaron Margosis


Encontro AUG – Cases Flex

O próximo encontro do Adobe User Group São Paulo (AUG-SP) já está marcado – e de acordo com o nosso calendário proposto.

Esse encontro contará com a apresenção de dois cases em Flex, feitos e apresentados pela equipe da DClick. O primeiro será o portal corporativo com as aplicações gerenciais, componentes de customização, mapas e afins. O segundo case será um framework de gráficos e relatórios feitos em Flex 2.0.

Interessados podem realizar a inscrição gratuitamente no site do AUG-SP.

Data: 25/Julho/2006, terça-feira
Horário: 19:00 as 22:30

Local:
Escritório da Adobe Brasil
Rua Gomes de Carvalho, 1510 cj 121 – Vila Olímpia
São Paulo – SP

As vagas são limitadas! É uma excelente oportunidade para os interessados e curiosos na tecnologia verem grandes projetos e tirar dúvidas com a própria equipe que desenvolveu o sistema.

Site do grupo: http://www.augsp.com.br
Confirmar a inscrição para esta reunião: http://www.augsp.com.br/index.cfm?fuseaction=confirmarPresenca&IDreuniao=5


Adobe Flex Builder 2 Serial Number Crack (KeyGen)

O Adobe Flex é a mais completa e poderosa solução para o desenvolvimento de aplicações ricas para a Internet.

A versão 2 do Flex foi lançada recentemente e já há cracks e generator disponíveis para o Flex Builder. O CFGigolô disponibiliza aos interessados um keygen para gerar um serial number válido, encontrado em uma rede P2P.

Download adobe.flex.builder.2.charting.components.KeyGEn.[LeBuCiUS].zip

Atualização: Para os que não conhecem, o “crack” acima é apenas uma brincadeira (como já feito aqui no blog) e não funciona.

Update (for english readers, Adobe and BSA): this is a JOKE! Pretty much like this.


Clique para ativar e usar este controle

Foi disponibilizado no início do ano uma atualização para o Internet Explorer 6, que faz com que seja necessário “ativar” um conteúdo ativo (um Flash, Shockwave, Applet, etc) clicando nele antes de efetivamente utilizar. Essa atualização de conteúdos ativos (Active Contents) está associada ao artigo KB916281 da Microsoft e disponível para download automático no Windows, manualmente via Windows Update e também manualmente via download do site do Microsoft.

clique_para_ativar_este_controle.gif
Exemplo no site Submarino, que ainda não atualizou a inserção de conteúdos em Flash em seu site

Como essa atualização gerou uma certa polêmica (e boa parte dela por que os desenvolvedores não atualizaram seus sites, o que é incrível, já que a Microsoft disponibilizou ainda no ano passado informações sobre a atualização), há também um artigo no Knownledge Base no site da Microsoft de como voltar ao comportamento anterior (KB917425), e igualmente uma atualização pode ser baixada.

Um grande incômodo para os usuário (que pode nem saber o que fazer) ou ainda impedir com que a experiência seja a planejada. Apenas um “tooltip” é mostrado para ao usuário com a mensagem “Clique para ativar e usar este controle” (“Click to activate and use this control” no software em inglês).

Pode parecer uma insanidade, e realmente é. Isso ocorreu porque a Microsoft perdeu um processo judicial sobre o modo como seu browser lida com “Active Contents”, mais precisamente como controles ActiveX (O Flash Player para o IE é um ActiveX) podem ser ativa.dos A Microsoft, que não é boba nem nada, já havia disponibilizado desde Novembro do ano passado um workaround para isso. O workaround é, basica e sucintamente, gerar a tag object via um JavaScript externo (importante ser externo, pois se o JavaScript estiver no próprio arquivo HTML também será pedido para o visitante “ativar o controle”) ao invés de “embeda-la” (inseri-la) no código HTML diretamente. Eu disse que parecia insanidade…

A Adobe, claro, já incluiu esses workaround em seus produtos sob a forma de patchs. Há, por exemplo, uma atualização para o Flex 1.5 que faz com que o código HTML gerado (a tag object) seja diferente, de modo que o usuário não precise clicar para habilitar o conteúdo. Para os FlashForms do ColdFusion 7 também há houve um HotFix. Hoje ele não é mais necessário em vista do ColdFusion 7.0.2. Vale ressaltar que o Firefox não é atingido nem tem relação com essa atualização de ativar conteúdos do Internet Explorer.

Nos projetos que participo tenho utilizado um arquivo JavaScript (AC_RunActiveContent.js) proposto pela própria Adobe (http://www.adobe.com/devnet/activecontent/articles/devletter.html), que é bem simples e fácil de usar. Como os “embeds” dos arquivos em Flash em um projeto costumar ter as mesmas propriedades (de tamanho, cor e afins), também crio um JavaScript adicional – e é ele que chamamos em nossas páginas HTML. Por exemplo:

function embedFlash(url) {

AC_FL_RunContent(
‘codebase’,’http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0′,
‘width’,’100%’,
‘height’,’100%’,
‘src’,url,
‘quality’,’high’,
‘pluginspage’,’http://www.macromedia.com/go/getflashplayer’,
‘movie’,url,
‘allowScriptAccess’,’sameDomain’,
‘bgcolor’,’#ffffff’,
‘wmode’,false
);
}

Essa função pode ser customizada, como por exemplo, adicionar parâmetros de tamanho, transparência e afins, de acordo com as necessidades. Para utilizar, em páginas HTML, basta importar as funções e chamar a função embedFlash():

<script type=”text/javascript” src=”AC_RunActiveContent.js”>
<script type=”text/javascript” src=”EmbedFlash.js”>

<script type=”text/javascript”>embedFlash(‘Aplicacao.mxml?paramID=33’);

Note que para a função embedFlash() acima, personalizada, não há necessidade de passar a extensão do arquivo, e portanto o mesmo é valido para o método AC_FL_RunContent(), da própria Adobe. Este método adiciona a extensão “.swf” automaticamente. No caso do Flex 1.5, como os arquivos são compilados no servidor, acessa-se “App.mxml.swf”, por isso da extensão .mxml no exemplo acima. No caso de arquivos compilados localmente, como no Flex Builder 2, não haveria extensão, por exemplo. Vejam também que é possível passar parâmetros via URL.

O pessoal da área de TI pode reverter a atualização nas máquinas dos usuários (dos que tem a máquina atualizada), mas também é responsabilidade dos desenvolvedores atualizarem seus códigos, ainda mais com o grande prazo de divulgação das informações antes da efetiva atualização do Internet Explorer.


Decepção com os Correios

Eu lembro de ter visto algumas pesquisas em que os órgãos públicos em que a população tinha mais confiança eram os Correios e os Bombeiros. Na instituição do Correios em si, depois daqueles escândalos todos, eu já não confio mais. E no início do ano ocorreu uma situação que deixou-me preocupado e desconfiado também dos serviços deles.

Fiz um encomenda com uma empresa do Estados Unidos, via Internet, no dia 02 de Janeiro, com data máxima de entrega prevista para dia 14 de Fevereiro. No dia 15 de Fevereiro recebi um Aviso de Chegada dessa encomenda da agência dos Correios que me atende. No aviso constava um carimbo – possivelmente de confecção desse aviso – do dia 20 de Janeiro (sexta-feira), ou seja, 26 dias antes do aviso chegar na minha residência; e também o nome e assinatura do entregador dos Correios, aferindo a data e hora em que o Aviso de Chegada efetivamente foi entregue em minha residência.

Leia o resto deste post »


BlogCFC e “fully qualified names”

No blog da DClick estamos utilizando o sistemas de blog BlogCFC, escrito em ColdFusion por Raymond Camden, programador ColdFusion provavelmente bem conhecido do pessoal – ele mantém alguns projetos interessantes, como a lista CFCDev, CFLib e afins.

A idéia de utilizar o BlogCFC foi que justamente ele era em ColdFusion, de modo que seria fácil customizá-lo e utilizarmos em nosso servidor de hospedagem (que já tinha o CF instalado). Um das primeiras coisas que notei quando baixei o sistema de blog foi a grande quantidade de funções createObject() em objetos Java, e o nosso servidor de hospedagem usa sandbox security e por razões óbvias, bloqueia o uso de objetos Java no servidor, algo que aprovo e sempre sugerimos aqui no blog.

Leia o resto deste post »


Frase do dia

“What if I train my staff and they leave?”
“What if you don’t train them, and they stay?”

– Desconhecido, mas parece ser um ditato norte-americano.


Frase do dia

“If you think education is expensive, try ignorance.”
– Derek Bok, presidente da Harvard University de 1971 a 1990


Frase do dia

“If you think installing patches and security updates is expensive, try not installing them.”
– Mark Crall


Flex 1.5 no ColdFusion: cfchart, headless e múltiplas configurações da JVM

Assim como o ColdFusion, o Flex 1.5 também é uma aplicação Java, e digamos que você está desenvolvendo um projeto com ambas as tecnologias, normalmente iniciariamos duas instâncias – o ColdFusion standalone e o Flex standalone, ou a instância deles em um deploy num application server como o JRun ou TomCat. Mas o mundo Java é bem mais extensível do que isso e é possíval instalar as duas aplicações (ColdFusion e Flex) sob a mesma instância, iniciando portanto as duas ao mesmo tempo. Rodando as duas sob a mesma instância, sob os mesmos parâmetros de JVM, etc. A Macromedia disponibilizou um technote, há muito tempo atrás, de como instalar o Flex 1.5 no ColdFusion.

Porém, infelizmente isso pode trazer um notório problema que enfretei há muito tempo, no meio do ano passado (sim, esse é um post bem atrasado, mas que ainda sim pode servir de referência). Se seu application server estiver rodando em um servidor headless, isto é, sem monitor, sem placa e capacidade gráfica, o Flex 1.5, na instalação padrão não funciona, pois ele usa a API do Java AWT (Abstract Window Toolkit) para implementar tratamentos com gráficos e afins, e tenta usar processamento de hardware para tal. Como o servidor é headless, não há hardware para responder estas requisições. Em um caso que passei, o servidor era um Linux acessado remotamente por SSH – um verdadeiro “headless server”.

Felizmente há uma solução bem simples e trivial para isso, e a Macromedia (na época) disponibilizou um technote para servidores headless: adicionar o argumento -Djava.awt.headless=true na JVM, para que as instruções do AWT sejam executadas por software. Notem que neste technote, há uma passagem que diz: “Somente configure para headless se sua máquina realmente não tiver placa gráfica, caso contrário a tag cfchart do ColdFusion pode dar erros”.

No meu caso o ColdFusion e o Flex realmente estavam sob a mesma instância, mas o CF só provia as camada de negócios, e não gerava gráficos. Contudo, as outras instâncias do mesmo servidor (todas as instâncias sob o JRun 4) geravam gráficos com cfchart, e o JRun, por padrão, compartilha os parâmetros de inicialização da JVM, de modo que o parâmetro headless seria aplicado também às outras instâncias, inclusive as que tinham apenas o ColdFusion instalado. Mas o servidor era mesmo um headless, então não havia o que temer. Supostamente…

Mas todos os gráficos das outras instâncias do ColdFusion (criados com a tag cfchart) pararam de funcionar após o acréscimo do parâmetro do headless, parâmetro esse necessário para que o Flex instalado sob o mesmo JRun funcionasse!

Em um outro technote da Macromedia, fica claro que a tag cfchart não funciona se você utilizar o argument de headless na JVM (veja um outro technote sobre cfchart, headless e contas de domínio no Windows aqui). Mas oras.. eu precisava do parâmetro de headless para iniciar o Flex, mas não podia utilizá-lo se não os gráficos do ColdFusion paravam de funcionar!

Situaçlão delicada… Posto isso, algumas outras soluções eram possíveis. (1) Instalar uma placa gráfica no servidor, (2) ou rodar as instâncias com parâmetros de JVM diferenciados – algo que o JRun 4 não permite por sua interface administrativa (mas que felizmente se preocuparam em adicionar essa funcionalidade no JRun 4.5 “Cheetah”, em beta).

Então a primeira coisa que passou no momento foi instalar outro JRun, um com as instâncias do Flex 1.5 com ColdFusion, com o parâmetro headless na JVM, e outro JRun com as instâncias do ColdFusion, em que estes precisariam gerar gráficos via cfchart. Isso até descobrir que no JRun 4 é possível sim iniciar as instâncias com parâmetros de JVM separados (inclusive está no Release Notes).

Enfim, essa situação tende a não ser mais vista (já nem era tanto, já que é uma situação específica) com o advento do Flex 2 e a geração local (na máquina do desenvolvedor) dos arquivos, mas ficam por aqui as dicas (e o “causo”).