Ir ao conteúdo
  • Cadastre-se

HwapX

Membro Pleno
  • Posts

    143
  • Cadastrado em

  • Última visita

posts postados por HwapX

  1. Deixe janeiro como os outros meses sem o UL e coloque o atributo type diretamente nele.

    ...
    <li>Dezembro</li>
    <li type="disc">Janeiro</li>
    <!--
    Uma abordagem mais correta seria utilizar CSS visto
      que o atributo type foi descontinuado
    <li style="list-style-type: disc;">Janeiro</li>
    -->
    </ol> 

     

    • Curtir 1
    • Obrigado 1
  2. Consegui testar no IE e atualizei os exemplos.

    Versão que utiliza cookies https://codepen.io/anon/pen/mxMWLo.

    function autoSaveRadioSelection(radioname) {
      //Expressão regular para extrair o cookie
      var regex = new RegExp('('+radioname+'=)([^;]+)');
      var match = regex.exec(document.cookie);
      
      //Extrai o valor do cookie
      var selectedValue = match ? match[2] : null;
      //Busca os radio boxes
      var radioboxes = document.getElementsByName(radioname);
    
      function saveStatus(){
        //Data de expiração do cookie data atual + 1 ano
        var dt = new Date();
        dt.setFullYear(dt.getFullYear() + 1);
        //Monta e grava o cookie
        document.cookie = this.name + '=' + this.value + '; expires=' + dt + ';path=/;';
      };
      
      //Navega pelos radios existentes
      for(var i = 0; i < radioboxes.length; i++) {
        radio = radioboxes[i];
        //vincula o evento de alteração a função que salva o valor
        radio.onchange = saveStatus;
        //Marca ou não o radio comparando seu valor com o valor salvo
        radio.checked = selectedValue == radio.value; 
      };
    }
    
    autoSaveRadioSelection('nome do campo');

    Versão que utiliza localStorage https://codepen.io/anon/pen/gexLEm.

    function autoSaveRadioSelection(radioname) {
      //Carrega o valor salvo
      var selectedValue = localStorage.getItem(radioname);
      //Busca os radio boxes
      var radioboxes = document.getElementsByName(radioname);
    
      function saveStatus(){
        //Grava o valor do radio selecionado
        localStorage.setItem(this.name, this.value);
      };
    
      //Navega pelos radios existentes
      for(var i = 0; i < radioboxes.length; i++) {
        radio = radioboxes[i];
        //vincula o evento de alteração a função que salva o valor
        radio.onchange = saveStatus;
        //Marca ou não o radio comparando seu valor com o valor salvo
        radio.checked = selectedValue == radio.value; 
      };
    }
    
    autoSaveRadioSelection('nome do campo');

    Resumo das alterações o for(key in radioboxes) foi alterado para for(var i = 0; i < radioboxes.length; i++) pois no IE estava iterando sobre as propriedades do objeto radioboxes e não sobre seus itens.

     

    Nos meus testes obtive o seguinte resultado.

    • Firefox, memorizou e restaurou a opção após atualizar e reiniciar.
    • Chrome, memorizou e restaurou a opção após atualizar a página(não pude testar reiniciar pois estava utilizando ferramentas online).
    • IE, memorizou e restaurou após atualizar(não pude testar reiniciar pois estava utilizando ferramentas online).
    • EDGE, não pude testar.
  3. Ainda não consegui testar no IE nem EDGE mas criei uma alternativa utilizando cookie no lugar do localStorage, porém só pude testá-la no Firefox 59.

    function autoSaveRadioSelection(radioname) {
      //Expressão regular para extrair o cookie
      var regex = new RegExp('('+radioname+'=)([^;]+)');
      var match = regex.exec(document.cookie);
      
      //Extrai o valor do cookie
      var selectedValue = match ? match[2] : null;
      //Busca os radio boxes
      var radioboxes = document.getElementsByName(radioname);
    
      function saveStatus(){
        //Data de expiração do cookie data atual + 1 ano
        var dt = new Date();
        dt.setFullYear(dt.getFullYear() + 1);
        //Monta e grava o cookie
        document.cookie = this.name + '=' + this.value + '; expires=' + dt + ';path=/;';
      };
    
      //Navega pelos radios existentes
      for(key in radioboxes) {
        radio = radioboxes[key];
        //vincula o evento de alteração a função que salva o valor
        radio.onchange = saveStatus;
        //Marca ou não o radio comparando seu valor com o valor salvo
        radio.checked = selectedValue == radio.value; 
      };
    }
    
    autoSaveRadioSelection('nome do campo');

    Em principio essa versão deveria suportar todos os navegadores, porém como não pude testar pode existir alguma particularidade que desconheço.

     

    Você pode testá-la em https://codepen.io/anon/pen/mxMWLo.

     

  4. Atualizei o exemplo https://codepen.io/anon/pen/gexLEm.

    function autoSaveRadioSelection(radioname) {
      //Carrega o valor salvo
      var selectedValue = localStorage.getItem(radioname);
      //Busca os radio boxes
      var radioboxes = document.getElementsByName(radioname);
    
      function saveStatus(){
        //Grava o valor do radio selecionado
        localStorage.setItem(this.name, this.value);
      };
    
      //Navega pelos radios existentes
      for(key in radioboxes) {
        radio = radioboxes[key];
        //vincula o evento de alteração a função que salva o valor
        radio.onchange = saveStatus;
        //Marca ou não o radio comparando seu valor com o valor salvo
        radio.checked = selectedValue == radio.value; 
      };
    }
    
    autoSaveRadioSelection('nome do campo');

    Resumos alterações.

    Para resolver o problema no chrome alterei o evento oninput para onchange:

     

    Não consegui testar no IE ou EDGE pois estou utilizando Linux no momento, mas alterei o radioboxes.forEach que requer o IE 11 para o for(key in radioboxes) reduzindo os requisitos para o IE 8 determinado pelo uso do localStorage(https://developer.mozilla.org/pt-BR/docs/Web/API/Window/Window.localStorage).

  5. Você fez o teste no codepen ou no seu site?

     

    Se testou no seu site verifique se os inputs type="radio" possuem os atributos name e value preenchidos lembrando que name deve ser o mesmo para todos os radios e value deve ser diferente.

     

    Caso tenha testado no codepen e não obteve sucesso me informe o navegador e a versão que utilizou.

     

    Outro detalhe é que a função autoSaveRadioSelection('nome do campo'); deve ser chamada após os radios serem carregados, para isso o script deve ser colocado no final da páǵina antes do fechamento da tag <body>.

  6. Algo especifico para input type="radio" com base no seu exemplo seria.

    function autoSaveRadioSelection(radioname) {
      //Carrega o valor salvo
      var selectedValue = localStorage.getItem(radioname);
      //Busca os radio boxes
      var radioboxes = document.getElementsByName(radioname);
    
      function saveStatus(){
        //Grava o valor do radio selecionado
        localStorage.setItem(this.name, this.value);
      };
    
      //Navega pelos radios existentes
      radioboxes.forEach(function(radio) {
        //vincula o evento de alteração a função que salva o valor
        radio.oninput = saveStatus;
        //Marca ou não o radio comparando seu valor com o valor salvo
        radio.checked = selectedValue == radio.value; 
      });
    }
    
    autoSaveRadioSelection('nome do campo');

     

    Você pode testar em https://codepen.io/anon/pen/gexLEm.

  7. Basta gravar os valores em um arquivo separando eles por virgula.

    //http://www.cplusplus.com/reference/cstdio/fopen/
    FILE *file = fopen("caminho do arquivo", "w");
    
    char *varTexto = "texto";
    int varInt = 1;
    float varFloat = 3.1416;
    
    //fprintf funciona de maneira semelhante a printf http://www.cplusplus.com/reference/cstdio/fprintf/
    fprintf(file, "%s,%d,%f", varTexto, varInt, varFloat);
    
    char *varTexto2 = "texto com , virgula";
    int varInt2 = 2;
    float varFloat2 = 1.2;
    
    //Caso o campo possua virgula(,) ele deve ser gravado entre aspas.
    fprintf(file, "\"%s\",%d,%f", varTexto2, varInt2, varFloat2);
    
    //http://www.cplusplus.com/reference/cstdio/fclose/
    fclose(file);

     

    • Curtir 1
    • Amei 1
  8. Dá para chegar a esse resultado com as seguintes consultas.

    /*Retorna a diferença em segundos, você deve tratar a formação na sua aplicação*/
    SELECT
      mp_atual.pn,
      mp_atual.descricao,
      MIN(UNIX_TIMESTAMP(STR_TO_DATE(mp_atual.bip, '%d/%m/%Y %H:%i:%s')) - UNIX_TIMESTAMP(STR_TO_DATE(mp_anterior.bip, '%d/%m/%Y %H:%i:%s'))) as diff
    FROM
      `mesaproducao` AS mp_atual
    LEFT JOIN
      mesaproducao AS mp_anterior
    ON
      mp_anterior.id < mp_atual.id
    GROUP BY
      mp_atual.pn,
      mp_atual.descricao
    
    /*Ou, retorna a diferença como TIME porém falha se existir alguma diferença superior a 24 horas(embora na documentação o valor maximo seja 838:59:59 https://dev.mysql.com/doc/refman/5.7/en/time.html) no resultado final ou inferior a 0 segundos(acontece caso algum registro posterior tenha a data inferior)(embora a documentação informe o valor minimo seja -838:59:59 https://dev.mysql.com/doc/refman/5.7/en/time.html)*/
    SELECT
      mp_atual.pn,
      mp_atual.descricao,
      SEC_TO_TIME(MIN(UNIX_TIMESTAMP(STR_TO_DATE(mp_atual.bip, '%d/%m/%Y %H:%i:%s')) - UNIX_TIMESTAMP(STR_TO_DATE(mp_anterior.bip, '%d/%m/%Y %H:%i:%s')))) as diff
    FROM
      `mesaproducao` AS mp_atual
    LEFT JOIN
      mesaproducao AS mp_anterior
    ON
      mp_anterior.id < mp_atual.id
    GROUP BY
      mp_atual.pn,
      mp_atual.descricao
    
    /*Ou, porém falha se for calculada alguma diferença maior que 24 horas(embora na documentação o valor maximo seja 838:59:59 https://dev.mysql.com/doc/refman/5.7/en/time.html) mesmo que ela não vá aparecer no resultado final ou inferior a 0 segundos(acontece caso algum registro posterior tenha a data inferior)(embora a documentação informe o valor minimo seja -838:59:59 https://dev.mysql.com/doc/refman/5.7/en/time.html).*/
    SELECT
      mp_atual.pn,
      mp_atual.descricao,
      MIN(TIMEDIFF(STR_TO_DATE(mp_atual.bip, '%d/%m/%Y %H:%i:%s'), STR_TO_DATE(mp_anterior.bip, '%d/%m/%Y %H:%i:%s'))) as diff
    FROM
      `mesaproducao` AS mp_atual
    LEFT JOIN
      mesaproducao AS mp_anterior
    ON
      mp_anterior.id < mp_atual.id
    GROUP BY
      mp_atual.pn,
      mp_atual.descricao

    Pode ser testado em http://sqlfiddle.com/#!9/20b18b.

  9. Provavelmente em algum ponto do código existe algo como.

    BackgroundWorker.ReportProgress(Parametro1);
    //ou
    BackgroundWorker.ReportProgress(Parametro1, Parametro2);

    Caso ele esteja em do evento de progresso do WebClient você poderia alterar para algo como:

    private void WebClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) {
    //...
    //Aqui você passa os dados de progresso(váriavel e) no segundo paramêtro do método ReportProgress
    	BackgroundWorker.ReportProgress(Parametro1, e);

    E no evento BackgroundWorker.ProgressChanged você iria recuperar as informações assim:

    private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) {
            DownloadProgressChangedEventArgs we = (DownloadProgressChangedEventArgs)e.UserState;
      
            progressBar1.Value = e.ProgressPercentage;
            downloadLbl.Text = "Downloading Updates";
            label1.Text = e.ProgressPercentage + "%";
            double bytesIn = double.Parse(we.BytesReceived.ToString());
            double totalBytes = double.Parse(we.TotalBytesToReceive.ToString());
            double percentage = bytesIn / totalBytes * 100;
            label2.Text = "Downloaded " + we.BytesReceived + " of " + we.TotalBytesToReceive;
    }

     

  10. Você deve informar a conexão na função mysqli_select_db.

    mysqli_select_db($conexao, $banco) or die (mysqli_error($conexao));

     

    Outro detalhe é que no tratamento de erros você está está misturando a biblioteca mysqli com a mysql.

     

    Como você está utilizando a biblioteca mysqli a linha:

    $conexao = mysqli_connect($host, $user, $pass) or die (mysql_error());

    Deve ser alterada para:

    $conexao = mysqli_connect($host, $user, $pass) or die (mysqli_connect_error());

    e a linha do erro também deve ter seu tratamento de erros alterado de:

    mysqli_select_db($banco) or die (mysql_error());

    Para:

    mysqli_select_db($conexao, $banco) or die (mysqli_error($conexao));

     

    Também encontrei erros na sua consulta no banco as aspas não estão corretas o código a seguir:

    $sql = mysqli_query("INSERT INTO usuarios(nome, login, email, senha)VALUES('$nome',$login',$email',$senha')");

    Deve ser alterado para:

    $sql = mysqli_query("INSERT INTO usuarios(nome, login, email, senha)VALUES('$nome','$login','$email','$senha')");

     

    Além disso você também deve se proteger de vulnerabilidades como sql injection alterando o código a seguir de:

    $nome=$_POST['nome'];
    $login=$_POST['login'];
    $email=$_POST['email'];
    $senha=$_POST['senha'];

    Para:

    $nome=mysqli_escape_string($conexao, $_POST['nome']);
    $login=mysqli_escape_string($conexao, $_POST['login']);
    $email=mysqli_escape_string($conexao, $_POST['email']);
    $senha=mysqli_escape_string($conexao, $_POST['senha']);

     

    • Curtir 1
  11. Se o gargalo está no acesso ao disco para a leitura dos arquivos o melhor que você pode fazer é tentar evitá-las, caso os arquivos possuam tamanhos variados um meio de fazer isso seria não calcular o hash dos arquivos que possuem um tamanho único.

     

    Exemplo:

    Arquivo1.dat | 1mb

    Arquivo2.dat | 2mb

    Arquivo3.dat | 1mb

     

    No exemplo não é necessário calcular o hash do Arquivo2.dat pois nenhum outro pode ser igual a ele devido a seu tamanho único, porém para isso fazer diferença uma quantidade significativa dos arquivos precisariam ter tamanhos únicos.

     

    Outras ideias semelhantes também poderiam ser aplicadas sozinhas ou em conjunto.

    • Desconsiderar os arquivos que tenham os 8 bytes(ou qualquer outra pequena quantidade) iniciais ou finais únicas.
    • Desconsiderar os arquivos com nas extensões únicas porém ao contrário do tamanho nesse caso você precisaria ter certeza que o mesmo arquivo não pode existir com uma extensão diferente.

    Quais podem ser aplicadas dependem do conteúdo dos arquivos pois todas dependem de que uma característica seja única em uma quantidade considerável dos arquivos.

     

    Agora independente do problema ser no processamento ou não a ideia do @psykotico é valida, a troca do algorítimo de hash por um mais eficiente e a verificação se o arquivo é repetido imediatamente após o calculo do hash irá melhorar o desempenho.

    • Curtir 2
  12. di um jeito no meu Problema era que o codigo que eu usava pra fechar um programa que tava causando isso pois ele forçava o encerramento de qualquer jeito nem sempre funcionava mais independente disso mudei o codigo para simplesmente mandar o comando close sem forçar nada ai fico tudo bom

    mais o que eu queria agora é impedir meu programa de ser fechado nos processos ou mesmo de excondelo do gerenciador de tarefas o famoso ctrl+alt+del

    e ajuda para criar um sistema de auto update para meu programa pois não sei se disse mais ele é um sistema antihacker então tenho que mantelo atualizado pois sempre surgem novos hackers ai eu tenho que atuailizalo.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!