-
Posts
209 -
Cadastrado em
-
Última visita
-
Javascript Javascript Condição para exibir notificação no Browser
tiagopraz respondeu ao tópico de tiagopraz em Web e banco de dados
@Jão386 Nossa cara nem pensei nisso kkkk Só precisei ajustar a sintaxe, um parêntese. Te agradeço! -
Javascript Javascript Condição para exibir notificação no Browser
tiagopraz postou um tópico em Web e banco de dados
Boa tarde galera! Estou criando um script que por enquanto estou fazendo testes apenas no console do browser e está funcionando normalmente. Este script captura alguns textos que aparecem na página com intervalo de 30 segundos e se estes textos satisfizerem uma condição então o browser exibe uma notificação e o texto fica piscando em amarelo. Funciona normalmente quando determinado texto aparece na página, porém, eu queria adicionar exceções mas não estou conseguindo. Por exemplo, quero que a notificação seja exibida quando encontrar a palavra "SSD" ou "SSD alguma coisa" , mas não quero que a notificação seja exibida se a palavra "SSD" for acompanhada por exemplo de "NVMe", assim "SSD NVMe". Estou tentando inserir uma novo loop for mas sem sucesso. Segue o script que estou usando onde a notificação é exibida se qualquer palavra "SSD" aparecer na página: setInterval(function() { var fisrstTdArr2 = window.frames["main"].document.querySelectorAll(".status .statusSETTING:first-child"); var secondTdArr2 = window.frames["main"].document.querySelectorAll(".status .statusSETTING:nth-child(5)"); for (var i = 0; i<fisrstTdArr2.length; i++) { console.log ('PRODUTO: ' + fisrstTdArr2[i].innerText); console.log ('VALOR: ' + secondTdArr2[i].innerText); if(fisrstTdArr2[i].innerText.toLowerCase().indexOf("SSD") !== -1 || fisrstTdArr2[i].innerText.toLowerCase().indexOf("pendrive") !== -1) { let doo = fisrstTdArr2[i]; let doo2 = secondTdArr2[i]; //##################### EXIBIR NOTIFICAÇÃO NO NAVEGADOR ##################### Notification.requestPermission() .then(()=>{ const notification=new Notification("PRODUTO ENCONTRADO",{ body:doo.innerText, icon:"https://xxxxxx.yyyyyy.png" }); }); //##################### EXIBIR NOTIFICAÇÃO NO NAVEGADOR ##################### function blinkScreen() { if (doo.style.backgroundColor === "white") { doo.style.backgroundColor = "#ffff00"; } else { doo.style.backgroundColor = "white"; } } setInterval(blinkScreen, 800); delete fisrstTdArr2[i]; delete secondTdArr2[i]; }; }; }, 30000); Fiz um teste com um novo loop mas não deu certo: //##################### EXIBI NOTIFICAÇÃO NO NAVEGADOR ##################### for (doo.innerText.toLowerCase().indexOf !== "NVMe") { Notification.requestPermission() .then(()=>{ const notification=new Notification("PRODUTO ENCONTRADO",{ body:doo.innerText, icon:"https://xxxxxx.yyyyyy.png" }); }); }; //##################### EXIBI NOTIFICAÇÃO NO NAVEGADOR ##################### A tentativa de inserir esse loop me retorna erro de sintaxe "expected ')' ". Alguma ideia de como posso tratar isso para exibir a notificação somente nos casos de não conter "NVMe"? -
não consigo velocidade maxima na rede 5ghz ao lado do roteador
tiagopraz respondeu ao tópico de Eduardo Lima em Redes e Internet
Estou com problema parecido aqui. O equipamento da VIVO, um Askey RTF8115VW. Eu atingia 350 de velocidade na rede 5Ghz com um plano de 300mb. Depois atualizei o plano para 500mb, me pediram para desligar e ligar o roteador, quando o roteador ligou novamente as luzes piscaram um pouco de forma sequencial e reiniciou, demorou para voltar a funcionar. Percebi na hora que era atualização de firmware. Dito e feito, atualizaram o firmware, tanto que o famoso "/padrão" não tem mais acesso. Agora na rede 5Ghz chego aos míseros 250 até 270mb no mesmo cômodo onde está o roteador, testando em 3 equipamentos diferentes inclusive notebook. Detalhe, a velocidade de upload está chegando a quase 400mb. Tenho certeza que a vivo atualiza os equipamentos pra garantir menos consumo de banda no wi-fi em regiões de interesse deles. Essa atualização de firmware quebrou a velocidade na rede 5Ghz. Muita sacanagem, agora vou ter que comprar um GPON e/ou outro roteador. -
@Caioneg Não consegui. A solução foi deixar o modem/roteador da Claro em bridge e usar OpenWRT no raspberry.
-
GeForce RTX 3060, qual solução adotar para ligar em Smartv 4K?
tiagopraz postou um tópico em Placas de vídeo
Galera, estou em um dilema terrível. Meu computador com a RTX 3060 fica no quarto ligado a um monitor AOC de 24 polegada FHD. Ocorre que quero rodar alguns jogos em 4k, como por exemplo o Forza Horizon 5. Tenho uma Smart TV Samsung 4k que fica na sala. Comprei aqueles adaptadores de cabo de rede UTP para HDMI e uso um cabo CAT6. Estou tendo problemas porque hora funciona e hora não funciona. Ontem joguei pra caramba em 4k na TV e estava funcionando que é uma beleza. Hoje ao ligar o computador e a TV vi que a TV não reconhece o sinal de entrada mas indo nas configurações de Exibição do Windows 11 vi que o Windows está reconhecendo a TV e está reconhecendo em 4k. Então diminui a resolução para FHD mas mesmo assim a TV não reconhece o sinal de entrada. Será que o problema é a TV? Não sei mais o que fazer. Se alguém já precisou ou usa alguma forma de expandir a imagem do PC para usar a tela em outro cômodo da casa me da umas dicas ai porque está difícil. Estive pensando em comprar aqueles cabos HDMI fibra óptica de 20M mas tenho medo de comprar e o cabo não passar pelo duto (conduite) que vai da sala e passa nos quartos. -
PHP Laravel distribuir valores retornados do banco de dados
tiagopraz postou um tópico em Web e banco de dados
Galera estou obtendo resultados de uma query em uma tabela na view mas está ficando dois valores diferentes para o mesmo funcionário. Preciso que cada valor se atribua a um funcnionário. Meu código da query no controller: $jobposition = table::companydata() ->where('company', $comp) ->join('people', 'people.id', '=', 'company_data.reference') ->get('jobposition'); Esta query retorna dois valores. Estou retornando os valores para a view "admin.attendance-pdf-teste": $pdf = PDF::loadView('admin.attendance-pdf-teste', compact('attendance', 'comp', 'companyaddress', 'jobposition', 'startdate')); A tabela nessa view: @foreach ($attendance as $employee => $data) <div style="page-break-after: always;"> <table align="center" style="font-size:7pt; text-align:center"> <thead> <tr> <th style="border:0px">Funcionário</th> <th>Local Trabalho</th> <th>Endereço</th> <th>Cargo</th> <th>Admissão</th> <th>Matricula</th> <th>Escala</th> </tr> <thead> <tbody> <tr> <td>{{ $employee }}</td> <td>{{ $comp }}</td> <td>{{ $companyaddress }}</td> <td>{{ $jobposition }}</td> <td>@php echo e(date('d-m-Y', strtotime($startdate))) @endphp</td> <td></td> <td></td> </tr> </tbody> </table> Os valores obtidos são divididos por página no pdf ficando as informações de cada funcionário em uma única página. A tabela na primeira página me trás o seguinte: A tabela na segunda página: Ou seja, parece que preciso distribuir os valores de cargo de acordo com a variável $employee que é o nome do funcionário mas não estou conseguindo fazer isso. Podem me dar uma ajuda? O nome do funcionário na variável $employee é obtido através de uma outra outra query: $attendance = table::companydata() ->where('company', $comp) ->join('people_attendance', 'people_attendance.reference', '=', 'company_data.reference') ->whereBetween('date', ["$start", "$end"]) ->orderBy('date', 'asc') ->get() ->groupBy('employee'); -
Boa noite galera Recentemente criei uma instancia gratuita da AWS onde uso Ubuntu Server e coloquei uma página básica para funcionar. Nada com fins lucrativos nem profissional. Tenho domínio criado no Registro.br o qual uso para outros fins e por este motivo está definido para eu configurar a zona dns manualmente e adicionar as entradas manualmente usando os servidores do registro.br mesmo. Preciso muito saber se fiz certo, pois adicionei um registro do tipo A apontando para meu ip público da instancia da AWS e um registro CNAME com nome "www" apontando para o endereço DNS público da instancia "ec2-xx-xx-xxx-xx.sa-east-1.compute.amazonaws.com". Desse jeito que fiz funcionou e ao acessar o endereço do domínio cai na minha página web onde no servidor eu configurei o certificado ssl com lets encrypt normalmente para o domínio e para o sub domínio www. Só que, observando meus logs de acesso, vi que tem um POST de um determinado domínio com https. Ao copiar o nome desse domínio "https://site.com.br" e acessar pelo browser, a minha página é completamente carregada nesse domínio e aparentemente está usando meu certificado também pois no inicio da url fica "https "não seguro"". Agora está passando mil coisas na minha cabeça, tipo será que configurei o domínio de forma errada? Será que preciso usar o route 53 da AWS e não o registro.br? E o pior, será que o fato desse domínio estar entregando meu site todo corro algum risco? Como eu poderia impedir que isso acontecesse?
-
Consigo receber acessos estando em CGNAT?
tiagopraz respondeu ao tópico de GabrielDCM em Redes e Internet
Cara você pode usar um túnel SSH por meio de conexão reversa. Claro que dependendo do que você for fazer, vai ficar uma porcaria de lentidão. Eu já usei o ngrok por algumas vezes, mas só se você precisa muito e não tem muita intensidade de tráfego. Se tiver um conhecimento legal em Linux, melhor. Dá uma olhada: Caso não entenda nada com esse vídeo, dá uma pesquisada melhor no youtube que tem outros. -
Boa tarde Estou fazendo uma aplicação que deverá funcionar em Android para registro de ponto eletrônico. Como meio de prevenir usuários mais espertinhos que burlam a identificação de geolocalização e outros esquemas que estou estudando, pensei se existe a possibilidade de identificar quando uma conexão for feita a partir de um dispositivo com conexão 4G, ou seja, em dispositivo móvel. Sei que existe a possibilidade de eu definir acessos somente com o determinado IP do local onde os funcionários farão a marcação de pontos nos aparelhos deles, mas como esse local é uma variável, não tem como eu definir isso, nem tem como depender que os locais terão IPs fixos. Claro que o funcionário pode parar na padaria e pedir a senha do wi-fi mas aí outros mecanismos entrariam em ação. Resumindo, será que existe um pool de endereços IPs que são exclusivos de conexões móveis?
-
Pessoal boa noite Poderiam me ajudar com este caso? Estou com um problema para fazer a subtração de um intervalo de tempo. O sistema registra e calcula o horário de entrada e saída de um funcionário, mas só entrada e saída, sem intervalo. Fiz um código para tentar obter o valor total do tempo de entrada e saída do funcionário subtraindo o tempo que ele ficou em intervalo. Eu consegui fazer com que a marcação de inicio e final do intervalo fosse inserida no banco de dados e calculada, ou seja, o calculo do tempo de intervalo está funcionando corretamente. Meu problema está em fazer a subtração desse intervalo a partir do tempo total. Segue o código: $breakstart = table::attendance()->where([['idno', $idno]])->value('breakstart'); $breakend = table::attendance()->where([['idno', $idno]])->value('breakend'); $um = Carbon::createFromFormat("H:i", $breakstart); $dois = Carbon::createFromFormat("H:i", $breakend); $breakin = $um->diffInHours($dois); $breakout = floor(($um->diffInMinutes($dois) - (60 * $breakin))); $breaktotal = $breakin.".".$breakout; Com esse código acima eu obtive os valores dos registros de inicio e fim do intervalo ($breakstart e $breakend) e o tempo entre essas duas marcações eu obtive na variável $breaktotal. Funcionou usando H:i (hora e minutos) tanto quanto usando H:i:s (hora, minutos e segundos) mas optei por deixar apenas H:i. Agora, o segundo código é onde está a variável ($totalhour) que registra o tempo total. Por padrão, está trazendo apenas o intervalo entre entrada e saída do funcionário sem intervalo. Daí, eu tentei colocar um código para subtrair o tempo de intervalo do tempo total. Funcionou pelo menos em parte, o que está acontecendo é o seguinte: Ao marcar entrada às 07:00, inicio de intervalo às 13:00, final de intervalo às 14:03 e saída ás 19:00, o tempo total está ficando como 10hr7min. Quando na verdade deveria marcar 10hr57min pois dás 07:00 até 19:00 tem 12h, dás 13:00 até 14:03 tem 1h03, 12h - 1h03 ficariam 10h57. Para fazer o tempo total e a subtração do intervalo, o código está assim: $time1 = Carbon::createFromFormat("Y-m-d H:i:s", $timeIN); $time2 = Carbon::createFromFormat("Y-m-d H:i:s", $timeOUT); $th = $time1->diffInHours($time2); $tm = floor(($time1->diffInMinutes($time2) - (60 * $th))); $totalhour = ($th.".".$tm)-($breaktotal);
-
JQuery Enviar resposta do Ajax por e-mail com phpmailer
tiagopraz respondeu ao tópico de tiagopraz em Web e banco de dados
Poxa muito obrigado @DiF Me ajudou muito. Eu consegui fazer uma condição na exibição do modal para que não precisasse clicar em nada para fazer o post. O modal é exibido na página com "toast.show();". Fiz uma condição: toast.show(); if (toast.show()); { Depois daqui passei as variáveis continuei com o código de post do ajax. -
JQuery Enviar resposta do Ajax por e-mail com phpmailer
tiagopraz postou um tópico em Web e banco de dados
Galera poderiam me dar uma luz? Tenho um código que faz o envio de um input e o retorno ele insere em uma div, mais especificamente em spans dentro de uma div, depois estes spans são exibidos em um modal. Estou precisando capturar essas respostas que são inseridas nesses spans e fazer um post para a página de envio de e-mail do phpmailer e assim enviar por e-mail. Segue html onde o response do ajax é inserido: <span id="type"></span> <span id="message"></span> <span id="time"></span> <span id="jobposition" style="display:none"></span> <span id="company" style="display:none"></span> Segue o código do Ajax fazendo o post numa URL e no final, o código do response sendo inserido nos spans: $.ajax({ url: url + '/webplan/planing', type: 'post', dataType: 'json', data: { type: method, idno: idno, }, headers: { 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') }, success: function(response) { if (response['error'] != null) { // clear old text $('#type, #employee').text("").hide(); $('#time').html("").hide(); // insert new text $('#message').text(response['error']); $('#employee').text(response['employee']); toast.show(); } else { function type(clocktype) { if (clocktype == "clockin") { return lang_clockin; } else { return lang_clockout; } } // clear old text $('#type, #employee, #message').text("").show(); $('#time').html("").show(); // insert new $('#type').text(type(response['type'])); $('#employee').text(response['employee']); $('#jobposition').text(response['jobposition']); $('#company').text(response['company']); $('#time').html('<span class="fw-bolder">' + response['time'] + '</span>' + ' ' + '<span> {{ __("regitrada com sucesso!") }}</span>'); toast.show(); O que é preciso é pegar essas respostas inseridas nos spans #type, #employee, #jobposition, #company, #time e fazer um novo post no arquivo enviaremail.php. Normalmente esse tipo de post é feito por formulários através de um input, mas nesse caso não faço ideia do que usar de gatilho para fazer o post. Se puderem me ajudar ficarei muito grato. -
Computador Dell inicia mas não dá vídeo
tiagopraz postou um tópico em Computador não liga ou não dá vídeo
Boa noite. Galera, tenho um Dell optiplex 3050 small form. Eu tinha deixado ele hibernando mas depois precisei retirar o SSD sata dele, nem lembrei que estava hibernando e retirei da tomada retirei o SSD, usei o SSD em outra máquina e depois retornei ele pro Dell. Quando liguei, apenas a luz laranja piscava, apertei o Power e nada de ligar, mexi nas teclas do teclado e nada de voltar. Retirei da tomada e coloquei de novo e nada de voltar. Então decidi resetar a BIOS, pluguei o jumper nos pinos de reset, voltei o jumper pro lugar normal e nada de voltar. Retirei tudo, memórias, processador, aí sim ele ligou, luz laranja e em seguida a luz branca fixa. Porém, percebi que não está dando vídeo, já conectei no HDMI, dp e vgaas nada vídeo. Já liguei ele sem os pentes de memória e ele apita, voltei os pentes de memória, liguei sem cooler e percebi que o processador está esquentando assim como a ponte norte. Liguei o teclado e as luzes caps Lock e num Lock não acendem. Testei os conectores da fonte e estão todos funcionando nas tensões corretas. Será que estou com um problema de BIOS corrompida? -
Galera, alguém já conseguiu alguma vez substituir os endereços de DNS ipv6 da Claro/Net? Estou usando o AdGuardHome no raspberry e o bloqueio de anúncios está funcionando porém só em sites que usam ipv4. Em sites que usam ipv6 funciona somente se eu colocar o ipv6 do raspberry manualmente como endereço DNS ipv6, mas ficar colocando manualmente é muito ruim. Eu uso internet da Claro de 300mb em um roteador que a operadora colocou aqui que é um da marca Kaon CG3000. Vi que as configurações dele são capadas, não dá pra fazer quase nada. Mas acabei descobrindo umas configurações mais avançadas acessando o endereço do roteador seguido de /index.html mas mesmo assim ainda não encontrei nenhuma opção para inserir manualmente os DNS ipv6. Tentei também alterar os DNS ipv4 porque parece que os endereços de DNS ipv6 estão atrelados aos endereços de ipv4 mas não tive sucesso. A única opção que encontrei foi de inserir um endereço fixo na WAN assim eu colocaria o endereço DNS do AdGuardHome, o problema é que pra colocar endereços manuais na WAN precisa inserir também o endereço do gateway da WAN e estou em CGNAT, não faço ideia de qual o endereço de gateway WAN. Alguém tem ideia do que posso fazer?
-
Outro Enviar e-mail ao clicar em célula planilha Google
tiagopraz postou um tópico em Programação - outros
Boa noite galera. Espero que não seja tão bizarra a minha ideia rsrs. Será que seria possível a seguinte situação neste cenário? Tenho uma planilha do Google onde tem alguns endereços de e-mail (destinatários) nas células e em algumas células tem mais de um endereço de e-mail. É possível fazer com que ao clicar em uma dessas células seja aberta a tela de envio de e-mail do Gmail com os destinatários dessa célula clicada já inserida nos campos de destinatários? Além disso, seria possível que o assunto desse e-mail enviado fosse padrão acrescido de um valor de duas células a esquerda dessa célula clicada? Parece meio embaraçoso né, mas se puderem pelo menos me dar uma luz para qual linguagem usar para essa finalidade ou se existe algo parecido com as próprias ferramentas do Google.
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