Passando um método como parâmetro no flex

Olá a todos, novamente venho mostrar uma dica que poderá ser usada em ocasiões específicas. Quem está acostumado a programar sempre usa metódos ou funções com passagens de parâmetros, objetos, string, int, long e por ai vai. Mas além de parâmetros em alguns casos também seria interessante passar o método todo e não somente um objeto, e isto é possivel no flex com as3.  Abaixo segue o código de exemplo:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 layout="absolute" creationComplete="init();">
  <mx:Script>
    <![CDATA[
      import mx.controls.Alert;

      private function init():void{
        //Passa um metodo como parametro
        recebeMetodo(meuMetodo);
      }

      private function meuMetodo():void{
        Alert.show("Executou meu metodo");
      }

      private function recebeMetodo(fnc:Function):void{
        //Nesta linha e como se estive sendo chamando meuMetodo();
        fnc();
      }
    ]]>
  </mx:Script>
</mx:Application>

No exemplo à cima logo no inicio chamamos o método “recebeMetodo” ele recebe como parâmetro uma Function, no nosso caso foi passo “meuMetodo” que simplemente joga uma mensagem na tela, mais poderia realizar qualquer operação tal com atualizar toda a tela.

Para efeito prático, imagine duas telas onde uma telas precisa chamar o método que esta na outra.

Por hoje e só, até à próxima.


				

				

Programador é Programador, Hype é Hype e Tradição é Tradição.

Qual é o ultimo grito da moda? o que aconteceu no "SPFashionWeekDeTecnologia" da semana passada que deixamos escapar? com qual tecnologia/produto novo fomos bombardeados e não percebemos? qual o último telefone lançado? o último tablet? a última linguagem que surgiu? Quantas perguntas, quantas respostas?

Talvez o número de respostas para estas perguntas seja tão grande que não caiba neste post, e talvez amanhã precisemos de um post novo para respondê-las novamente. É isso que chamamos de "hype", o último grito da moda, segundo o google, e tecnologia é isso, moda, disputa pelo novo, o grande engolindo o pequeno, a todo momento surge uma nova comunidade de relacionamento, um novo tipo de tecnologia que vai mudar o planeta e salvar as baleias, e ser conservador neste mercado é praticamente um crime digno de pena de morte, queima de processador e esvaziamento de pilha!

Ser conservador o suficiente para poder olhar para traz e prever o futuro.
No final de 54 surgiu uma linguagem chamada FORTRAN e, a partir daí, uma infinidade de novas linguagens foram surgindo: ALGOL(1958), COBOL(1959), BASIC(1964), Simula(1964), PASCAL(1970), SmallTalk(1971), C(1971), PostScript(1982), Perl(1987), Python(1991), Ruby(1993), PHP(1995), Java(1995), JavaScript(1995), entre dezenas de outras que não citei aqui.

E o que isto nos diz?

Uma das leituras que podemos fazer de nossa história é que a FORTRAN não trouxe grandes inovações, mas deixou o mundo mais simples de ser compreendido do que na época do ASSEMBLY. Depois, na década de 60, as linguagens mudaram, inovaram e trouxeram um novo conceito, o de linguagem estruturada, aos moldes de C, Pascal e Basic, e o mundo continuou a evoluir. Em 1967, foi apresentada a Simula67, primeira linguagem a implementar o novo conceito de orientação a objetos (OOP). Em 1980, foi lançada a versão SmallTalk80, inovando o conceito de OOP e dando força para esse novo paradigma. Já na década de 90, surgem as linguagens com suporte WEB. O mundo dá uma regredida, PHP/ASP nascem procedurais mas logo evoluem para o conceito OOP, assim como JAVA e outras. Hoje em dia, é altamente desaconselhável aprendermos uma linguagem que não seja OOP, a não ser por questões muito específicas, em casos muito raros.

