Marcelo Ramos

Desenvolvimento em .NET, Banco de Dados e Tecnologia em Geral

Highlighting Map Areas

Para dar um efeito de brilho ao passar o mouse sobre Map Areas, você pode usar a biblioteca Mapper.js
A implementação é bem simples e com pouquissimo codigo já temos um exemplo funcional

http://www.netzgesta.de/mapper/
http://ajaxian.com/archives/mapperjs-10-highlighting-for-imagemaps

Um exemplo da utilidade é usar em conjunto com o Chart Controls, para destacar cada area do gráfico ao passarmos ou mouse sobre elas

[]s

Posted: ago 02 2009, 15:08 by marcelo | Comentários (30) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Gráficos no ASP.NET com Microsoft Chart Controls

O uso de gráficos em aplicações web se tornou cada vez mais comum. Temos várias opções pagas no mercado, e desde o fim do ano passado a Microsoft disponibilizou seu recurso de representação gráfica para WindowsForms e WebForms, o Microsoft Chart Controls. A primeira e mais óbvia vantagem é o custo zero, o Chart Controls é de graça e pode ser baixado nos links abaixo :

Microsoft Chart Controls for Microsoft .NET Framework 3.5
http://www.microsoft.com/downloads/details.aspx?FamilyId=130F7986-BF49-4FE5-9CA8-910AE6EA442C&displaylang=en

Microsoft Chart Controls Add-on for Microsoft Visual Studio 2008
http://www.microsoft.com/downloads/details.aspx?familyid=1D69CE13-E1E5-4315-825C-F14D33A303E9&displaylang=en

A outra vantagem que vejo é a simplicidade de uso, depois de instalado, basta arrastá-lo da Toolbox do Visual Studio e com poucas linhas de código já se tem resultado.

Vamos ver um simples exemplo, representando vendedores e o total de vendas de cada um deles.

Abra o Visual Studio 2008 ou o Visual Web Developer 2008 e crie um novo site.
Localize na Toolbox, aba Data, o controle Chart e arraste para seu arquivo default.aspx.



Chart Control na aba Data da Toolbox.
 

Não vou entrar em detalhes de layout, essa parte pode ser facilmente configurada nas propriedades do controle. Salvo isso, o codigo em seu aspx deve ficar similar a esse :

<asp:Chart ID="Chart1" runat="server"
    
BackColor="128, 128, 255"
    
BackGradientStyle="TopBottom"
     BackImageWrapMode="Scaled"
    
BackSecondaryColor="192, 192, 255"
     BorderlineColor="255, 192, 128"
     Width="539px" >

     <BorderSkin                  
     
BackGradientStyle="TopBottom" 
      
BackImageTransparentColor="192, 255, 192" 
      SkinStyle="Raised" />
           

     <
series>

    
<asp:Series Name="Series1">
               
    
</asp:Series>
           
    
</series>


     <
chartareas>
    
    
<asp:ChartArea
     
BackColor="128, 128, 255"
      BackGradientStyle="TopBottom"
                 
     
Name="ChartArea1">
                 
    
</asp:ChartArea>
    
</chartareas>

</
asp:Chart>   

No code-behind ( default.aspx.cs ), vamos codificar o evento Load para criar os dados e vincular ao nosso controle de gráfico.

protected void Page_Load(object sender, EventArgs e){

// Criando dois arrays, um com os nomes dos vendedores, e
// Outro com os valores das vendas
string[] Vendedores = { "João", "José", "Antônio", "Maria" };
double[] Totais = { 1000, 2300, 1220.33, 2222.40 }; 

// Adicionando Título
Chart1.Titles.Add("Relatório de Vendas"); 

// Setando tipo de Grafico ( Colunas Verticais )
Chart1.Series[0].ChartType = SeriesChartType.Column; 

// Vinculando os arrays ao Controle para que ele gere o
// Gráfico
Chart1.Series[0].Points.DataBindXY(Vendedores, Totais);           

// Mostrando os Gráficos com valores
Chart1.Series[0].IsValueShownAsLabel = true;

foreach (Series s in Chart1.Series)
{
 for (int i = 0; i < s.Points.Count; i++)     
 {           
   // Mostra o valor como tooltip
           
  
s.Points[i].ToolTip = "#VAL{C}";
      
 
}
}

}


