Mostrando postagens com marcador Asp. Mostrar todas as postagens
Mostrando postagens com marcador Asp. Mostrar todas as postagens

09 fevereiro 2011

Como identificar um navegador de celular (mobile) [Update]



Tenho notado que muitas pessoas tem procurado este artigo para implementações em sistemas, vou compartilhar a atualização que fiz nos ultimos tempos na variavel "WapBrowsers"



[...]
WapBrowsers = array("wapbrowser","up.browser","up/4","mib","cellphone","go.web","nokia","panasonic","wap","wml-browser","wml","iemobile","iphone","sony","samsung","symbian","mini")
[...]


Para ler o antigo artigo na integra, clique aqui.

27 fevereiro 2010

Bom galera, faz um tempo que não posto nada sobre programação, então resolvi postar um script que fiz recentemente para replicação de arquivos, usando o VBS.

O objetivo neste script é mapear algumas unidades de rede e replicar arquivos especificos, mas isso pode ser adequado a sua necessidade ou ao dia-a-dia.

Vamos ao código.

A função que mapeia as Unidades é

CheckShare(DriveLetter,ServerName,ShareName,SharePass,ShareUser,RemoveShare)

Adequem a linha abaixo para copiar uma parte ou um arquivo especifico, para isso é preciso conhecer comandos do MS-DOS.

objShell.Run "xcopy "& Origem &":\*.* "& Destino &":\ /e /c /y /r", 1, true

Para simular o código fonte abaixo, salve ele como "Teste.VBS" em "c:"e utilize o MS-DOS com a seguinte chamada:

cscript teste.vbs

As mensagens serão exibidas no MS-DOS.


________________________________________________________________
CÓDIGO FONTE ABAIXO ORIGINAL (Leia mais)
________________________________________________________________


12 julho 2009

Como identificar um navegador de celular (mobile)

Recentemente tive a necessidade de criar um portal Wap para a Empresa que trabalho, porém sem saber muito de WAP ou WML, fui atrás do padrão aceito que é o xHTML.

Encontrei em algum lugar na net um fonte em PHP que faz isso aqui, porém traduzi para o ASP para usar lá na empresa.

Fica ai para quem quiser aproveitar o fonte.

'** Caso a flag F=Full seja passada direciona para o XXXXXXXXXXXxxxxxs
'** Url para redir
Const WML_Redir = "http://www.XXXXXXXXXXXxxxxxs.com.br/wap2.0/"
Const HTTP_Redir = "http://www.XXXXXXXXXXXxxxxxs.com.br/v9/"
Const PSP_Redir = "http://www.XXXXXXXXXXXxxxxxs.com.br/wap2.0/"
'--------------------------------------------------------------------------------
FwdMobile = request("s")
if FwdMobile = "1" then
response.redirect HTTP_Redir
response.end
end if
'--------------------------------------------------------------------------------
'** Dados do Client
Dim Client    :  Client    =  Lcase(Request.ServerVariables("HTTP_USER_AGENT"))
Dim Protocolo  :  Protocolo  =  Lcase(Request.ServerVariables("HTTP_ACCEPT"))
'** Lista de navegadores conhecidos
WapBrowsers  =  array("wapbrowser","up.browser","up/4","mib","cellphone","go.web","nokia","panasonic","wap","wml-browser","wml","iemobile","iphone")
PcBrowsers  =  array("mozilla","gecko","opera","omniweb","msie","konqueror","safari","netpositive" ,"lynx" ,"elinks" ,"links" ,"w3m" ,"webtv" ,"amaya" ,    "dillo" ,"ibrowse" ,"icab" ,"crazy browser" ,"internet explorer" )
PsPBrowsers  =  array("PlayStation Portable")

Private Function VerifyProtocol()
'Dim sFound    :  sFound    =  0
if instr(Protocolo,"wml") > 0 then
sFound = 0
else
if CheckBrowser(WapBrowsers,Client) then  sFound = 0 : Found = true
if CheckBrowser(PcBrowsers,Client) and  Found = false then    sFound = 1 : Found = true
if CheckBrowser(PsPBrowsers,Client) and  Found = false then  sFound = 2 : Found = true
end if
if request.querystring("s") = "0" then sFound = request.querystring("s")
Call DoRedir(sFound)
End Function

Private Function CheckBrowser(List,User)
sReturn = false
for i=0 to Ubound(List)
if Instr(user,List(i)) > 0  then
sReturn = true
exit for
end if
next
CheckBrowser = sReturn
End Function