Eu vi surgirem varios Hypes, puxados por pessoas atrás de fama; linguagens mortas renascerem para morrerem sem o menor sentido de ser, e creio que um programador ou um futuro programador deva fazer algumas reflexões sobre em qual tecnologia investir:

Qual é a história da linguagem que eu quero aprender?

Com qual frequência ela é atualizada?

Ela é OOP?

Qual a produtividade?

Existem Frameworks para ela?

Existe uma comunidade ou há uma empresa  mantendo essa linguagem?

Como é a documentação dela?

Como o mercado remunera os programadores?

Quais softwares foram desenvolvidos usando essa linguagem?

O que estou falando aqui neste artigo tem mais a ver com mercado e investimento do seu valioso tempo. Apenas algumas dicas para avaliar e definir qual caminho você quer que sua carreira percorra. Cuidado com as armadilhas do mercado! Os hypes que surgem simplesmente desaparecem em pouco tempo ou, quando vingam, demoram anos para ganhar força no mercado. 

Um exemplo simples e específico de uma linguagem que está em transformação hoje é o HTML5. Ele não é um milagre, mas vai melhorar muito a maneira como programamos hoje. No entanto, não teremos suporte a ele da forma como gostaríamos até o final do ano e talvez nem no próximo, porque dependemos das novas versões de navegadores e também dos usuários, que precisam atualizar seus navegadores.  Quem quer entrar no mercado agora, tem que dominar XHTML, sem tirar os olhos do HTML5, claro! Mas vejam o I6, quase imortal. A inovação é lenta e isso não é ser conservador; é ser realista e antenado ao futuro próximo.

Não existe milagre, não vai surgir uma nova linguagem, um framework, uma tecnologia mágica que fará o mercado gastar bilhões migrando os seus sistemas em um curto espaço de tempo. Olhe para o passado para prever o futuro e duvide dos milagres.

Microsoft oferece capacitação gratuita em tecnologia para estudantes de 27 cidades brasileiras

Em 2009, o programa de treinamento gratuito Students to Business – S2B  beneficiou 25 mil jovens brasileiros
São Paulo, 02 de março de 2010 – A Microsoft Brasil, em parceria com instituições de ensino, governos e empresas de 13 estados, as inscrições estão abertas desde o dia 01/03  para a sexta edição do programa de capacitação para o mercado de tecnologia – Students to Business – S2B. O objetivo do programa é auxiliar jovens  interessados em seguir carreira na área de tecnologia a conquistar boas oportunidades no mercado. Ao todo, os inscritos poderão receber de 4 a 84 horas de treinamento gratuito em três etapas de aulas, num aumento gradativo de complexidade.

“O setor de tecnologia da informação e comunicação cresce quatro vezes acima do PIB no Brasil. Esse é um dos segmentos que mais emprega no País e essa oferta só deve crescer nos próximos anos”, comenta Amintas Neto, gerente de plataformas acadêmicas da Microsoft. “Encontrar profissionais capacitados para atuar na área ainda é um desafio para as empresas. Por isso a Microsoft investe em preparar jovens apaixonados por tecnologia para ingressar nesse mercado. Nosso objetivo não é treinar os próximos funcionários da Microsoft, mas, sim, os próximos colegas que vão atuar em todo o segmento”, destaca o executivo.

O Students to Business faz parte das iniciativas de Cidadania Corporativa da empresa no país. Os participantes recebem licenças para download gratuito dos softwares utilizados nos treinamentos para dar continuidade prática do conteúdo aprendido utilizando o computador pessoal. A iniciativa também conta com o apoio de empresas que demandam mão de obra especializada e que oferecem oportunidades de emprego ou estágio ao final da capacitação.

Desta vez, o Students to Business vai abranger 27 localidades em 13 estados do Brasil – Amazonas, Bahia, Ceará, Distrito Federal, Espírito Santo, Minas Gerais, Pará, Paraná, Pernambuco, Rio de Janeiro, Rio Grande do Sul, Santa Catarina, São Paulo e Sergipe, e tem como meta capacitar os alunos participantes no uso da tecnologia Microsoft nas áreas de desenvolvimento, infra-estrutura e, em algumas localidades, também em banco de dados (DBAs) e Criação de Web-sites. As inscrições são feitas pelo site: http://proform.msdnbrasil.com.br/PortalS2B/Default.aspx.