Compilando nossa aplicação e rodando devemos ter
o resultado da imagem abaixo :





No próximo Post de Chart Controls vamos falar sobre o efeito HighLight, a mudança de cor ao passar o mouse sobre áreas do nosso gráfico.
[]s

Mais exemplos :  

Samples Environment for Microsoft Chart Controls
http://code.msdn.microsoft.com/mschart

Posted: jun 27 2009, 21:36 by marcelo | Comentários (48) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: ASP.NET | C# | Dicas de Tecnologia

Regular Expressions - Retirando Tags HTML de uma String

Como fazer para limpar as tags HTML da string abaixo de modo que só fiquemos com o texto ?

"<span><b>ASP.NET</b></span>"

Segue um exemplo usando Regular Expressions para retornar o Texto sem as tags HTML, no nosso caso, a palavra ASP.NET e jogar seu valor para a variável TextoPuro :

string
Html = "<span><b>ASP.NET</b></span>";
string TextoPuro = Regex.Replace( Html, @"<(.|\n)*?>", string.Empty );


A Classe Regex faz parte do namespace
System.Text.RegularExpressions


Aguardem os próximos Posts de Regular Expressions
[]s



Regular Expression Library
http://regexlib.com/

Posted: jun 21 2009, 02:07 by marcelo | Comentários (23) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: C# | Dicas de Tecnologia

Implementando Log de Acessos usando Herança com ASP.NET e C#

Além do site estar bonito e funcional, é muito importante que saibamos o quanto ele está sendo acessado.
O intuito desse Post é mostrar como fazer um log de acessos bem simples, e de forma bem rápida, usando Herança.

1° Passo : Criar a tabela que gravará os dados de acesso

Vamos chamá-la de LOG_ACESSOS e armazenar a DATA e alguns campos retornados pela coleção Request.ServerVariables.

A coleção ServerVariables contém informações do cliente e do servidor. Estas variáveis são criadas quando uma nova página é requisitada.
O uso das ServerVariables é bem útil caso necessitemos de informações do servidor ou do navegador do cliente.
E são esses dados que iremos gravar em nosso Log.

As variáveis da coleção você confere na lista abaixo :


