Ir para conteúdo
Fórum Script Brasil

Bicicleta

Membros
  • Total de itens

    570
  • Registro em

  • Última visita

Posts postados por Bicicleta

  1. E ae galera, beleza?

    Seguinte... Tenho uma classe que manipula um arquivo .XML e quando existem duas alterações simultâneas no mesmo, dá um erro... Por exemplo:

    - Cliente 1 manda abrir o arquivo;

    - Cliente 2 manda abrir o arquivo;

    - Cliente 1 altera o arquivo;

    - Cliente 1 salva e fecha o arquivo;

    - Cliente 2 altera o arquivo;

    - Cliente 2 "tenta" salvar o arquivo (ERRO)

    O erro que dá é porque o "cliente 2" abriu o arquivo junto com o "cliente 1", quando o "cliente 1" salvou o arquivo ainda era o mesmo que ele abriu, porém o "cliente 2" altera o objeto e manda salvar um arquivo que já não é mais o mesmo que ele abriu...

    Esse erro na verdade não atrapalha muito, porque se der erro, o cliente recebe a mensagem de que não foi possível alterar o arquivo e ele tenta novamente em seguida e consegue... Porém isso está me incomodando, andei pensando em uma alternativa e cheguei a algo:

    1) Cliente 1 abre o arquivo;

    2) Cliente 2 manda abrir o arquivo, porém o Cliente 1 já está conectado, então aguarda (sleep).

    3) Cliente 1 altera o arquivo;

    2) Cliente 2 manda abrir o arquivo, porém o Cliente 1 ainda está conectado, então aguarda (sleep).

    4) Clietne 1 salva e fecha o arquivo;

    5) Cliente 2 manda abrir o arquivo (o 1 já não está mais aqui, então pode abrir);

    6) Cliente 2 altera o arquivo;

    7) Cliente 2 salva e fecha o arquivo;

    Algo assim, ou seja, pra instanciar uma classe, somente se não existir ninguém com ela já instanciada (conectado), fiz alguns testes com arquivos, sessões, (BD não é possível) e não consegui nada... Fiz e refiz a lógica e código e na verdade o sleep dá uma zuada no negócio...

    Bom, pra resumir, alguém tem alguma idéia o que eu poderia implementar para conseguir que somente 1 pessoa use a classe por vez?

    PS.: Como falei, isso não interfere muito, mais tá me deixando meio cabreiro, porque as vezes tem vários processos a serem feitos antes de gravar no XML e não que seja um problema refazer eles, mais acho que uma solução mais elegante pra isso seja muito mais "elegante" (rsrsrsrsrs)

    Valeu!

  2. Olá...

    Estou olhando no manual do PHP mais não estou achando a função para expressão regular que após a análise da ER eu consiga pegar os valores... Por exemplo...

    $valor = "1589-ABCD";
    $retorno = func_er("/^[0-9]{4}?\-[A-Z]{4}$/", $valor);
    
    echo $retorno[0]; // retornaria 1589
    echo $retorno[1]; // retornaria ABCD

    Na verdade nem sei se tal função existe, espero eu que sim... A linha que preciso analisar é bem complexa, estou montando a ER, porém gostaria de saber se isso existe para saber se continuo dessa forma...

    Valeu!

  3. Salve...

    Tipo, estou tentando fazer uma coisa, mais sem sucesso até agora... Tenho uma classe, e um método, dentro desse método, queria ter outro método, afim de que esse método interno só pudesse ser chamado, chamando o método pai... Por exemplo:

    <?php
    
    class Visitantes {
    
         public function Registrados() {
              function Incluir($param) {
                   // Faz alguma coisa
                   return true;
              }
    
              function Excluir($param) {
                   // Faz alguma coisa
                   return true;
              }
         }
    
    }
    
    ?>
    Para poder usar assim:
    <?php
    
    $visitante = new Visitantes()
    
     $visitante->Registrados->Incluir(5);
      $visitante->Registrados->Excluir(5);
    
    // O que está abaixo não faria nada se fosse realmente chamado...
    // $visitante->Registrados;
    
    ?>

    É possível isso?

    Abraço!

  4. Olá.

    Estou pesquisando se através do delphi consigo editar as configurações ( about:config ) do Firefox. Alguém sabe me dizer se isso é possível?

    Como eu acho que não é, vou explicar meu problema.

    Um cliente tem um domínio que ele não quer que os funcionários dele possam acessar fora do horário comercial ou de fora dos computadores da empresa.

    Bloquear por horário comercial, faço direto no sistema de login do site. Porém bloquear pra somente as máquinas de dentro da empresa está mais complicado. Inicialmente pensei em fazer algo no Delphi pra alterar o UserAgent dos navegadores, e verificar através do sistema de login se o UserAgent possui uma palavra específica e permitir ou não.

    Pro Internet Explorer, consigo adicionar uma informação através do registro do windows. Para o Firefox, só sei como através do about:config

    Se alguém souber como posso editar o about:config ou então tiver alguma outra idéia, eu agradeço!!!

    Valeu galera!

  5. Kara, fiz algo aqui, dá uma olhada:

    <%
    
    str_Texto = "De fato, é a articulação complexa entre todos os escritos da autora – publicados em vida e póstumos – o que permite falar em pensamento de Virginia Woolf. Afinal, ele se expressa através de uma escrita que circula entre modalidades ficcionais e não-ficcionais, históricas e filosóficas. Contudo, este pensamento não se apresenta como uma 'Filosofia', no sentido tradicional do termo. Ele se aproxima mais a um sistema complexo, devido à multiplicidade de suas linhas intensas e a seu entrelaçamento empírico com a vida. Estas características se configuram como apenas duas dentre inúmeras outras indicações para uma abordagem de inspiração deleuzeana, tal como apontarei a seguir."
    str_Busca = "entrelaçamento"
    
    ' Número de caracteres antes e depois. O total de caracteres será esse
    ' número multiplicado por 2 + o tamanho da palavra a ser procurada
    int_Caracteres = 25
    
    int_Posicao = Instr(1, str_Texto, str_Busca)
    
    If (int_Posicao = 0) Then
        Response.Write "<p>Resultado não encontrado</p>"
    Else
    
        int_Ini = int_Posicao - int_Caracteres
        If (int_Ini <= 0) Then int_Ini = 1
        int_Fim = Len(str_Busca) + (int_Caracteres * 2)
    
        Response.Write "..." & Trim(Replace(Mid(str_Texto, int_Ini, int_Fim), str_Busca, "<b>"& str_Busca &"</b>")) & "..."
    
    End If
    
    %>

    Não sei em que você vai usar isso, dependendo o local onde for usar (texto grande, muitos locais a pesquisar, etc) possa ficar lento. Depende em que você vai usar.

    Testa e modifica de acordo com sua necessidade.

    Abraço!

  6. Tenta assim:

    cod_usuario = Clng(request.cookies("css")("coduser"))

    ComandoSQL = "Select * from usuarios where cod_usuario = "& cod_usuario &""

    Set rs = conexao.execute(ComandoSQL)

    Na variável tinha um 0 a mais, tire ele e deixe somente o valor (apesar de ele sair na conversão).

    E esse erro apareceu porque foi colocado o nome da variável do SQL entre parênteses. Deixe sem parenteses.

    Abraço!

  7. Tenta com isso aqui:

    valor = 4500
    valor = Left(valor, Len(valor)-2) & "." & Right(valor, 2)
    Caso você queira fazer a conversão pra não ter perigo vir como string, tem q trocar o ponto por virgula, tipo assim:
    valor = 4515
    valor = CDBL(Left(valor, Len(valor)-2) & "," & Right(valor, 2))

    Editado: O fercosmig postou antes. Foi mais rápido no gatilho o moço!!!

    Abraço!

  8. Tenta com esse outro componente:

    <%
    
    str_UserName = "NomeDeUsuario"
    str_Password = "SuaSenha"
    str_HostName = "EndereDoHost.no-ip.biz"
    str_NewIP    = "1.2.3.4"
    
    Set http = Server.CreateObject("MSXML2.XMLHTTP.3.0")
    http.Open "GET", "http://"& str_UserName &":"& str_Password &"@dynupdate.no-ip.com/nic/update?hostname="& str_HostName &"&myip="& str_NewIP, False
    http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    http.Send()
    str_Result = http.ResponseText
    Set http = Nothing
    
    Response.Write "<pre>Resultado: "& str_Result &"</pre>"
    
    %>

    Abraço!

  9. Kara, não sabia que isso era possível hehehee... Tenho uma conta no no-ip, criei um novo host para testar e deu certo. Segue abaixo o script:

    <%
    
    str_UserName = "NomeDeUsuario"
    str_Password = "SuaSenha"
    str_HostName = "EndereDoHost.no-ip.biz"
    str_NewIP    = "1.2.3.4"
    
    Set http = Server.CreateObject("Microsoft.XMLHTTP")
    http.Open "GET", "http://"& str_UserName &":"& str_Password &"@dynupdate.no-ip.com/nic/update?hostname="& str_HostName &"&myip="& str_NewIP, False
    http.Send(str_XML)
    str_Result = http.ResponseText
    Set http = Nothing
    
    Response.Write "<pre>Resultado: "& str_Result &"</pre>"
    
    %>

    Se der certo, vai aparecer algo como: "Resultado: good 1.2.3.4" Aqui pra mim funcionou. Testa ai e qualquer coisa posta ai.

    Abraço.

  10. Onde você cria o objeto rsBusca ? Ou você está postando código pela metade, ou tá fazendo errado não na linha que citou, mais antes. Segue um exemplo do que você quer fazer:

    <%
    
    Set Conexao = Server.CreateObject("ADODB.Connection")
    Conexao.ConnectionString = "DRIVER={MySQL ODBC 3.51 DRIVER};SERVER=127.0.0.1;DATABASE=NomeDoBD;UID=NomeUsuario;PWD=MinhaSenha;"
    Conexao.Open
    
    Set rsBusca = Server.CreateObject("ADODB.Recordset")
    rsBusca.ActiveConnection = Conexao
    rsBusca.CursorLocation = 3
    
    If rsBusca.State = 1 Then rsBusca.Close
    rsBusca.Open "SELECT * FROM tabela"
    
    If (rsBusca.RecordCount > 0) Then
        Response.Write "Total de registros maior que zero"
    Else
        Response.Write "Total de registros igual a zero "
    End If
    
    rsBusca.Close
    Set rsBusca = Nothing
    
    Conexao.Close
    Set Conexao = Nothing
    
    %>

    falou.

  11. Não. MySQL é bem mais rápido que o Access. Isso porque o MySQL é um servidor de BD, diferente do Access.

    E o MySQL você não vai usar exatamente igual o Access. Algumas coisas mudam. Mas pelo jeito, você não instalou o Driver ODBC e não citou isso... hehehehehe

    Segue o link pra você baixar e instalar ele: http://dev.mysql.com/downloads/connector/odbc/5.1.html

    Faça o download, instale, e tente. Se tiver algum erro, tente ser mais específico postando uma parte do código, com a linha do erro e a mensagem de erro.

    Abraço.

  12. Com o ASP não tem como se conectar ao MySQL sem o driver ODBC. O PHP tem uma função nativa pra isso, ASP não.

    Atualmente existem duas versões do driver (3.51 e 5.1 - claro que a última é sempre a mais recomendável). Segue abaixo as strings de conexão:

    DRIVER={MySQL ODBC 3.51 DRIVER};SERVER=IpDoServidor;DATABASE=NomeDoBancoDeDados;UID=NomeDoUsuario;PWD=SenhaDeConexao;

    DRIVER={MySQL ODBC 5.1 DRIVER};SERVER=IpDoServidor;DATABASE=NomeDoBancoDeDados;UID=NomeDoUsuario;PWD=SenhaDeConexao;

    Mas, não entendi o motivo de não querer se conectar através do driver? Algum problema específico?

    Abraço.

  13. Não.

    É impossível você pegar algum dado da máquina do cliente usando somente VbScript ou qualquer outra linguagem dinâmica (salvo para os dados que vem através das variáveis de servidor como a Andreia citou).

    Abraço.

  14. Na máquina do cliente você não vai conseguir usando qualquer linguagem server side. Para isso é preciso algo que rode na máquina cliente. Um arquivo .vbs daria usando o FSO como no exemplo:

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set drvDrive fso.GetDrive(left(fso.GetDriveName("c:\"), 2))
    
    lSerial = drvDrive.SerialNumber
    
    Set drvDrive = Nothing
    Set fso = Nothing

    O script acima deve funcionar tanto num arquivo .VBS quanto num arquivo .ASP, porém um arquivo .VBS é executado no computador do cliente, arquivo .ASP é em um servidor, nesse caso, resultando no serial do HD do servidor e não do cliente, que é o que te interessa.

    Fonte: http://www.linhadecodigo.com.br/Dica.aspx?id=781

    Abraço.

  15. É... Mas usar o Dictionary é um tanto quanto fazer gambiarra numa coisa que já foi feita dessa forma. Como no artigo que postei, podeia ser algo Classe que chama outra classe e tal, mas no meu ver é instanciar duas vezes o mesmo objeto pra uma questão de organização...

    Mas... Valeu!

  16. Olá.

    Estava pensando aqui e me surgiu uma questão que não pude achar uma solução. Para criar uma classe com métodos, faço da seguinte forma:

    <%
    
     Class nomeDaClasse
    
         Public Function ParametroAdd(pName, pValue)
             ' Adiciona um parâmetro a algum lugar.
         End Function
    
         Public Function ParametroDelete(pName)
             ' Excluir um parâmetro de algum lugar
         End Function
    
         Public Function ParametroGerar()
             ' Gera a lista de parâmetros
         End Function
    
     End Class
    
     Set objeto = New nomeDaClasse
     objeto.ParametroAdd("Parametro1", "Valor do Parâmetro 01")
     objeto.ParametroAdd("Parametro2", "Valor do Parâmetro 02")
     objeto.ParametroDelete("Parametro2")
     objeto.ParametroGerar()
     Set objeto = Nothing
    
     %>
    A dúvida que me surgui: Ao invés de chamar as funções: ".ParametroAdd", ".ParametroDelet" e ".ParametroGerar" por exemplo, chamar da seguinte forma:
    objeto.Parametro.Add(...)
     objeto.Parametro.Delete(...)
     objeto.Parametro.Gerar()

    Ou seja, algo como função dentro de função... objeto seria a instância da classe, Parametro o objeto, Delete a função... Algo assim!!!!

    Deu pra entender?

    Alguém tem idéia de como poderia fazer isso???

    Valeu!

    '-- Editado: ---------------------------------------

    Achei essa matéria no imasters: http://imasters.uol.com.br/artigo/11514/as...em_aspvbscript/

    A questão é que não poderia repetir nome de funções para objetos diferentes... Por exemplo:

    objeto.Parametro.Add("...")

    objeto.Lista.Add("...")

    Acho que seria algo como classe dentro de classe, que creio eu não ser possível no VbScript... Alguém tem alguma sugestão?

    Valeu!

  17. Talvez seja possível utilizando o InnoSetup, embutindo o programa de instalação do Mysql e o executando no modo silencioso.

    Porém faz algum tempo já que não mexo com o InnoSetup, e nunca fiz isso com ele.

    InnoSetup

    IsTool - Ferramenta gráfica para trabalhar com InnoSetup

    Tenta com esses dois programas. Creio que talvez consiga algo. Não ajudo mais porque como falei, nunca fiz isso antes e faz algum tempo já que não faço nada com o InnoSetup.

    Abraço.

  18. Faça um IF no campo e verifique a extensão, se for .swf, insira o flash, se não insira a imagem, exemplo:

    <%
    
    Set rs = Conexao.Execute("SELECT url_banner FROM banners WHERE id = 1")
    
    str_UrlBanner = LCase(rs("url_banner"))
    
    If Right(str_UrlBanner, 4) = ".swf") Then
        ' Imprime aqui a tag HTML para inserir um FLASH
    Else
        ' Imprime aqui a tag HTML para inserir uma IMAGEM
    End If
    
    rs.Close
    Set rs = Nothing
    
    %>

×
×
  • Criar Novo...