Private Function DoRedir(sFound)
Select   Case sFound
Case  0  : url = WML_Redir
Case  1  : url = HTTP_Redir
Case  2  : url = PSP_Redir
End Select

response.redirect(url&"?c="& session.sessionid)
response.end
'  response.write ""& url &" "& Client &"
"& Protocolo
End Function
if request.querystring("c") = "" then Call VerifyProtocol()


Veja a atualização deste post clicando aqui.

30 junho 2009

Excel + VBA

Galera, usar excel é um porre, não sei muito bem esses lances de fórmulas e tal.

Mas fiquei brincando com um editor VBA que ele tem (alt + 11), neles vocês podem criar um formulário, botões, etc.

Atribuir funções como se fosse um programa VB, porém no Excel.

Fiz uma planilha para controle de ligações e funciona bem, espero ter tempo para explicar como fazer uma planilha simples de controle de contatos, o problema é que é extenso.

Mas vamos tentar, aguardem os proximos posts.

Abs

26 junho 2009

Segurança nas requisições

Bom galera, vou retomar o blog com calma (e põe calma) pois está muito corrido basta olhar o tempo que ele fica sem publicações.

Mas a questão aqui é segurança nas requisições em seu servidor, passei por um problema muito grande na empresa que trabalho e resolvi travar as requisições provindas apenas do meu server, evitando ataques entre outros métodos de injection.

Bom chega de blá blá blá e vamos ao fonte.
<%'******************************************************************************'
'*** Tem o objetivo de filtras se todas as requisições foram provenientes do servidor que está hospedado, evitando possiveis robos para injection
WhoRequest = Lcase(Request.ServerVariables("HTTP_REFERER"))
MyDomain = Lcase(Request.ServerVariables("SERVER_NAME"))
'******************************************************************************'
'*** Testando a requisição - Caso caia na solicitação será barrado
if instr(WhoRequest,MyDomain) = 0 then
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "404/"
response.end
end if
%>
Bom está mais do comentado nao é?

Altere o conteúdo que está em vermelho para o diretório que você deseja mover o solicitante indevido.

Neste caso eu movi para uma pasta 404 com um default explicando que as solicitações são filtradas e só são autorizadas provindas do meu server.

Isso também é util para quem usa XML e nao deseja exibir o Output para outro server.

;)

Fica ai a dica.

28 maio 2009

Tabela Ascii

Mais um post sobre programação, vou compartilhar com vocês um código que eu fiz há algum tempo que me auxilia até hoje, quando precisamos saber qual é o caracter da letra A ou 0?
Existem outras formas de fazer isso em JavaScript e até em outras linguagens, mas como tenho isso pronto, compartilho o que está mais fácil.

Bom proveito.

<%
'------------------------------------------------
car = request.form("car")
car2 = request.form("car2")
if car2 <> "" then
response.write ""
else
  if car <> "" then
  car = cInt(car)
  response.write ""
  else
    if request.form("coluna") = "" then
      limite = 10
    else
      limite = cInt(request.form("coluna"))
    end if
  end if
end if
'------------------------------------------------%>







Tabela de caracters ASCII:  Escolha quantas colunas deseja ver:  Ou digite o número do caractere desejado:  Ou digite o caractere desejado e veja o numero: Obs.: Basta digitar e dar um TAB que os valores serão submetidos.
<% Response.buffer = true '------------------------------------------------ response.write ""&vbcrlf '------------------------------------------------ if car2 = "" then if car = "" then '------------------------------------------------ cont = 0 '------------------------------------------------ for i=1 to 255 '------------------------------------------------ if cont = 0 then response.write ""&vbcrlf cont = cont + 1 end if '------------------------------------------------ if cont > 0 OR cont = limite then response.write ""&vbcrlf cont = cont + 1 end if '------------------------------------------------ if cont = (limite+1) then response.write ""&vbcrlf cont = 0 end if '------------------------------------------------ Next '------------------------------------------------ response.write "
"& right("000"&i,3) &" = "& CHR(i) &"
"&VBCrlf else '------------------------------------------------ cont = 0 '------------------------------------------------ response.write ""&vbcrlf response.write ""& right("000"&car,3) &" = "& CHR(car) &""&vbcrlf response.write ""&vbcrlf end if else '------------------------------------------------ for i=1 to 255 '------------------------------------------------ if car2 = CHR(i) then response.write ""&vbcrlf&""& CHR(i) &" = "& right("000"&i,3) &""&vbcrlf&"" end if '------------------------------------------------ Next '------------------------------------------------ end if '------------------------------------------------ response.write ""&VBCrlf %> <%=chr(171)%> Voltar
<%response.flush response.clear%>

