Flex 3 – Problemas com CACHE no Internet Explorer
Filed in Flex 3, Navegadores, 15/12/2009, 18:20 by HardVoce pode não gosta do IE (eu também não) mas ele ainda é usado, e nós que trarbalhamos com a Tecnologia Flash achamos que nunca precisamos nos preocupar com os navegadores, pois é.
Tive um problema hoje com o IE, simplesmente ele guardava um CACHE doido de uma aplicação flex, coisa que no FF não acontecia (normal né?!).
Se no FF não acontecia e no IE sim, e estamos falando de FlashPlayer só resta 2 opções:
JavaScript ou Configuração do próprio Navegador
Como eu sabia que não era JavaScript parti parar as configurações do IE e lembrei de uma CONFIG para forçar o Navegador (não estamos falando ainda de código e nem vamos até então)
Abra o IE e va em:
Ferramentas -> Configurações (ao lado do excluir) -> Sempre que eu visitar a páina da web
Se vc perceber o Flex trabalha muito com a URL para alguns de seus Refresh’s, dependendo da aplicação você nem consegue ver o que se passa na URL de tanto parameto que ele joga, enfim isso resolveu o problema. Além lógico de excluir os arquivos temporários.
Você pode forçar com algumas alternativas (no meu caso não precisei mas…)
JavaScript:
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader ("Expires", 0);
JSP:
response.setHeader(”Cache-Control”,”no-cache”); response.setDateHeader (”Expires”, 0);
HTML:
<META HTTP-EQUIV=”Cache-Control” CONTENT=”no-cache”> <META HTTP-EQUIV=”expires” CONTENT=”0″>
PHP:
header(”Cache-Control: no-cache, must-revalidate”); header(”Expires: Mon, 26 Jul 1997 05:00:00 GMT”);
=)
Link para download ou redirecionamento na mesma página Flash/Flex
Filed in ActionScript 3, Flex 3, Javascript, 10/12/2009, 14:13 by HardNo trabalho tivemos algumas dificuldes de abrir um humilde link na mesma página apartir de um SWF!
o navigateToURL(URLRequest, String=null); por algum motivo não abria a página na mesma janela (sim usei o _self).
Não estou dizendo que fiz de tudo dentro das boas práticas, usando as coisas certas, mas lhe digo que o simples navigateToURL() com selt, parent, top, hospedado e não hospedado, interno ou em rede, allowScriptAccess:always ou sameDomain ele não queria ir, deve ser alguma config, então ajeitamos de 2 maneiras:
1ª – ExternalInterface -> Chamando um javascript no HTML em que o SWF esta. (Chris postou no blog dele, olhem la também) caiu no post de POGs kkk.
<script type=”text/javascript”>
function swfURL(param)
{
window.open(param, “_self”);
}
</script>
2ª – Digamos que é a mesma solução da primeira, porem faremos dentro do AS:
//Abre a URL passada na mesma janela da aplicação
private function open():void
{
var url:String = "javascript:void(window.open('http://www.chrisb.com.br/blog/o-pog-nosso-de-cada-dia-18/'))";
void(navigateToURL( new URLRequest( url ), "_self"));
}
Na linha 4 desse código acima, a palavra javascript fala para o SWF embedado procurar funções do javascript na página HTML, o void é justamente para o window.open não retornar nada, somente executar, pode acontecer de você disparar essa função para abrir a URL e ele abrir uma página em branco.
Na linha 5 esse void() é só teste mesmo hehe, ele não influência em nada, até por que o comando navigateToURL() é void, ele executa e não retorna nada. Pode remover ele se quiser rs
FlashVars no Flash
Filed in ActionScript 3, 08/12/2009, 16:35 by HardComo vimos no post do FlashVars no Flex 3, não é tão diferente do flex, então vou pular as lances dos parâmetros e ir direto ao assunto okay, qualquer coisa você pode ver no link acima do flashvars no flex.
//No trace não ira dar certo, por que precisa do carregamento do flashvars do HTML/SWFObject
//Então crio um campo de texto
var verFlashVars:String = flashVars.suaVariavel;
var texto:TextField = new TextField();
texto.autoSize = TextFieldAutoSize.LEFT;
texto.text = ' ';
addChild(texto);
//LoaderInfo recebe a própria informação de carregamento do root atual (no caso o principal né).
//Nessa altura ele ja tem as informações do seu Flashvars = parameters
try {
var flashVars:Object = LoaderInfo(this.root.loaderInfo).parameters;
//Não existe mais aquela coisa de TextField.text += "...";
texto.appendText(flashVars.suaVariavel);
}
//implementação - "suaVariavel" tem que ser o mesmo nome da variavel passado no flashVars do HTML/SWFObject
} catch (e:Error) {
texto.appendText(e);
}
Essa foi rádpida, para melhor aprendizado acompanhe o post do flashvars no flex
JavaScript executando um ActionScript
Filed in Flex 3, Javascript, 27/11/2009, 15:58 by HardPosteriormente estarei postando um exemplo mais completo de toda a classe ExternalInterface(), ao qual é responsável pela integração FlashPlayer / JavaScript.
A pergunta é: Como enviar informações para dentro do FlashPlayer com JavaScript?
A Resposta é: Com ExternalInterface.addCallBack().
sua implementação:
//import import flash.external.Externalnterface; //ExternalInterface trabalha com métodos e atributos státicos ExternalInterface.addCallBack(functionName:String, closure:Funcion);
addCallBack recebe 2 parâmetros:
functionName:String = Coloque entre aspas o nome da função la do JavaScript.
closure:Funcion = Aqui vai o nome da função aqui do Flex (no caso) que sera executada
import flash.external.ExternalInterface;
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
width="500"
height="200"
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
applicationComplete="Main(event)" xmlns:text="flash.text.*">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import flash.external.ExternalInterface;
private function Main(e:FlexEvent):void
{
var debug:String = "";
try
{
ExternalInterface.addCallback("enviaParaFlash", recebeDoJavaScript);
}
catch (error:SecurityError)
{
debug += "Um erro de Segurança ocorreu: " + error.message + "\n";
}
catch (error:Error)
{
debug += "Um erro ocorreu: " + error.message + "\n";
}
trace(debug);
}
private function recebeDoJavaScript(param:String):void
{
Alert.show(param.toString());
}
]]>
</mx:Script>
</mx:Application>
Certio? Ainda não acabamos, ainda tem a parte do JS, então va no seu HTML que tem o embed do FlahPlayer e insira esse javascript no corpo (
) do seu código.
function retornaObjetoFlashPlayer(id)
{
//Se IE
if (navigator.appName.indexOf("Microsoft") != -1)
{
return window[id];
}
else
{
return document[id];
}
}
//Executado pelo flash
function alerta(paramTexto)
{
returnaObjetoFlashPlayer('id_seu_flash').alerta(paramTexto);
}
<input type="text" id="inpAlerta"/>
<input type="button" value="Alertar dentro do FlashPlayer" onclick="alerta(document.getElementById('inpAlerta').value)" />
Estanhou alguma coisa? A Função returnaObjetoFlashPlayer recebe o id como parâmetro, esse id é substituído pelo id do filme do flashplayer. Normalmente esse tipo de código é gerado automaticamente e o id do seu filme é o mesmo que o nome do seu arquivo:
exemplo:
nome do arquivo: “main.swf”
nome do seu id: “main” (normalmente)
Neste caso:
retornaObjetoFlashPlayer('main').alerta(paramTexto);
O JavaScript entende que o Flash embutido na página também se torna um objeto parte da página e assim pode acessa-lo de certa forma, enviar e trazer parâmetros.
função nomeDaFunção1 (parametros)
{
//Mesmo nome a função
id_FlashPlayer.nomeDaFunção1 (parametros)
}
Okay, ficamos nisso hoje, posteriormente postarei sobre toda a Classe ExternalInterface
QueryString no JavaScript
Filed in Javascript, 18/10/2009, 17:25 by Hard
Talvez eu apanhe de algumas pessoas por esta mexendo com javascript he he, mas estou a terminar um pequeno e simples freela de um site, na verdade estou ajudando um amigo com a parte de Javascript/Ajax.
Entenda a Situacao:
Tinhamos a seguinte URL para consumir
www.nomedosite.com/?pagina=fotos&album=Casamento
No caso precisaríamos do valor de album (Casamento) e ele fez o seguinte script:
window.location.search.substring(20);
Que no caso pega apartir da posicao 20 ate o fim da string
Isso funcionou? Sim!
Problema Resolvido? Sim!
Foi à melhor forma de fazer? Não!
Tínhamos tempo para resolver algumas coisas, então depois que finalizamos algumas coisas eu fiquei com isso na cabeça, o maldito substring(20) que ate então eu nunca tinha usado sem passar seu segundo parâmetro.
Foi então que juntando minha vontade de aprender OOP, pensei em fazer um método para eu pegar qualquer QueryString , pois no exemplo acima se tivéssemos qualquer outro parâmetro depois dele já não iria funcionar (esse é o problema de qualquer sistema sem sua fase de TDD).
Já agradeço o Julio Greff que postou sobre métodos estáticos em javascript, eu estava quebrando a cabeça colocando o Método dentro da função xD.
Estou aprendendo a documentar, Na verdade nao estudei ainda isso rs Mas eu vou arrumar Palavra de “Poeta Morto”.
Eu já tinha a lógica toda na cabeça então foi muito simples fazer, olha só:
/**
* URLUtils
* @author Ronaldo Hard - hardinspire.com
*/
function URLUtils()
{
}
/**
* Método Statico para QueryString
* @param passa a String a ser procurada
*/
URLUtils.getParameter = function(queryString)
{
var nothingFound = 0;
var arrParameters = new Array();
arrParameters = window.location.search.split("&");
arrParameters[0] = arrParameters[0].substring(1, arrParameters[0].length)
for( var i in arrParameters )
{
if (arrParameters[i].indexOf(queryString) == 0)
{
var searchParams = arrParameters[i].indexOf("=") + 1;
var cutParam = arrParameters[i].substring(searchParams, arrParameters[i].toString().length);
return new String(cutParam);
}
else
{
nothingFound++;
if ( nothingFound == arrParameters.length)
{
throw new Error("QueryString não encontrada!");
}
}
}
}// JavaScript Document
Salve esse script como URLUtils.js, e qualquer arquivo que quiser usaldo basta usar direto o metodo estatico por exemplo:
//getAlbum recebe o valor do parametro album
var getAlbum = URLUtils.getParameter("album");
Simples assim!
=)
Hitler vai à CFUnited
Filed in ColdFusion, Eu Ri..., 22/09/2009, 11:27 by Hard
O nome dele voces (flexeiros) ja deve saber, Doug McCune esteve no CFUnited falando sobre frameworks opensource, bem ele diz em seu blog que, quem nao estava la talvez nao entenderia o motivo deste video porem eu mesmo ri demais quando vi, do pouco de “leitura basica de ingles” alias, uma das coisas que o McCune citou era um framework de legendas para videos, onde vc poderia ate trazudir as legendas, em breve postarei ele aqui.
Enquanto isso de uma olhada no video, muito bom por sinal… (Abraco Ari uhauhau)
[piada] Porque invejar os mineiros…
Filed in Piadas Nerd, 18/09/2009, 17:25 by HardDurante escavações nos EUA, arqueólogos descobriram, a 100 m de profundidade, vestígios de fios de cobre que datavam do ano 1000. Os americanos concluíram que seus antepassados já dispunham de uma rede telefônica naquela
época
Os argentinos, para não ficarem para trás, escavaram também seu subsolo, encontrando restos de fibras ópticas a 200 m de profundidade. Após minuciosas análises, concluíram que elas tinham 2.000 anos de idade. Os argentinos concluíram, triunfantes, que seus antepassados já dispunham de uma rede digital a base de fibra óptica quando Jesus Nasceu!
Uma semana depois, em BEOZONTE, foi publicado o seguinte anúncio:
“Após escavações arqueológicas no subsolo de:
- Contagem
- Betim
- Barbacena
- Formiga
- Juiz de Fora
- Poços de Caldas
- Itajubá
- São João Del Rey
- Beraba
- Berlândia Araguari
- Divinópolis
- Rio Piracicaba
- Pará de Minas
- Tuiutaba
- Pitangui
- Patos de Minas
- Esmeraldas
- Patrucínio
- Viçosa
- Ponte Nova
- Timóteo
- Inhapim
- Governador Valadares
E diversas outras cidades mineiras, até uma profundidade de 500 metros, os cientistas mineiros não encontraram absolutamente
nada!”
Assim, se conclui que os Mineiros já dispunham, há 5.000 anos, de uma rede de comunicações sem-fio: wireless (por isso se pronuncia ‘uai’reless).
Agora temos motivos de sobra para invejar eles… xD
Snow Leopard está com versão vulnerável do Flash
Filed in Flash, seguranca, 03/09/2009, 15:08 by HardO Snow Leopard já está no mercado, mas a Apple se esqueceu de atualizar o Flash no sistema, colocando os usuários em risco em relação à segurança.
Ou seja, na prática, os usuários que migrarem para o novo sistema operacional da Apple estarão realizando um downgrade do Flash, cuja versão embarcada no Snow Leopard não bloqueia algumas ameaças de segurança.
Isso constitui um problema sério, já que as vulnerabilidades de segurança dos aplicativos da Adobe são frequentemente usadas por hackers para tentar controlar computadores. De acordo o Info World, já que os sistemas operacionais têm ficado mais difíceis de explorar, os cibercriminosos têm se concentrado em seus aplicativos de terceiros.
Nesse sentido, os programas da Adobe são um alvo atraente, já que milhões de computadores ao redor do mundo possuem o Flash Player, assim como Acrobat e Reader.
A Apple não comentou o assunto.
Via Info World
Teste de velocidade de navegadores
Filed in Navegadores, , 15:02 by Hard
Nós publicamos, faz algumas semanas, um comparativo testando a velocidade dos navegadores de nova geração: Safari 4, Chrome 2 e outros. Mas faltava um teste usando a versão final do Firefox 3.5. Graças ao Gustavo do blog OxenTI (boa sacada!), agora não falta mais nada. Quem sai vencedor no teste: depende do que você prioriza num navegador: estabilidade, pouca exigência de recursos, ou nomes compridos. Veja a tabela:

O Gustavo, no seu blog OxenTI, já testou a nova versão final do navegador da Mozilla, lançada ontem. Alguns testes feitos pelo Gustavo são os mesmos realizados pelo Giz americano, e trazem resultados parecidos. O que é muito bom! Fora que qualquer teste que estampe “Internet Explorer FAIL” não pode passar despercebido pelo Giz.

O blog ainda traz um pouco de história sobre a guerra dos navegadores atual e de outrora, comparações entre os navegadores e participação de mercado de cada um deles. Além, é claro, dos testes de performance: velocidade de abertura, consumo de memória, Javascript e Acid Test. E links para baixar os navegadores para Windows, Mac e Linux! Então o que você está esperando? Corra já para o OxenTI! (Valeu Gustavo!)
Texto: Gizmodo
fonte: http://imasters.uol.com.br/artigo/13368/des_de_software/teste_de_velocidade_de_navegadores_ja_inclui_firefox_35_final/
IE8 supera rivais em testes de segurança
Filed in Navegadores, , 14:55 by Hard
De acordo com a NSS Labs, o Internet Explorer 8 superou novamente seus rivais com seus recursos para o bloqueio de malwares, detectando 81% dos sites infectados.
A detecção de sites infectados por malwares melhorou em 17% no IE8 desde março, disse Rick Moy, presidente da NSS Labs.
Enquanto o IE8 bloqueou 8 em cada 10 sites infectados usados pela NSS em seus testes que duraram 12 dias, o Firefox 3.0 detectou apenas 27% deles. O Safari 4.0 e o Google Chrome 2.0 bloquearam apenas 21% e 7% dos sites, respectivamente. O Opera foi o pior de todos, bloqueando apenas 1% dos sites infectados.
A NSS testou cinco navegadores – IE8, Firefox 3.0.11, Safari 4.0.2, Chrome 2.0.0.172.33 e Opera 10 beta – contra mais de 2.100 sites infectados em 69 testes durante 12 dias.
O relatório da NSS Labs com os resultados dos testes pode ser baixado aqui Documento em pdf.

Internet Explorer 8
nota: O bixo e tao pesado que as vezes ele carrega o malware e as vezes nao… Os bixo se cansam!