ALL_HTTP - Lista informações tais como: host origem, página de origem, caracteristicas do navegador cliente, entre outras.
ALL_RAW
- Retorna todas as informações enviadas por cabeçalho HTTP da página em seu estado original.
APPL_MD_PATH
- Devolve o caminho lógico da página (path do metabase).
APPL_PHYSICAL_PATH
- Caminho físico do arquivo no disco.
AUTH_TYPE
- Método de autenticação utilizado pelo servidor para validar usuários que solicitam um script.
AUTH_USER
- Nome de usuário fornecido ao servidor em caso de não permitir acesso anônimo ao diretório.
AUTH_PASSWORD
- Senha referente ao usuário logado.
CERT_COOKIE - ID
do certificado digital do cliente.
CERT_FLAGS
- Valor de dois bits: bit 0 igual a 1 indica se o certificado do cliente está presente, bit 1 igual a 1,
indica que a autoridade de certificação do certificado do cliente é inválida.
CERT_ISSUER
- Campo Issuer do certificado do cliente (O=MS, OU=IAS, CN=usuário, C=USA).
CERT_KEYSIZE
- Número de bits na chave de conexão SSL.
CERT_SECRETKEYSIZE
- Número de bits na chave do "Server certificate private"
CERT_SERIALNUMBER
- Campo Serial Number do certificado digital do cliente.
CERT_SERVER_ISSUER
- Campo Issuer do certificado do servidor.
CERT_SERVER_SUBJECT
- Campo Subject do certificado SSL do servidor.
CERT_SUBJECT
- Campo Subject do certificado do cliente.
CONTENT_LENGTH
- Tamanho em bytes, do conteúdo de uma requisição request ao servidor.
CONTENT_TYPE
- Tipo de requisição enviada ao servidor pelo cliente.
GATEWAY_INTERFACE
- Tipo de interface CGI usada no servidor web para manipular a solicitação (request).
HTTP_NOMEHEADER
- Valor armazenado no header especificado. Podemos destacar os mais comuns: HTTP_ACCEPT, HTTP_ACCEPT_ENCODING
HTTPS
- Retorna à uma solicitação request, dizendo se o canal é seguro (ON) ou não seguro (OFF).
HTTPS_KEYSIZE
- Número de bits na chave de conexão Secure Sockets Layer - SSL.
HTTPS_SECRETKEYSIZE
- Número de bits na chaver do "server certificate private".
HTTPS_SERVER_ISSUER
- Campo Issuer do certificado do servidor.
HTTPS_SERVER_SUBJECT
- Campo subject do certificado do servidor.
INSTANCE_ID
- ID, em formato texto, para a instância do Internet Information Server (IIS).
INSTANCE_META_PATH - Path do metabase para a instância do Internet Information Server (IIS) que responde à solicitação (request).
LOCAL_ADDR
- Retorna o endereço lógico do servidor onde foi feito a requisição
LOGON_USER
- Conta do usuário usada para efetuar o logon no Windows.
PATH_INFO
- Caminho virtual do arquivo que realizou a requisição, apartir da raiz do servidor.
PATH_TRANSLATED
- Versão da variável "PATH_INFO" transformado em path físico.
QUERY_STRING
- Retorna as variáveis passadas por cabeçalho HTTP à uma página via QueryString.
REMOTE_ADDR
- Retorna endereço IP da máquina cliente que requisitou algo ao servidor.
REMOTE_HOST
- Nome do host que requisitou algo ao servidor.
REMOTE_USER
- Nome da máquina que solicitou o arquivo asp ao servidor. Disponível somente se disponível.
REQUEST_METHOD
- Método usado pela requisição ao servidor (GET ou POST)
SCRIPT_NAME
- Path virtual do arquivo requisitado ao servidor.
SERVER_NAME
- Nome do servidor onde foi realizada a requisição (pode ser retornado o endereço IP, DNS alias ou nome do host).
SERVER_PORT
- Retorna o número da porta onde foi realizada a requisição ao servidor.
SERVER_PORT_SECURE
- Diz se a porta onde é recebida as solicitações pelo servidor é segura (1) ou não segura (0).
SERVER_PROTOCOL - Retorna nome e versão respectivamente do protocolo usado pelo servidor WEB para interpretar a solicitação


Para fins didáticos, vamos escolher apenas algumas dessas variáveis em nossa tabela e além disso armazenar um ID como chave e a DATA da inserção

dos dados

CREATE
TABLE DBO.LOG_ACESSOS
(
       ID                  INT IDENTITY(1,1) NOT NULL,
       DATA                DATETIME NOT NULL,
       QUERY_STRING        VARCHAR(MAX) NULL,
       REMOTE_ADDR         VARCHAR(MAX) NULL,
       REMOTE_HOST         VARCHAR(MAX) NULL,
       LOGON_USER          VARCHAR(MAX) NULL
)
GO

ALTER
TABLE DBO.LOG_ACESSOS ADD CONSTRAINT [PK_LOG_ACESSOS] PRIMARY KEY (ID)
GO

Com nossa tabela criada, faremos uma procedure de INSERT.

CREATE PROCEDURE DBO.INSERT_LOG_ACESSOS
(
       @QUERY_STRING VARCHAR(MAX) = NULL,
       @REMOTE_ADDR  VARCHAR(MAX) = NULL,
       @REMOTE_HOST  VARCHAR(MAX) = NULL,
       @LOGON_USER   VARCHAR(MAX) = NULL
)
AS
BEGIN
      
INSERT INTO DBO.LOG_ACESSOS      
(      
DATA               
,      
QUERY_STRING
,      
REMOTE_ADDR        
,      
REMOTE_HOST        
,      
LOGON_USER                       
)      
VALUES      
(      
GETDATE()           ,      
@QUERY_STRING
,      
@REMOTE_ADDR
,      
@REMOTE_HOST
,      
@LOGON_USER               
)
END