20 maio 2009

VirtuaStore - Loja virtual

Acredito que a maioria conheça a VirtuaStore, no inicio esta loja tinha apenas uma frente de trabalho que era a venda de Lojas Virtuais completas pelo próprio site.

Porém com o tempo o até então sócio em conjunto com o Daniel, criaram um fórum na própria Virtua Store, dai surgiu a idéia de fazerem uma versão com menos recursos e abrir para a internet, foi a que inicio a VirtuaStoreOpen, porque Open?

De OpenSource (Código aberto), para que todos que podem baixem, melhorem e contribuam com a evolução deste aplicativo que ajuda muitas pessoas na internet.

Fica a dica, entrem para o grupo.

Abs,

19 maio 2009

Canal aberto

Gostaria de deixar aberto este canal para que sugiram tópicos para que eu possa localizar e propriciar soluções para meus leitores.

O contato pode ser feito pelos comentários, prefiro não abrir para receber emails pois não conseguirei responder a todos.

Fica ae mais um canal aberto para que troquemos informações.

Abs e até apróxima

13 maio 2009

Segurança com captcha

Outro dia vi em site americano uma idéia muito boa, a qual se baseia em uma instrução matemática para o usuário responder.

Trata-se de um padrão de checagem captcha, porém mais dinâmico desta forma o seu usuário precisa ler a pergunta formulada e responder.

Fica ai mais uma sugestão, caso desejem comentem este post.
<%

'** Montando Operador
Private Function GetOperador()
Operadores = Array ("+","-","*","/")
Randomize()
GetOperador = Operadores(cInt(Ubound(Operadores) * Rnd))
End Function

'** Pegando um valor qualquer 
Private Function GetNum()
Numeros = Array (0,1,2,3,4,5,6,7,8,9)
Randomize()
GetNum = Numeros(cInt(Ubound(Numeros) * Rnd))
End Function

'** Realizando Calculo
Private Function CalcResult(Num1,Oper,Num2)
CalcResult = eval(Num1 & Oper & Num2)
End Function

Dim Num1 : Num1 = GetNum()
Dim Num2 : Num2 = GetNum()
Dim Oper : Oper = GetOperador()
%>

Qual o resultado da equação abaixo: 




<%=Num1 &" "& Oper &" "& Num2%>


17 abril 2009

Criando gráficos no ASP

O artigo abaixo irá explicar o uso do componente OWC10 da Microsoft, essa função já está em uso comigo há algum tempo.

Espero que vocês façam bom proveito com este fonte, assim como eu já o fiz.

<%
'================================================================================================================='
Function Gera_Grafico(RSDADOS,titulo,largura,altura,titulo_eixo,char_type)
  on error resume next
  if isarray(RSDADOS)=true then
    Set oChart = CreateObject("OWC10.ChartSpace")
    
    if IsObject(oChart) = false then
      response.write "Erro ao criar o componente"
      exit function
    end if
    
    Set c = oChart.Constants
    oChart.Border.Color = c.chColorNone
    
    Redim categories(UBOUND(RSDADOS,2)), Vals(UBOUND(RSDADOS,2))
    
    ' críe um array que represente os valores da primeira série. 
    FOR I=0 TO UBOUND(RSDADOS,2)
      Vals(I) = RSDADOS(1,I)
    NEXT
    
    ' gráfico de coluna com as duas séries e quatro categorias. 
    ' críe um array que represente as categorias, as categorias serão as mesmas para as duas séries. 
    FOR I=0 TO UBOUND(RSDADOS,2)
      legenda=RSDADOS(0,I)
      categories(I) = legenda&" : Total("&Vals(I)&")"
    NEXT
    
    With oChart
    
    ' adicionando um objeto do gráfico.
    .Charts.Add

    ' adicionando o tipo do gráfico.    
    select  case cInt(char_type)
        case 0  
          .Charts(0).Type = oChart.Constants.chChartTypePie
        case 1  
          .Charts(0).Type = oChart.Constants.chChartTypePie3d
        case 2
          .Charts(0).Type = oChart.Constants.chChartTypeColumnClustered
        case 3
          .Charts(0).Type = oChart.Constants.chChartTypeColumn3d
        case 4
          .Charts(0).Type = oChart.Constants.chChartTypeArea
        case 5
          .Charts(0).Type = oChart.Constants.chChartTypeBarClustered
        case 6
          .Charts(0).Type = oChart.Constants.chChartTypeBar3D          
        case 7
          .Charts(0).Type = oChart.Constants.chChartTypeArea3D
        case 8
          .Charts(0).Type = oChart.Constants.chChartTypeLine
        case 9
          .Charts(0).Type = oChart.Constants.chChartTypeLineMarkers
    end select
        
    ' adicionando a primeira série ao gráfico.
    .Charts(0).SeriesCollection.Add
    
    ' ajustando o subtítulo da série (o texto da legenda).
    .Charts(0).SeriesCollection(0).Caption = titulo_eixo
    
    ' adicionando as categorias e os valores da primeira série.
    .Charts(0).SeriesCollection(0).SetData c.chDimCategories, c.chDataLiteral, categories
    .Charts(0).SeriesCollection(0).SetData c.chDimValues, c.chDataLiteral, Vals
    .Charts(0).HasLegend = false
    .Charts(0).HasTitle = false
    End With
    
    Response.Expires = 0
    Response.Buffer = true
    Response.Clear
    Response.ContentType = "image/png"
    
    'ajustando o tamanho do gráfico (figura).
    Response.BinaryWrite oChart.GetPicture("png",largura, altura)
  end if