As aulas acontecem nas unidades dos Centros de Inovação mantidos pela Microsoft em várias cidades do país e em instituições parceiras.

“Basta ser estudante para participar do Students to Business”, conta Amintas Neto, gerente geral de programas acadêmicos da Microsoft Brasil “Além de capacitar quem já escolheu seguir carreira em tecnologia, essa é uma oportunidade para jovens que têm  interesse pela área, mas ainda não atuaram nesse segmento”.

Realizado no Brasil desde 2007, o Students to Business já capacitou somente em 2009, 25 mil estudantes para o mercado.  “Conseguimos incluir no Students to Business um processo efetivo de geração de empregos. Sempre que finalizamos uma onda de treinamentos, recebemos retorno de diversos estudantes que foram inseridos no mercado” destaca o executivo.

Agenda:
Inscrições para a 6ª onda do Students to Business

Especializações: Infra-estrutura / Desenvolvimento de Sistemas / Banco de dados / Criação de websites
Período: até 16 de março
Inscrições: pelo site www.programaS2B.com.br

Fonte: ITNews

Abraço,

Encontrando domínio do email AS3

Olá a todos!  Por estes dias estive trabalhando com servidores de email, e surgiu a necessidade de buscar o domínio do email, então desenvolvi uma função para realizar este trabalho. Achei interessante postar aqui como uma breve dica espero que seja útil.

private function buscaDominio(email:String):String{
  var array:Array = email.split("@");
  
  if(array[1] != null){
    return array[1]
  }
  else{
    return "";
  }
}

Abraços, e até a próxima.

Web Services com Flex

Olá a todos. Neste post vou fala um pouco sobre umas das formas que o flex usa para comunicação com outras linguagens de programação, os web services. Irei mostrar somente como e feita a chamada pelo flex, usando o objeto WebService para realizar esta operação. Segue o codigo para análise:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
  <mx:Script>
    <![CDATA[
      import mx.controls.Alert;
      import mx.rpc.events.FaultEvent;
      import mx.rpc.events.ResultEvent;
      
      private function clickBotao():void{
        //chamada da operação do web service
        webService.getOperation("OperacaoWebService").send();
      }
      
      private function retornaWebService(evt:ResultEvent):void{
        //O retorno do seu web service deve ser tratado aqui
        trace(evt.result);  
      }
      
      private function erroWebService(erro:FaultEvent):void{
        Alert.show("Ocorreu um erro!");
      }
      
    ]]>
  </mx:Script>
  <mx:Button x="430" y="66" label="Botão" click="clickBotao();"/>
  <mx:WebService id="webService" wsdl="http://meudominio.com.br/MeuWebService.asmx?wsdl">
    <mx:operation name="OperacaoWebService" result="retornaWebService(event)" fault="erroWebService(event)"/> 
  </mx:WebService>
</mx:Application>

Logo a cima temos a classe WebService com uma operação chamada de “OperacaoWebService”, este nome será substituido pelo nome do web service desenvolvido. No exemplo não existe passagem de parâmetros, e o mesmo pode existir retorno ou não.

Neste exemplo é usado um web service asp net mas poderia ser usado um em php, jsp e outros. A implementação do web service não aparece no exemplo, ficando livre para futuras implementações.

Na prática ele servirá para buscar uma lista de objetos, retonar uma string ou mesmo chamar um procedimento simples sem parâmetros.

Tanto o erro quanto o retorno são tratados no objeto operation, e neste objeto também que podemos passar parâmetros caso necessário. Na hora da chamada do web service  basta colocar os dados no send. Segue o exemplo:

webService.getOperation("OperacaoWebService").send(“Nome”, “Endereco”, “CEP”);

Por hoje e só. Ate++

Utilizando C# com MongoDB

Criando uma aplicação em C# com o MongoDB

Nós desenvolvedores de software estamos acostumados a escrever além do código da nossa linguagem de programação preferida e/ou de trabalho, escrever também código SQL para procedures, views, criação de tabelas, etc. Mas… E se o seu banco não precisasse de código SQL? Se ele não tivesse procedures, views, triggers ou quaisquer outros comandos SQL? Difícil de imaginar, não? Pois é o que veremos na prática neste artigo. Read more

Upload de arquivos em Flex

Olá a todos, hoje venho falar um pouco sobre upload de arquivos no flex. O exemplo trata da primeira parte do trabalho, que e a captura do arquivo na maquina do cliente e o envio do arquivo através de uma requisição GET. No flex e necessário que uma outra página capture este arquivo e trate o mesmo, ela pode ser um pagina, jsp, php, aspx, ou alguma outra tecnologia que trabalhe com gerenciamento de arquivos WEB. Então vamos o código

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[

  private var arquivo:FileReference = new FileReference();

  private function onSelect(evt:Event):void {
    txtNomeArquivo.text = arquivo.name;
  }

  private function onUploadIoError(evt:IOErrorEvent):void {
    //Para erros no upload do arquivo tratar aqui.
  }

  private function onUploadSecurityError(evt:SecurityErrorEvent):void {
    //Para erros de segurança tratar aqui.
  }
]]>
</mx:Script>
<mx:Label x="337" y="136" text="Arquivo"/>
<mx:TextInput id="txtNomeArquivo" x="391" y="134" width="322"/>
<mx:Button x="391" y="164" label="Browser">
  <mx:click>
    <![CDATA[
      //Abre o browser para seleção do arquivo desejado.
      arquivo.addEventListener(Event.SELECT, onSelect);
      arquivo.addEventListener(IOErrorEvent.IO_ERROR, onUploadIoError);
      arquivo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onUploadSecurityError);

      var filtros:FileFilter = new FileFilter("Arquivos de Retorno *.txt; *.doc; *.docx; *.xls; *.xlsx",
                                              "*.txt; *.doc; *.docx; *.xls; *.xlsx");
      var array:Array = new Array(filtros);
      arquivo.browse(array);

    ]]>
  </mx:click>
</mx:Button>
<mx:Button x="472" y="164" label="Enviar">
  <mx:click>
    <![CDATA[
      //Envia o arquivo para Upload
       var sendVars:URLVariables = new URLVariables();
      sendVars.action = "upload";
      //aqui no sendVars poder ser passado mais de um variavel. 
      //Ex: sendVars.minhavariavel = "teste";

      //objeto usado para setar a pagina que receberá o arquivo
      var request:URLRequest = new URLRequest();
      request.data = sendVars;

      //e necessario uma pagina para receber o arquivo, ex: .php; .jsp; .aspx.
      //No caso foi usado um pagina de aspx .net.
      //A pagina deve receber o arquivo e tratá-lo.
      request.url = "http://meudominio.com.br/PaginaUpload.ashx";
      request.method = URLRequestMethod.GET; //requisição do tipo get

      //Aqui o objeto FileReference "arquivo" envia o arquivo que foi carregado 
                //com o nome de "NomeArquivo"
      //A pagina que reberá o arquivo deve este mesmo nome para manipula-lo
      arquivo.upload(request, "NomeArquivo");
    ]]>
  </mx:click>
</mx:Button>
</mx:Application>

No caso o trabalho de tramento do arquivo pode ser feito em uma tecnlogia de sua escolha, mas isto e tema para um outro post, por enquanto é só.

Ate++. Abraço a todos.

Customizando o HttpModule no Asp.Net

