×
Ir ao conteúdo
  • Cadastre-se

Marcelo Calazans

Membro Pleno
  • Posts

    199
  • Cadastrado em

  • Última visita

Tudo que Marcelo Calazans postou

  1. @zMarlon Olá colega. No seu código, nos testes que eu fiz, sempre que a hora final (término) é menor que a hora inicial, o seu código não funciona. O ideal neste tipo de cálculo com tempo, é trabalhar com o tempo todo junto, e não separado como sugere o enunciado do exercício. Veja abaixo uma ideia de cálculo com tempo, usando o Date Object, que pode ser visto na referência https://www.w3schools.com/js/js_dates.asp <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <script> var data1 = new Date(2021,2,01,8,30,5); /* Seria 01/02/2021 às 08:30:05 */ var data2 = new Date(2021,3,01,8,30,10); /* Seria 01/03/2021 às 08:30:10 */ var diffMs = (data2 - data1); var diffDia = Math.floor(diffMs / 86400000); var diffHrs = Math.floor((diffMs % 86400000) / 3600000); var diffMin = Math.round(((diffMs % 86400000) % 3600000) / 60000); var diffSec = Math.floor((diffMs/1000) % 60); alert(diffDia + " dias, " + diffHrs + " horas, " + diffMin + " minutos " + diffSec + " segundos"); </script> </body> </html> Eu sei que este seu código é um exercício, mas profissionalmente, quando se tem a ideia de pedir o dia do mês, já se tem a ideia de pedir o mês e o ano, pois eles se complementam. Dizer que é dia 25, e não dizer de qual mês e de qual ano, não significa nada na verdade. Sei que isto não é sua culpa, mas sim do enunciado do exercício na minha opinião. Veja se consegue inserir no seu exemplo o uso do Date Object, ou aguarde para ver se algum outro colega tem uma sugestão para seu código sem o uso do Date Object. Espero ter ajudado em algo. Abraços e bons estudos colega.
  2. @navegador2 Este abaixo que eu alterei, testei e aqui está funcionando: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <div id="rel"></div> <script> function relogio() { var data=new Date(); // Pega tudo dia, hora, minuto, segundo... var hora=data.getHours(); // pega só a hora var minuto=data.getMinutes(); var segundo=data.getSeconds(); if (hora < 10) { // Coloca zero a esquerda se o número for menor que 0 hora = "0" + hora; } if (minuto < 10) { minuto = "0" + minuto; } if (segundo < 10) { segundo = "0" + segundo; } var horas=hora+":"+minuto+":"+segundo; // Pré formata as horas separando com : document.getElementById("rel").innerHTML = horas; var tempo =setInterval (relogio, 1000); // Atualiza as horas do display a cada segundo. } // Fim da função relogio relogio(); </script> </body> </html> Qualquer dúvida sobre as correções, fique a vontade em perguntar. Abraços.
  3. Entendi o que você quer. Com imagens para enviar formulário, dentro daquilo que você quer, o exemplo abaixo funciona aqui comigo. <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <form method="POST"> <button type="submit" name="action" value="um"><img src="botao.jpg" /> </button> <button type="submit" name="action" value="dois"><img src="botao.jpg" /> </button> </form> <?php error_reporting(0); if ($_POST['action'] == 'um') { echo 'um'; } else if ($_POST['action'] == 'dois') { echo 'dois'; } ?> </body> </html> Se for com botão type="submit" normal sem imagens, o exemplo abaixo funciona também: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <form method="POST"> <input type="submit" name="action" value="um" /> <input type="submit" name="action" value="dois" /> </form> <?php error_reporting(0); if ($_POST['action'] == 'um') { echo 'um'; } else if ($_POST['action'] == 'dois') { echo 'dois'; } ?> </body> </html> Veja se era isso que você queria.
  4. @xrogerinho Olá, colega. Esses dois exemplos abaixo: <input type="submit" value="Submit!" /> <input type="image" src="myButtonImage.jpg" value="Submit!" alt="Submit!" /> São em essência a mesma coisa, portanto, se a pessoa clicar no botão com a imagem, ele irá submeter o formulário, e você desta forma saberá que a pessoa clicou no botão. Por isso que eu acho que isso que você está querendo fazer, não faz muito sentido, mas, em todo caso, abaixo tem um código que funciona dentro da sua ideia, mas veja bem se é isso que você quer, e se não tem outra forma melhor de fazer isso. <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <form method="POST"> <input type="hidden" value="envio" name="envio"> <input type="image" src="botao.jpg" alt="menu" value="imagem" name="imagem"> </form> <?php error_reporting(0); $enviado=$_POST['envio']; if ($enviado == 'envio') { echo 'o botão foi apertado'; } ?> </body> </html> Abraços.
  5. @LucasRodriguesBorges Essa assinalada abaixo, é a meta tag description. <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> <meta name="description" content="Trabalhamos com criação, desenvolvimento e designer de websites de forma profissional garantindo os melhores preços e prazos de confecção graças a nossa renomada equipe que possui décadas de experiências na área de programação e desenvolvimento"/> </head> <body> </body> </html> Mas não quer dizer que você vai colocar ela no site, e automaticamente isso muda no Google. Isso vai mudar quando o Google “estiver disposto a mudar”, pode demorar um pouco, no próximo rastreamento do Google talvez. Mas há casos em que o Google decide ignorar essa meta tag description, e no lugar dela ele coloca uma parte de um texto da página. "SEO não é uma ciência exata." Abraços colega.
  6. @M.tech Legal colega, o importante é você ter achado uma solução para o seu problema. Abraços.
  7. É isso mesmo, se você abrir direto o código para receber, abaixo: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <?php $botao = $_POST["botao"]; if ($botao == "Google") { header("location:https://www.google.com.br"); } ?> </body> </html> Vai dar esse erro mesmo, aqui comigo, usando também o XAMPP, igual a você, acontece o mesmo: Mas o importante, é que abrindo corretamente a partir do código para enviar, que você chamou de HTML, funciona. Quem bom que deu certo colega!! Abraços.
  8. Infelizmente então, fazer o PHP abrir uma nova página do navegador em nova guia, desta maneira que você está querendo, é difícil. O PHP só controla aquilo que está ao lado do servidor, abrir novas guias assim, é algo que está mais voltado ao lado do cliente, que é próprio do HTML e do Java Script. Mas você pode tentar um recurso no <form> do HTML que hoje é meio ultrapassado profissionalmente, mas ainda funciona. Veja o exemplo e teste aí se funciona com você: Código para enviar: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <form action="botao.php" method="post" target="_blank"> <input type="submit" name="botao" value="Google"> </form> </body> </html> Código para receber: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <?php $botao = $_POST["botao"]; if ($botao == "Google") { header("location:https://www.google.com.br"); } ?> </body> </html> Aqui testado comigo, desta forma funciona. Mas observe que não é o PHP que abre em outra guia, é o HTML usando no <form> o target="_blank".
  9. @M.tech Era isso que você queria? <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <style> nav { display: flex; flex-wrap: wrap; } nav a { text-decoration: none; display: block; padding: 15px 25px; text-align: center; background-color: rgb(189, 185, 185); color: #464141; margin: 0; font-family: sans-serif; } nav a:hover { background-color: #777777; color: #ffffff; } </style> <nav> <a href="#">HOME</a> <a href="#">SOBRE</a> <a href="#">CONTATOS</a> </nav> </body> </html> Na verdade eu nem precisei ter o trabalho de escrever este código, pois existem muitos exemplos sobre isso na Internet. Veja se era isso que você queria, e se for, espero ter ajudado. Abraços.
  10. Exato, é através da linha. Essa linha abaixo devolve uma variável que deve ser tratada no PHP. $url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=$origin&destinations=$destino&mode=driving&language=en-EN&sensor=false"; Como mostra o código abaixo do stackoverflow que eu coloquei acima no link, e que eu usei como base para criar o meu código. $i = 0; $arr = array('90450000','95180000'); foreach ($arr as &$valuedestino) { $origin = '95700000'; $destino = $valuedestino; $url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=$origin&destinations=$destino&mode=driving&language=en-EN&sensor=false"; $data = @file_get_contents($url); $result = json_decode($data, true); foreach($result['rows'] as $distance) { $i++; echo '<br>'; echo "$i - Distance from you: " . $distance['elements'][0]['distance']['text'] . ' (' . $distance['elements'][0]['duration']['text'] . ' in current traffic)'; } } Esse código do stackoverflow acima, funciona perfeitamente comigo, você pode até usá-lo, mas no final da linha, você terá que colocar a sua API Key do Google Maps Platform, como está abaixo: $url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=$origin&destinations=$destino&mode=driving&language=en-EN&sensor=false&key=SUA API KEY"; E se você não inserir a sua API KEY, essa linha retorna o seguinte erro: <DistanceMatrixResponse> <status>REQUEST_DENIED</status> <error_message>You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account</error_message> </DistanceMatrixResponse>
  11. @xrogerinho Pelo que eu observei, até parece se de graça mesmo. E Google me ofereceu um limite gratuito, mas para liberar esse limite gratuito, eles só ativam a conta se você inserir o cartão de credito. Eu acho que eles fazem isso, para começar a cobrar das pessoas no cartão assim que o limite gratuito acabe. Mas vamos ver se alguém aqui tem outra solução. Abraços.
  12. Olá, colega. Confesso que nunca usei esse serviço, mas fiz um teste hoje pela manhã para ver como funciona. Se a proposta é usar a opção do site abaixo que você nos trouxe: Devo lhe informar que apenas o código que você quer não funciona, pois você precisa ter uma API Key do Google Maps Platform pata autenticar. Como informa a resposta da solicitação abaixo: <DistanceMatrixResponse> <status>REQUEST_DENIED</status> <error_message>You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account</error_message> </DistanceMatrixResponse> Eu fiz o teste com exemplos de código padrão encontrados na web, como este, com esse por exemplo: https://pt.stackoverflow.com/questions/153077/php-calcula-distância-entre-cidades Mas ele apenas funciona se você tiver criado uma API Key do Google Maps Platform, pelo que pude observar. Criar é fácil, eu criei uma na conta que eu tenho e funciona bem, mas a criação da conta, mesmo que de forma gratuita, pede a inclusão de um cartão de crédito, como mostrado abaixo: Comigo funcionou, pois, eu já tenho minha conta de faturamento no Google com o meu devido cartão de crédito cadastrado. Infelizmente não posso colocar aqui o meu código que funcionou, pois ele tem a minha API Key do Google Maps Platform vinculado ao meu cartão de credito. Você vai precisar criar uma para você. O seu problema não se resolve apenas com o código, pelo que pude apurar. Mas como não existem pessoas donas da verdade, aguarde para ver se algum outro colega pode trazer outras opções. Abraços e boa sorte.
  13. @Paulo Ricardo Matias Olá, colega. O exemplo abaixo funciona aqui comigo: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <script> var A = 10 var B = 9 var X = A + B /* Você pode exibir assim */ alert("X = " + X.toString()); /* OU */ /* Assim*/ console.log("X = " + X.toString()); </script> </body> Eu preferi usar o toString() para converter o número em string antes de concatenar. Abraços.
  14. @jvssz_ Olá, colega. Se eu precisasse fazer isso, eu faria com Java Script, abaixo tem um exemplo: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <style> div { cursor: pointer; border-radius: 3px; color: white; background-color: blue; padding: 10px; display: inline-block; } </style> <div onclick="google()">Google</div> <script> function google() { window.open('https://www.google.com.br', '_blank'); } </script> </body> </html> Testei aqui e está funcionando. Se ficar alguma dúvida sobre o exemplo apresentado, pode perguntar. Abraços.
  15. @LucasRodriguesBorges Para ter a ideia do que tem que alterar no seu código para que a consistência do checkbox possa funcionar, precisaria ver a parte do código que recebe os dados dos inputs. Vendo isso, talvez eu pudesse ajudar mais. Abraços colega.
  16. Mas é isso mesmo que vai acontecer. Eu coloquei o alert apenas para sinalizar dentro do if quando o javascript detecta que foi clicado no botão sem marcar o checkbox. Agora você teria que ver como isso iria ficar no caso do seu código, e substituir o alert por outra coisa que fique adequada para você. Mas vou dar uma sugestão. Porque você não esquece o javascript então para isso, e deixa o próprio HTML fazer esse trabalho? Talvez fosse mais fácil para você. Seria trocar isso: <input type="button" value="Enviar" id="TrabalheEnviar" class="btn-form" onclick="testa()"> Por isso: <input type="submit" value="Enviar" id="TrabalheEnviar" class="btn-form"> Veja abaixo o código todo sem o javascript e só com HTML: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <form id="FormCurriculum"> <div class="col-sm-12 col-md-12 col-lg-12 form-group"> <label for="nome">Nome</label> <br /> <input type="text" id="nome" class="form-control" /> <div class="collapse" id="erronomecurriculum" name="erronomecurriculum"> <p style="color: red;"> Campo obrigatório</p> </div> </div> <div class="col-sm-12 col-md-12 col-lg-12 form-group"> <label for="curremail">E-mail</label> <br /> <input type="text" id="curremail" class="form-control" /> <div class="collapse" id="vazioemailcurriculum" name="vazioemailcurriculum"> <p style="color: red;"> Campo obrigatório</p> </div> <div class="collapse" id="erroemailcurriculum" name="erroemailcurriculum"> <p style="color: red;"> Insira um e-mail válido</p> </div> </div> <div class="col-sm-12 col-md-12 col-lg-12 form-group"> <label for="curriculum2">Copie e cole seu currículo aqui :</label> <br /> <textarea class="form-control" id="curriculum2" name="curriculum2" rows="7"></textarea> <div class="collapse" id="errocurriculum" name="errocurriculum"> <p style="color: red;"> Campo obrigatório</p> </div> </div> <br /> <div class="col-sm-12 col-md-12 col-lg-12 form-group"> <input type="checkbox" name="lgpd" value="De Acordo" id="lgpd" required="required" class="ui-state-error h5-active"> Eu li, estou ciente das condições de tratamento dos meus dados pessoais e dou meu consentimento, quando aplicável, conforme descrito nesta <a href="#" style="color:#ad033b" target="_blank">Política de Privacidade</a>. <br> <div class="collapse" id="errocurriculum" name="errocurriculum"> <p style="color: red;"> Campo obrigatório</p> </div> </div> <div> <input type="submit" value="Enviar" id="TrabalheEnviar" class="btn-form"> <input type="reset" value="Apagar Campos" class="btn-form"> </div> </form> </body> </html> Talvez assim fosse mais fácil, o próprio HTML impede o envio do formulário caso o checkbox não tenha sido marcado. Abraços.
  17. @DanJavascript Com o (for) vai dar certo também. É legal você tentar fazer com o (for) também, para praticar. Bons estudos colega.
  18. @DanJavascript Olá colega. O enunciado desse exercício, que deve ter sido proposto em aula, está meio estranho. Não há como fazer uma contagem regressiva da forma que você está querendo usando um laço while, pelo simples motivo de que o laço é muito rápido, e você não verá a contagem, e sim apenas o último número, que neste meu caso é o zero (0). Veja abaixo o que estou dizendo: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <p>Numero</p> <input type="number" id="numero-entrado" name="numero-entrado"> <br> <input type="submit" value="Iniciar" onclick="contar()"> <p> <div id="contador"></div> </p> <p></p> <script> function contar(){ var numero = Number(document.getElementById('numero-entrado').value); // while(numero >= 0){ document.getElementById("contador").innerHTML = numero; numero--; } } </script> </body> </html> Mas você deve estar pensando, como não vejo, ele não está contando, mas está sim. Veja abaixo o mesmo exemplo com alert parando a execução, e veja que ele conta, mas é tão rápido que você não podia ver antes: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <p>Numero</p> <input type="number" id="numero-entrado" name="numero-entrado"> <br> <input type="submit" value="Iniciar" onclick="contar()"> <p> <div id="contador"></div> </p> <p></p> <script> function contar(){ var numero = Number(document.getElementById('numero-entrado').value); // while(numero >= 0){ alert(numero); document.getElementById("contador").innerHTML = numero; numero--; } } </script> </body> </html> O correto para ver a contagem regressiva, seria esse exemplo abaixo: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <p>Numero</p> <input type="number" id="numero-entrado" name="numero-entrado"> <br> <input type="submit" value="Iniciar" onclick="contar()"> <p> <div id="contador"></div> </p> <p></p> <script> function contar(){ var numero = Number(document.getElementById('numero-entrado').value); // var x = setInterval(function() { // document.getElementById("contador").innerHTML = numero; numero--; if (numero < 0) { clearInterval(x); } // }, 1000); } </script> </body> </html> Veja com calma os 3 exemplos que coloquei para entender, e se caso fica alguma dúvida, fique à vontade em perguntar. Abraços colega.
  19. @LucasRodriguesBorges Olá colega. Usando <input type="button">, você precisaria fazer assim para tratar isso com Java script: <input type="button" value="Enviar" id="TrabalheEnviar" class="btn-form" onclick="testa()"> Veja abaixo: https://www.w3schools.com/tags/att_input_type_button.asp Segue abaixo o código todo: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <form id="FormCurriculum"> <div class="col-sm-12 col-md-12 col-lg-12 form-group"> <label for="nome">Nome</label> <br /> <input type="text" id="nome" class="form-control" /> <div class="collapse" id="erronomecurriculum" name="erronomecurriculum"> <p style="color: red;"> Campo obrigatório</p> </div> </div> <div class="col-sm-12 col-md-12 col-lg-12 form-group"> <label for="curremail">E-mail</label> <br /> <input type="text" id="curremail" class="form-control" /> <div class="collapse" id="vazioemailcurriculum" name="vazioemailcurriculum"> <p style="color: red;"> Campo obrigatório</p> </div> <div class="collapse" id="erroemailcurriculum" name="erroemailcurriculum"> <p style="color: red;"> Insira um e-mail válido</p> </div> </div> <div class="col-sm-12 col-md-12 col-lg-12 form-group"> <label for="curriculum2">Copie e cole seu currículo aqui :</label> <br /> <textarea class="form-control" id="curriculum2" name="curriculum2" rows="7"></textarea> <div class="collapse" id="errocurriculum" name="errocurriculum"> <p style="color: red;"> Campo obrigatório</p> </div> </div> <br /> <div class="col-sm-12 col-md-12 col-lg-12 form-group"> <input type="checkbox" name="lgpd" value="De Acordo" id="lgpd" required="required" class="ui-state-error h5-active"> Eu li, estou ciente das condições de tratamento dos meus dados pessoais e dou meu consentimento, quando aplicável, conforme descrito nesta <a href="#" style="color:#ad033b" target="_blank">Política de Privacidade</a>. <br> <div class="collapse" id="errocurriculum" name="errocurriculum"> <p style="color: red;"> Campo obrigatório</p> </div> </div> <div> <input type="button" value="Enviar" id="TrabalheEnviar" class="btn-form" onclick="testa()"> <input type="reset" value="Apagar Campos" class="btn-form"> </div> </form> <script> function testa() { var checkBox = document.getElementById("lgpd"); if (checkBox.checked == false){ alert('concorde por favor'); } } </script> </body> </html> Testei aqui este código e está funcionando, veja se roda aí com você. Abraços.
  20. Boa sorte na tarefa irmão.
  21. @lucassaculsantos Olá colega. Como sugestão, organize melhor o seu código. Pegue por exemplo, os dados dos inputs logo no início, armazene em uma variável e use essa variável para tudo ao longo do código todo. Vou dar um exemplo abaixo, mas a parte com os if´s de consistência vou deixar para você, se não perde a graça: <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body> <form> <p>Nome</p> <input type="text" id="txtNome" name="txtNome"> <p>Ano Nascimento</p> <input type="number" id="txtAnoNascimento" name="txtAnoNascimento"> <p>Ano Empresa</p> <input type="number" id="txtAnoEmpresa" name="txtAnoEmpresa"> <p>Ano Atual</p> <input type="number" id="txtAnoAtual" name="txtAnoAtual"> <br> <input type="submit" value="Calcular" onclick="calcula()"> </form> <script> function calcula() { var ano_nascimento = document.getElementById('txtAnoNascimento').value; var ano_admissao = document.getElementById('txtAnoEmpresa').value; var ano_atual = document.getElementById('txtAnoAtual').value; var nome = document.getElementById('txtNome').value; if (nome.trim() == '') { alert('Campo nome é obrigatório'); return false; } if (nome.trim().length <= 7) { alert('Nome digitado é muito curto'); return false; } if (ano_nascimento == "") { alert('Campo data de nascimento é obrigatório'); return false; } if (ano_admissao == "") { alert('Campo do ano da admissão na empresa é obrigatório'); return false; } if (ano_atual == "") { alert('Campo do ano atual é obrigatório'); return false; } var idade = parseInt(ano_atual) - parseInt(ano_nascimento); var tempo = parseInt(ano_atual) - parseInt(ano_admissao); alert(idade); alert(tempo); /* Falta fazer os if´s abaixo*/ } </script> </body> </html> Abraços colega.
  22. @bigbossbr O jquery as vezes faz algumas coisas estranhas mesmo, fica difícil de entender o que acontece. Sua ideia dele estar guardando um cache é bem plausível mesmo. Não achei a sua solução ruim, mesmo que o usuário tenha que preencher tudo novamente, ele nem vai notar que é algo do código. No seu lugar, mesmo que eu conseguisse fazer de outra forma, apenas por desencargo de consciência, eu continuaria com o reload. Melhor as vezes se garantir de uma forma mais funcional, do que no seu caso, se arriscar a ficar gravando dados errados. Mas se caso você descobrir, posta por favor a solução porque fiquei curioso. Abraço irmão.
  23. @bigbossbr Olá colega, gostaria de ajudar, mas o ideal era ver o código todo rodando no seu ambiente de trabalho para entender melhor e fazer alguns testes. Mas olhando o seu código, achei estranha uma coisa, que você com certeza já deve ter notado também. Abaixo no código, ele só deveria pela lógica, entrar ali uma vez, quando houvesse o clique. Pois parece ser ali que o AJAX direciona para a gravação. $('button[data-confirm]').click(function (event) { console.log('entrou'); }) Você já tentou colocar ali um console.log para ver em que situações ele entra naquela estrutura? Vamos esperar para ver se alguém tem outra ideia. Boa Sorte Irmão!!

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...

Como se tornar um desenvolvedor full-stack

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!