APIs do Google

por Fernando D'Angelo 27. janeiro 2011 17:20

Hoje recebi um link interessante de um de nossos gerentes, o Fernando Gomes.

Se trata de uma lista de todas as APIs do Google. O interessante é que a tabela é uma alusão à tabela periódica, lá da química, e divide as APIs por temas.

Muito interessante e é bom ter sempre a mão.

 

http://code.google.com/intl/pt-BR/more/table/

 

Abs,

 

Fernando D'Angelo

 

 

Tags: ,

API | Google | Programação



Alteração dinâmica de MasterPages

por Fernando D'Angelo 8. abril 2010 08:53

Seguindo no assunto HTTP MODULES, aqui vai uma dica muito importante.

Em um projeto que já estava no ar tivemos a necessidade de personalizar as páginas do site. Essa personalização seria efetuada exclusivamente nos itens de suporte do site (topo, rodapé, menu, breadcrumbs, ...). Todos esses itens se encontravam em uma MasterPage que estava aplicada ao site inteiro. 

A idéia que apareceu então foi de fazer uma nova MasterPage personalizada e alterá-la dinamicamente. Para isso, seria necessário acessar o método Page_PreInit das páginas ASPX afetadas e inserir um código que fizesse essa alteração dinamicamente. No entanto, o site conta com algumas centenas de páginas e não queríamos ter o trabalho de alterar todas as páginas do site e subir todo o site novamente para o ar, o que nos obrigaria a testá-lo novamente.

O que foi feito então? Utilizamos um HTTP MODULE que acopla um método novo ao evento Page_PreInit das páginas. O roteiro seguido foi bem parecido com o utilizado no exemplo do POST Autenticando Usuários com HTTP MODULE . Portanto, não vou reescrever os passos para criar o HTTP MODULE. Acessem este POST e terão todo o passo a passo. 

Abaixo, segue o código da classe MasterPageModule .cs , que é a base do HTTP MODULE:

 

------------------------------------------------------------------------

 

using System;

using System.Web;

using System.Web.UI;

 

public class MasterPageModule : IHttpModule

{   

    public void Init(HttpApplication context)

    {

        context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);

    }

 

    void context_PreRequestHandlerExecute(object sender, EventArgs e)

    {

        Page page = HttpContext.Current.CurrentHandler as Page;

        if (page != null)

        {

             //o codigo abaixo adiciona o método page_alterarMasterPage ao evento PreInit da Página
             //com isso, esse método será executado juntamente com o método Page_PreInit de todas as Páginas

             page.PreInit += new EventHandler(page_alterarMasterPage);

        }

    }

 

    void page_alterarMasterPage(object sender, EventArgs e)

    {
        //o código abaixo alterar a MasterPage da página ASPX para masterPagePersonalizada.master

        Page page = sender as Page;

        page.MasterPageFile = "masterPagePersonalizada.master";

    }

 

    public void Dispose()

    {

    }

}

------------------------------------------------------------------------------------------------

 

 

Abraços e até a próxima

Fernando D'Angelo

 

 

Tags:

API | Programação



Autenticação através de HTTP Modules

por Fernando D'Angelo 31. março 2010 22:12

Em um projeto desenvolvido recentemente foi necessário desenvolvermos uma área restrita onde somente usuários logados no sistema poderiam navegar. 

Poderíamos ter usado a simples solução de colocar o código que verifica se o usuário está logado na Master Page. Normalmente no método Page_Load da Master Page. No entanto, o método Page Load é executado após o método Page Load da página principal (página ASPX), e por isso, todo o código que se encontra neste último é executado antes de verificar a autenticação do usuário. Este cenário pode gerar diversos problemas.

Esse cenário pode ser resolvido de diversas formas, mas a primeira que ocorre em nossas mentes é: Coloca o código de verificação em um UserControl (.ascx) e chama ele em todas as páginas do site. E a técnica realmente funciona. Mas... sim... é necessário alterar todas as páginas do site e publicar novamente estas páginas. Isto implica muitas vezes em novos testes e homologação por parte do cliente.

Uma saída mais elegante e rápida é utilizar um HTTP MODULE para implementar esta verificação. Parece algo complexo de se fazer, mas não é. Basta entender o que é um HTTP MODULE e como ele funciona. O roteiro segue abaixo, com uma pequena explicação e um exemplo simples:

Um HTTP MODULE é, resumindo, uma classe (compilada em uma dll) que contém uma estrutura específica para HTTP MODULE e métodos comuns, mas que serão acionados juntamente com algum evento de página. Para tanto, essa classe deve ser cadastrada no WEB.CONFIG.

Segue exemplo:

1) Desenvolva a classe e o método que faz o que você deseja. Abaixo, uma classe que faz uma verificação simples de autenticação de usuário:

 

----------------------------------------- CLASSE QUE SERÁ UTILIZADA PARA VERIFICAR A AUTENTICAÇÃO DO USUÁRIO----------------------------------

 

using System;
using System.Web;
using System.Web.UI;
using System.Web.Security;

public class AutenticacaoModule : IHttpModule
{   