Olá, neste artigo iremos ver como criar um módulo HTTP (httpmodule) customizado no asp.net. O pipeline HTTP é uma série de extensões de objetos que são iniciados pelo Asp.Net runtime no momento de processar uma solicitação o HTTP Handlers e o HTTP Modules são componentes .Net que servem como pontos principais de extensibilidade dos pipelines.

Bom todo módulo deve herdar da Interface IHttpModule que se encontra no namespace System.Web, por isso iremos seguir os seguintes passos:

1-) Crie um projeto do tipo ClassLibrary chamado Module.
2-) Adicione a referência System.Web.
3-) Exclua o arquivo class1.cs do seu projeto Module e crie uma nova classe com o nome de ModuleCustom, nesta classe peça para herdar da interface IHttModule.

public class ModuleCustom : IHttpModule

 

4-) Clique na interface e peça para implementar os métodos da mesma, repare que ele irá implementar o método Init e Dispose. Perceba que no método Init estamos recebendo como parâmetro um objeto do tipo HttpApplication, este objeto é passado automaticamente pelo runtime para o Module HTTP e é nele que iremos personalizar as ações (eventos) .

Quais eventos são e o que fazem os eventos do HttpApplication ?

Segue abaixo uma lista dos eventos e a respectiva descrição:

AcquireRequestState: chame este evento para permitir que o módulo obtenha ou crie o estado (por exemplo, a sessão) da solicitação.

AuthenticateRequest: chame este evento quando um módulo de segurança precisar autenticar o usuário antes que ele processe a solicitação.

AuthorizeRequest: chame este evento através de um módulo de segurança quando a solicitação precisar ser autorizada. Chamado após autenticação.

BeginRequest: chame este evento para notificar um módulo de que a nova solicitação está começando.

Disposed: chame este evento para notificar o módulo de que o aplicativo está sendo encerrado por algum motivo. Permite que o módulo execute uma limpeza interna.

EndRequest: chame este evento para notificar o módulo de que a solicitação está terminando.

Error: chame este evento para notificar o módulo de que ocorreu um erro durante o processamento da solicitação.

PostRequestHandlerExecute: chame este evento para notificar o módulo de que o identificador terminou o processamento da solicitação.

PreRequestHandlerExecute: chame este evento para notificar o módulo de que identificador da solicitação está prestes a ser chamado.

PreSendRequestContent: chame este evento para notificar o módulo de que o conteúdo está prestes a ser enviado ao cliente.

PreSendRequestHeaders: chame este evento para notificar o módulo de que os cabeçalhos HTTP estão prestes a serem enviados ao cliente.

ReleaseRequestState: chame este evento para permitir que o módulo libere o estado, pois o identificador terminou o processamento da solicitação.

ResolveRequestCache: chame este evento após a autenticação. Os módulos de cache usam este evento para determinar se a solicitação deve ser processada pelo cache ou por um identificador.

 UpdateRequestCache: chame este evento após receber uma resposta do identificador. Os módulos de cache devem atualizar o cache com a resposta

 

5-) Para nosso exemplo iremos utilizar o evento BeginRequest, por isso iremos criar um evento dentro de nossa classe e posteriormente associaremos este evento ao evento do HttpApplication.

namespace Module

{

    public class ModuleCustom : IHttpModule

    {

        private string Inicio;

        #region IHttpModule Members

 

        public void Dispose()

        {

            throw new NotImplementedException();

        }

 

        public void Init(HttpApplication context)

        {

            context.BeginRequest += new EventHandler(OnBeginRequestCustom);

        }

 

        protected void OnBeginRequestCustom(object o, EventArgs args)

        {

            HttpApplication app = o as HttpApplication;

            Inicio = string.Format(“Hello: O BeginRequest começou a ser executado em {0}”, DateTime.Now);

            app.Context.Response.Write(Inicio);

        }

 

        #endregion

    }

 

}

 

 

Note que no exemplo acima, criamos um evento customizado chamado OnBeginRequestCustom e este evento foi associado ao HttpApplication através do EventHandler. Dentro do nosso BeginRequest customizando, estamos pegando o valor de inicio da requisição.