2º Passo :  Criar uma classe LogAcessos com um método que executa nossa procedure de INSERT.

public class LogAcessos   
{       

// Pega String de Conexão do Web.Config       
private readonly string ConnectionString
= System.Web.Configuration.
WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;        

// Construtor Padrão
       
public LogAcessos()       
{ }        

// Metodo que Grava os Acessos       
public void GravaAcesso()       
{           
using (SqlConnection conexao = new SqlConnection(this.ConnectionString))           
{               
SqlCommand comando = new SqlCommand();                
comando.Connection = conexao;               
comando.CommandType = System.Data.
CommandType.StoredProcedure;               
comando.CommandText =
"INSERT_LOG_ACESSOS"               

comando.Parameters.AddWithValue("@QUERY_STRING",
HttpContext.Current.Request.ServerVariables["QUERY_STRING"].ToString() );               

comando.Parameters.AddWithValue(
"@REMOTE_ADDR",
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString() );               

comando.Parameters.AddWithValue(
"@REMOTE_HOST",
HttpContext.Current.Request.ServerVariables["REMOTE_HOST"].ToString() );               

comando.Parameters.AddWithValue(
"@LOGON_USER",
HttpContext.Current.Request.ServerVariables["LOGON_USER"].ToString() );               

try {                   
conexao.Open();                   
int i = comando.ExecuteNonQuery();                   
comando.Dispose();               
}               
catch (SqlException sql)               
{                    
// trata Exception SQL               
}               
catch (Exception ex)               
{                   
// trata Exception Genérica               
}               
finally {                   
if (conexao.State == System.Data.ConnectionState.Open)                   
{                       
conexao.Close();                   
}               
}           
}       
}   
}


3º Passo : Criar classe herdando de System.UI.Page, sobrescrever o OnLoad,
instanciar nossa classe LogAcessos e executar o método GravaAcesso()
 

public class BaseForm : System.Web.UI.Page   
{       
protected override void OnLoad(EventArgs e)       
{           
LogAcessos log = new LogAcessos();           
log.GravaAcesso();           
log =
null;            
base.OnLoad(e);       
}   
}


4º Passo : Ao criar as páginas, fazer com que herdem da nossa classe BaseForm

public partial class _Default : BaseForm    
{       
protected void Page_Load(object sender, EventArgs e)       
{                   
}   
}


Dessa forma, sempre que suas páginas carregarem, elas executarão o método
GravaAcesso, gravando na nossa tabela LOG_ACESSOS os dados que definimos


Espero que seja útil
[]s


Classe SqlConnection

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.aspx

Classe SqlCommand
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.aspx

Request.ServerVariables Collection
http://msdn.microsoft.com/en-us/library/ms525396.aspx

Inheritance (C# Programming Guide)
http://msdn.microsoft.com/en-us/library/ms173149.aspx

Posted: jun 09 2009, 22:42 by marcelo | Comentários (8) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: ASP.NET | C# | SQL

Desenvolvedor Cinco Estrelas

A Microsoft atualizou o programa Desenvolvedor Cinco Estrelas. 
Veja o conteúdo de cada Estrela :

1ª Estrela:
Introdução ao desenvolvimento em Microsoft .NET

Estrela:
Desenvolvimento de aplicações Web com ASP.Net;
Desenvolvimento de aplicações                 
Windows com Winforms

Estrela:
Acesso a dados avançados;
Web Services;
Segurança no desenvolvimento

Estrela:
Desenvolvimento de aplicações para Windows Vista;
Microsoft .NET Framework 3.0;                 
Microsoft InfoCard: Windows Presentation Foundation (WPF)

Apenas o conteudo da Estrela não foi detalhado, constando apenas que será uma surpresa.

Acesse http://www.mslatam.com/brasil/dce/

[]s

 

 

Posted: abr 20 2009, 13:19 by marcelo | Comentários (3) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: C# | Dicas de Tecnologia