    public void Init(HttpApplication context)
    {
        context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
    }

 

    void context_PreRequestHandlerExecute(object sender, EventArgs e)
    {
        Page page = HttpContext.Current.CurrentHandler as Page;

        if (page != null)

        {
          //abaixo, você define qual método da classe será executado em qual evento
          // neste caso, o método page_AutenticarUsuario será executado no evento PreInit da página, logo após a execução do método Page_PreInit.
          page.PreInit += new EventHandler(page_AutenticarUsuario);
        }

    }

    void page_AutenticarUsuario(object sender, EventArgs e)
    {
        Page page = sender as Page;

        if (page != null )
        {

            if ((!page.User.Identity.IsAuthenticated) || (HttpContext.Current.Session["usuario"] == null))

            {

                FormsAuthentication.SignOut();

                FormsAuthentication.RedirectToLoginPage();

                HttpContext.Current.Response.End();

            }

        }

    }

 

    public void Dispose()

    {

 

    }

}

-------------------------------------FIM DA CLASSE---------------------------------------------

 

2) Compilando a classe: 

Pode-se compilar a classe pelo próprio Visual Studio ou, para quem prefere, a versão via Prompt de Comando. Para tanto, a partir do diretório onde está a classe a ser compilada, digite csc /t:library classe.cs .

OBS: O arquivo csc deve estar configurado no PATH das variáveis de Ambiente

 

3) No Web.Config, localize a TAG httpModules e insira a seguinte linha:

 

<add name="MeuModuloDeAutenticacao" type="AutenticacaoModule"/>

onde em NAME coloca-se um nome que você queira e em TYPE coloca-se o tipo da classe.

 

PRONTO!!! Está feito um HTTP Module. 

Entre outras aplicações, utilizamos também HTTP MODULE para fazer alteração dinâmica de Master Pages, entre outras. Em outro POST darei um exemplo deste.

 

Até a próxima.

 

Fernando D'Angelo


 

 

 


 

 

Tags: ,

API | Programação



Compressão de páginas dinâmicas .ASPX

por Fernando D'Angelo 18. março 2010 09:57

Muitas vezes nos deparamos com páginas dinâmicas que possuem grandes listagens e consequentemente se tornam pesadas. Esse cenário é ideal para que apareçam reclamações dos clientes informando que determinada página está lenta de ser visualizada e nós desenvolvedores nos vimos em um beco sem saída, pois o acesso à base de dados está rápida, a diagramação da página está a mais enxuta possível e o cliente continua reclamando de um problema inerente ao conteúdo da página.

Uma saída interessante é utilizar compactação dinâmica de conteúdo. Atualmente todos os browsers são compatíveis com compactação GZIP e portanto, os servidores WEB podem enviar conteúdo compactado que o browser fará a descompactação automaticamente, de forma transparente ao usuário.

Mas conteúdo dinâmico precisa ser compactado dinamicamente, e para tanto é necessário desenvolver um módulo HTTP que faça este papel.

Graças ao mundo colaborativo dos desenvolvedores WEB, existe um componente deste pronto no mercado. E o melhor é que é gratuito e código fonte aberto (sob a licença The Code Project Open Licence). Se trata de um componente desenvolvido por Derik C., e é um excelente componente. Ele compacta páginas dinâmicas (.aspx), arquivos .js e .css. O componente é muito bom e o utilizo em diversos sites onde o cenário acima é apresentado.

Sua utilização é simples, e não requer alterações no site. Apenas suba os arquivos dll para a pasta BIN e faça algumas alterações no WEB.CONFIG.

A compactação das páginas gira em torno dos 90%. Ou seja, uma listagem de 2Mb se torna um arquivo Gzipado de 180Kb aproximadamente, aumentando em muito a velocidade de transferência e consequentemente de abertura da página no Browser.

Maiores informações sobre este componente, download e orientações de uso podem ser encontrados na página oficial deste componente: http://www.codeproject.com/KB/aspnet/httpcompression.aspx 

 

Abs e até a próxima.

 

Fernando D'Angelo

 

Tags: , , , ,

API | Programação



API AJAX de pesquisa do Google

por Thiago Nishio 24. dezembro 2009 18:00

Fala, Galera!

O que é a API AJAX de pesquisa do Google? 

 

A API AJAX de pesquisa do Google permite usar JavaScript para colocar a Pesquisa do Google nas suas páginas web. Você pode incorporar uma caixa de pesquisa simples e dinâmica, e exibir resultados de pesquisa em suas próprias páginas web.

Mais informações em http://code.google.com/intl/pt-BR/apis/ajaxsearch/

Abraços!

Tags: , , , ,

API | Google | Programação




Calendário

<<  junho 2013  >>
seteququsedo
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Ver os posts em um calendário maior

Oportunidades


Para divulgar oportunidades aqui, entre em contato conosco enviando a descrição completa da vaga + uma data de validade para cada uma delas.

* As vagas divulgadas neste espaço são de inteira responsabilidade das empresas anunciantes.

Assine Nossa Newsletter

Quero ser notificado quando um novo Post for publicado