6-) Compile o projeto, copie a DLL para o Bin do seu projeto Web ou para o Gac do Servidor.

7-) Para finalizar no web.config da sua aplicação altere a referência do httpmodule, neste momento iremos fazer referência a nossa dll.

    <configuration>

      <system.web>

        <httpModules>

          <add name=Module type=Module.ModuleCustom, Module />

        </httpModules>

      </system.web>

    </configuration>

 

 

Nota: No caso da dll estar no gac é necessário referenciar no type o public key token.

8-) Agora basta testar o seu projeto.

 

Espero que este post seja útil.

 

Abraço,

 

Nelson Borges

Novo projeto do CodePlex facilita desenvolvimentos PHP

Você faz desenvolvimentos em PHP e mantém dados no Microsoft SQL Server? Então esse novo aplicativo seguramente vai facilitar a sua vida. Trata-se de um projeto de código aberto e hospedado no CodePlex, que ajudará desenvolvedores PHP a criarem um aplicativo CRUD (Create, Read, Update, Delete) simples, capaz de rodar tanto no Microsoft SQL Server, quanto no SQL Azure e no Windows Azure Storage.

O aplicativo pode ser facilmente instalado no Windows e suporta navegação, paginação, busca e customização de dados através de um simples CSS.

E o melhor, tudo o que você precisa é de um servidor PHP, uma conexão à internet e o SQL Server 2005 ou superior. Para saber mais detalhes sobre o novo aplicativo e sobre como utilizá-lo em seus desenvolvimentos PHP, visite o blog Interoperability@Microsoft.

 

Fonte: IT News

Feliz Natal e um feliz 2010.

Bom pessoal, para quem acompanha o DevFranca nesta semana e na próxima estamos dedicados a familia e amigos, por isso creio que não haverá novos artigos neste período .Desejo a todos um feliz Natal e um feliz 2010, para finalizar deixo este texto que encontrei no Arnaldo Jabor, um abraço a todos:
 
O grande barato da vida é olhar para trás e sentir orgulho. É viver cada momento e construir a felicidade aqui e agora. Claro que a vida prega peças. O bolo não cresce, o pneu fura, chove demais, perdemos pessoas que amamos… Mas, pensa só:
Tem graça viver sem rir de gargalhar, pelo menos uma vez ao dia? Tem sentido estragar o dia por causa de uma discussão na ida pro trabalho?
Eu quero viver bem…E você? 2009 foi um ano cheio de coisas boas, mas também de problemas e desilusões, tristezas e perdas, reencontros…
Normal…
2010 não vai ser diferente. Muda o século, o milênio muda, mas o Homem é cheio de imperfeições, a natureza tem sua personalidade que nem sempre é a que a gente deseja, mas, e aí? Fazer o quê? Acabar com seu dia? Com seu bom humor? Com sua esperança?
O que eu desejo pra todos nós é sabedoria. E que todos nós saibamos transformar tudo em uma boa experiência. O nosso desejo não se realizou?  Beleza…Não estava na hora, não deveria ser a melhor coisa para esse momento (me lembro sempre de uma frase que ouvi e adoro: ‘cuidado com seus sonhos, desejos, eles podem se tornar realidade’).
Chorar de dor, de solidão, de tristeza, faz parte do ser humano…Mas,se a gente se entender e permitir olhar o outro e o mundo com generosidade,as coisas ficam diferentes. Desejo para todo mundo esse olhar especial!
2010 pode ser um ano especial, se nosso olhar for diferente.
Pode ser muito legal, se entendermos nossas fragilidades e egoísmos e dermos a volta nisso. Somos fracos, mas podemos melhorar. Somos egoístas, mas podemos entender o outro.
2010 pode ser o máximo, maravilhoso, lindo, especial!
Depende de mim…
De você. Pode ser…E que seja!’
(Arnaldo Jabor)
Abraço,

Nelson Borges