end function

  t  =  request("t")
  th  =  request("th")
  w  =  request("w")
  h  =  request("h")
  id  =  request("id")
  o  =  request("o")

Call Gera_Grafico(Session(o),t,w,h,th,id)%>

08 abril 2009

Vbscript - noções básicas

VBSCRIPT é um derivado do VisualBasic (VB) que também segue o padrão da linguagem ASP, desta forma muitos acham que um arquivo *.vbs não tem muitas funções.

Ai que está a diferença em quem sabe utiliar os conceitos de lógica de programação e os recursos do vbs.

Tentarei explicar em alguns artigos como criar monitores de processos, compactação de arquivos entre outros recursos possiveis que o vbs possa executar.

Vale ressaltar que o vbs somente é executado em Ambiente Windows, logo, desculpas aos comunidade OpenSource.

Abaixo irei explicar o conceito de um VBS para execução a cada 10 segundos, pois poderiamos muito bem utilizar o Agendamento de Tarefas do windows, mas já tentou fazer uma tarefa rodar a cada 10 segundos?



Trecho do VBS

Dim strSecond : strSecond = 0
Dim strTime : strTime = 60 '** Tempo do LIMITADOR (FIM DO SCRIPT) ***NAO MUDAR
Dim strExec : strExec = 10 '** Em Segundos, tempo de execução do SCRIPT
Dim strControl : strControl = date() - 1

'-------------------------------------------------------------'

'** Inicio do Processo

'-------------------------------------------------------------'
Set objShell = Wscript.CreateObject("Wscript.Shell")
Do Until (strSecond > strTime)
strSecond = Second(time) : Wscript.sleep 1000 '** Milisegundos
if (strSecond mod strExec) = 0 and F_Exec <> time() then
F_Exec = time()
objShell.Run strPath &"\process.bat", 0, True '** Listando os processos em TXT
end if
Loop
Set objShell = nothing
'-------------------------------------------------------------'
Onde:

objShell.Run strPath &"\process.bat", 0, True -> Esta linha executa um arquivo qualquer, pode ser executável ou bat (*.bat), o parâmetro 0 indica que a janela não será aberta, ou seja, não será visivel ao executor do script.

"process.bat" -> Este arquivo bat lista os processos que estão em execução no equipamento, podendo ser Servidor ou Estação (Desktop), no caso que foi utilizado teve o objetivo de gerar um arquivo texto com a lista de processos.

Ai você que está lendo se pergunta:

"Mas não é fácil conectar no servidor e ver se o processo está em execução?"

Eu digo "Sim", mas como você faria isso sem que não tivesse condições de acessar a máquina para monitorar isso?

Simples, o VBS em conjunto com o BAT dá a saida em TXT.

Logo um arquivo ASP, isso mesmo ASP (Servidor IIS - Microsoft) lhe dá a visão do servidor, por isso a criticidade dos 10 segundos definida no script acima.

Este bloco que deixo disponivel é apenas um começo, em outros artigos irei incrementando esta idéia do uso de VBS para controle e monitoramentos.

Conteúdo do process.bat

@echo off

del *.txt /Q

REM Alternativa de listagens dos processos (Exibe somente o LABEL - NOME)
wmic process get caption > c:\\caption.txt
type c:\\caption.txt >> D:\Intercambio_v2\process\caption.txt
exit
Essa linha é a responsável pela saída dos processos do windows "wmic process get caption".

É isso ae, qualquer dúvida comentem este post ou entre em contato.

Abs.