Ir ao conteúdo
  • Cadastre-se

Dark-Programação

Membro Pleno
  • Posts

    20
  • Cadastrado em

  • Última visita

  1. Estou fazendo um Deploy no heroku de um projeto pessoal desenvolvido em PHP no qual está quase concluído, porém, estou tendo esse erro com uma query do meu projeto que não está sendo executada no servidor, mas a mesma query no banco de dados do localhost ela executa normalmente, acredito que o mysql do JawsDB seja uma versão inferior da qual eu estava usando, porém, não sei como vou substituir essa query para uma versão que seja suportada e ela consiga entregar o mesmo padrão da anterior, também tentei usar o clearDB mas acontece o mesmo problema. O que eu quero fazer é o seguinte. Quero que a query consiga resgatar o valor da tabela agrupados pelo dia do mês, mesmo se não tiver gasto naquele dia, ele retorna a data e o valor 0 dessa forma que está no print. Assim eu consigo colocar no gráfico os dados mensais de gasto do usuário. Porém, no Workbench ele apresenta essa informação "WITH" não é válido nesta posição para esta versão do servidor, esperando EOF,BEGIN, CACHE, CHECKSUM, COMMIT, DEALLOCATE. Eu sinceramente não sei como substituir a query, estou iniciando no desenvolvimento web. O código mysql que desenvolvi: use `jk1zzmwwn6wtsy1v`; WITH days AS( SELECT DATE_ADD('2020-07-01',INTERVAL rnk DAY) day FROM(SELECT row_number() over() -1 rnk FROM information_schema.columns LIMIT 31)gerado) SELECT days.day, IFNULL(sum(expenses.value), 0) as amount FROM days LEFT JOIN tb_expenses as expenses ON expenses.date = days.day AND expenses.id_wallet = 0 AND expenses.status = 1 WHERE days.day BETWEEN '2020-07-01' AND '2020-07-31' GROUP BY days.day ORDER BY days.day Versão do JawsDB = 5.7.23-log (Source distribution) e está sendo compilado no linux. Versão do ClearDB = 5.5.62 (MySQL Comminity Server - GPL) e está sendo compilado no linux. Versão do meu localhost = 8.0.20 (MySQL Comminity Server - GPL)
  2. @MillenaSantos Olha pelo que eu entendi você que passar uma array vazia caso o usuário não informar nada, correto ?? Se for isso, o que você pode está fazendo é criando uma array vazia no próprio php e se caso o usuário passar algum parâmetro no checkbox você colocar os dados do chack no lugar dessa array, da seguinte forma <?php $check = array(); if(isset($_POST('check') && !empty($_POST('check')) { $check = $_POST('check'); } ?> Porém, se o erro estiver na questão de percorrer a array com o foreach porque basicamente a array vai está vazia, você pode fazer o seguinte <?php if(!empty($_POST['check']) { foreach($_POST['check'] as $key => $value) { //código... } } ?> Espero ter ajudado, qualquer coisa só responder!!
  3. Eu acabei esquecendo de colocar aqui, é que a session_start está fora da classe. Mas então mano, eu encontrei o problema é que tinha esquecido que ativei o session.cookie_secure do meu php.ini, fazendo com que ele só criasse o cookie da sessão se eu estivesse com uma conexão segura (SSL), por isso ele não estava executando. Porém, com pesquisas para encontra algo para substituir essa forma de login, encontrei o JWT (Json Web Token), que segundo alguns artigos é mais seguro usar JWT do que a session do php, já que a session fica exposta ao usuário, fazendo com que ele possa editar o cookie de sessão e entrar na área de clientes, já com jwt ele só iria conseguir se tivesse a senha usada para gerar o JWT, fazendo com que a segurança fosse mais forte nesse sentido. Mas muito obrigado pela atenção.
  4. Boa noite!! Então amigo, não entendi muito algumas linhas de seu código, como por exemplo o por que de ter um echo $nome ali no while e por que sua função não tem uma identificação para ela um nome exemplo function name(), mas o que pode está acontecendo é que a variável nome ela está contida dentro de um escopo "local" no caso na função, para você conseguir mostrar o nome do usuário, você teria que colocar uma variável $nome fora da função, porque o global $nome, faz com que você possa alterar alguma variável que esteja fora dessa função, dessa maneira. <?php $name = null; function getName() { global $nome; $name = "Dark"; } // Executando a função getName(); // Vai mostrar o nome = Dark, porém, executei ela dentro de uma função. echo $name ?> Assim, quando você coloca a variável fora da função você consegue capturar ela no HTML, porque ela não está no escopo local que seria dentro da função e sim no escopo global que seria fora da função. Não fiz o teste do seu código porque não estou no Pc, estou pelo celular agora, porém, se não resolver só avisar.
  5. Olá, estou com um grande problema que está tirando minha paciência e noites de sono kkk, estou fazendo um projeto pessoal a onde estou usando uma estrutura MVC, com rotas e executando a estrutura com o próprio apache do PHP. Na área de login do usuário, os dados do usuário é enviado para uma rota de back-end através do Ajax, a onde é feita a validação do cliente para verificar se aquela conta existe, até ai está funcionando perfeitamente não contém nem um problema. O problema é que quando eu inicio a sessão e passo os dados do usuário nessa sessão para ser resgatado na página App, onde é a página de usuários, eu simplesmente perco essa sessão, é como se não existisse ou eu não passasse nada nela, simplesmente uma array vazia, porém na pagina de login, eu consigo visualizar no ajax que a array está preenchida corretamente, também tentei usar sem ajax, mas acontece a mesma coisa e eu não sei o que está acontecendo. Lembrando que quando o usuário é autenticado eu envio ele para a página de usuários através do JavaScript usando o location.href = '/app'. Código jQuery que faz a validação de dados que o usuário enviou para efetuar o login. function invalidRegister() { $('.loadingArea').hide(); $('.sectionLoginOneInfo p').show(); $('.sectionLoginOneForm').addClass('formInvalid'); setTimeout(() => { $('.sectionLoginOneForm').removeClass('formInvalid'); }, 1000); } $('.sectionLoginOneForm form').on('submit', function(e) { e.preventDefault(); $('.loadingArea').show() const form = $(this).serializeArray(); const email = form[0]; const password = form[1]; // Validar email const valid = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/); let validate = true; if(email.value == '' || !valid.test(email.value)) { invalidRegister(); $('.sectionLoginOneInfo p').html('Ops… Usuário invalido!'); validate = false; } if(password.value == '' || password.value.length < 8) { invalidRegister(); $('.sectionLoginOneInfo p').html('Ops… Usuário invalido!'); validate = false; } if(validate) { $.ajax({ type: 'post', url: '/authenticateUser', data: form, dataType: 'json', success: d => { if(d.messege == 'success') { // Envia o usuário para a página de usuários location.href='/app'; } else { invalidRegister(); $('.sectionLoginOneInfo p').html(d.messege); } }, error: erro => { invalidRegister(); $('.sectionLoginOneInfo p').html('Algum erro inesperado aconteceu, tente novamente mais tarde.'); } }) } }) Função que faz a verificação de autenticidade do cliente, para verificar se a conta existe no banco de dados. Os posts estão sendo enviados pelo Ajax. /** * Função para autenticar a entrada do usuário no sistema * @access public */ public function authenticateUser() { $info = array(); $email = $_POST['email']; $password = $_POST['password']; // Criando conexão com o banco de dados e se comunicando com o modal. $user = Container::getModel('User'); $user->__set('user_email', $email); $user->__set('user_password', $password); /** * Verifica se o usuário existe. * Verifica se o email do usuário existe no banco de dados, para depois veficar * a senha do usuário. Se estiver valido, iniciamos a sessão. * @name $date */ $date = $user->getUserEmail(); if(count($date) > 0) { if($this->checkArgon2id($password, $date[0]['user_password'])) { if($date[0]['user_confirmed'] == 1) { $_SESSION['authenticate'] = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']); $_SESSION['id'] = $date[0]['id']; $_SESSION['name'] = $date[0]['user_name']; $_SESSION['surname'] = $date[0]['user_surname']; $_SESSION['user_email'] = $date[0]['user_email']; $_SESSION['user_gender'] = $date[0]['user_gender']; // Informando ao ajax que o login foi efetuado com sucesso $info['messege'] = 'success'; } else { // Informando ao ajax que o usuário falta confirmar seu acesso $info['messege'] = 'Você não confirmou o seu cadastro, por favor, verifique seu e-mail.'; } } } else { // Informando o usuário não foi encontrado $info['messege'] = 'Ops… Usuário invalido!'; } // Envia as informações da info para o Ajax, através do json print_r(json_encode($info, JSON_UNESCAPED_UNICODE)); } Caso a pergunta não ficou claro, só informar, estou precisando muito da ajuda de alguém, desde já agradeço muito.
  6. Muito obrigado cara, vou dar uma estudada nessa teoria, a função que você fez deu certo, mas a complexidade dele está muito alta, demorando em alguns caso de teste mais de 1 segundo kkkkk, mas deu para ter uma noção de como fazer, pena que estouro o tempo de execução kk, mas acho que consigo diminuir a complexidade da uma otimizada nele, sem estresse kk, mas então amigo, muitoooo obrigado, me ajudou muito, vou lhe adicionar no discord para a gente troca uma ideia e falar mais sobre programação, abraços e muito obrigado!!
  7. valeu amigo, muitoooo obrigado mesmo, sem estresse, eu encontrei algo sobre programação dinâmica e estou entendo mais, se conseguiu teria como me explicar a teoria que usou e se existe algum matemático que já tenha feito esse problema para eu pesquisar mais e saber como ele fez ??
  8. Oii Brund, estou sim amigo eu tentei fazer mas simplesmente deu erro, eu estou tentando resolver uma questão da obi de 2006 do nível 2, 2° fase, a colheita de caju, também tem ela no uri https://www.urionlinejudge.com.br/judge/en/problems/view/2305 , mas a ideia que eu tive fazendo umas somas que nem sei se está certo, funcionou para os 3 exemplos do uri, mas o debug já não funcionou da a resposta errada, já tentei de tudo e não conseguir e sobre essa forma que pensei da matriz eu não consigo ter uma ideia de como eu vou implementar ela, eu pensei em recursão mas não dá certo porque eu não sei qual a área que o usuário vai querer para calcular, ou seja, não sei onde iria parar a recursão, pensei em programação dinâmica mas não achei nem um conteúdo que desse uma luz sobre esse assunto, vou deixa o código que eu tentei aí em baixo caso queira dá uma olhada, muito obrigadoo!! Lembrando que não sei se está correto, acredito que está totalmente errado pois não conseguir resolver os exemplos do debug que esse exercício possui e já estou sem ideia kkk L, C, M, N = input().split() l = int(L) c = int(C) m = int(M) n = int(N) matriz = [0] * l acumulado = [0] * l max_ponto = 0 for i in range(l): entrada = list(map(int, input().split())) matriz[i] = list(entrada) acumulado[i] = list(entrada) a = matriz b = acumulado for i in range(len(b)): if i<l: b[i][0] = 0 for j in range(len(b[i])): if j < n: b[i][0] += a[i][j] for j in range(len(b[i])): if 0 < j < (c-n+1): b[i][j] = b[i][j-1] + a[i][j+n-1] - a[i][j-1] for j in range(len(a)): if j < (c-n+1): a[0][j] = 0 for i in range(len(a[j])): if i < m: a[0][j] += b[i][j] for i in range(len(a[j])): if 0 < i < (l-m+1): a[i][j] = a[i-1][j] + b[i+m-1][j] - b[i-1][j] for i in range(len(a)): if i < l-m+1: for j in range(len(a[i])): if j < (c-n+1): if a[i][j] > max_ponto: max_ponto = a[i][j] print(max_ponto)
  9. Nessa matriz que colocou ele só poderia pegar 1xn com n<=5 se ele escolhesse um exemplo 1x2 ele iria pegar as seguintes áreas [1,2]=3, [2,1]=3, [1,1]=2, [1,1]=2, não é necessário mostrar os índices apenas os resultados possíveis. Para fixar melhor, vamos supor que temos a seguinte matriz [1, 2, 3, 4, 5] e ele quer uma área de 1x2 então devemos calcular [1,2] = 3, [2,3] = 5, [3,4] = 7 e [4,5] = 9, mesmo exemplo se sobrepõe para matrizes de NxM com área de LxC, caso ainda tiver dúvida só falar!!
  10. Não amigo ele vai pegar o seguinte matriz = [ [1, 1, 1, 3, 1], # Ele soma (1 +1 (linha 1) + 1 + 2 (linha 2)), depois 1 + 1 + 2 + 1, depois 1 + 3 + 1 + 1, depois 3 + 1 + 1 +1 [1, 2, 1, 1, 1], # Ele soma (1 + 2 (linha 2) + 1 + 1(linha 3)), depois 2 + 1 + 1 + 1, depois 1 + 1 + 1 + 2, depois 1 + 1 + 2 + 1 [1, 1, 1, 2, 1], # Ele soma (1 + 1 (linha 3) + 1 + 1 (linha 4)), depois 1 + 1 + 1 + 2, depois 1 + 2 + 2 + 1, depois 2 + 1 + 1 + 1 [1, 1, 2, 1, 1], # 2, 3 [1, 3, 1, 1, 3] # 4, 2 ] e assim por diante, caso ainda não ficou claro só avisar que tento explicar novamente! Acho que dar para fazer por programação dinâmica mais não tenho mínima ideia de como faria, não encontrei na internet conteúdo que explicasse isso.
  11. Cara poderia ver se essa conversão estaria correta ? Pois a resposta algumas bate e outras não. #include <iostream> using namespace std; int main() { int l, c, m, n, i, j, k; int a[1000][1000], b[1000][1000]; cin >> l >> c >> m >> n; for (i = 0; i < l; i++) for (j = 0; j < c; j++) cin >> a[i][j]; for (i = 0; i < l; i++) { b[i][0] = 0; for (j = 0; j < n; j++) b[i][0] += a[i][j]; for (j = 1; j < c-n+1; j++) b[i][j] = b[i][j-1] + a[i][j+n-1] - a[i][j-1]; } for (j = 0; j < c-n+1; j++) { a[0][j] = 0; for (i = 0; i < m; i++) a[0][j] += b[i][j]; for (i = 1; i < l-m+1; i++) a[i][j] = a[i-1][j] + b[i+m-1][j] - b[i-1][j]; } int max = 0; for (i = 0; i < l-m+1; i++) for (j = 0; j < c-n+1; j++) if ( a[i][j] > max ) max = a[i][j]; cout << max; return 0; } L, C, M, N = input().split() l = int(L) c = int(C) m = int(M) n = int(N) matriz = [0] * l acumulado = [0] * l max_ponto = 0 for i in range(l): entrada = list(map(int, input().split())) matriz[i] = list(entrada) acumulado[i] = list(entrada) a = matriz b = acumulado for i in range(len(b)): if i<l: b[i][0] = 0 for j in range(len(b[i])): if j < n: b[i][0] += a[i][j] for j in range(len(b[i])): if 0 < j < (c-n+1): b[i][j] = b[i][j-1] + a[i][j+n-1] - a[i][j-1] for j in range(len(a)): if j < (c-n+1): a[0][j] = 0 for i in range(len(a[j])): if i < m: a[0][j] += b[i][j] for i in range(len(a[j])): if 0 < i < (l-m+1): a[i][j] = a[i-1][j] + b[i+m-1][j] - b[i-1][j] for i in range(len(a)): if i < l-m+1: for j in range(len(a[i])): if j < (c-n+1): if a[i][j] > max_ponto: max_ponto = a[i][j] print(max_ponto)
  12. Esse a e b são duas matrizes ? adicionado 34 minutos depois Muito obrigado !! Eu conseguir fazer, não precisei traduzir, conseguir seguir uma linha de raciocínio parecida e fiz, o que tinha me quebrado era como eu ia analisar as áreas que podia ser MxN mas eu conseguir, valeu mesmo
  13. Gostaria que alguém de enorme coração fizesse uma 'conversão/tradução' desse algoritmo que está em c++ para python, da questão https://www.urionlinejudge.com.br/judge/en/problems/view/2305 ficaria muitoooooooooooo super grato se alguém conseguir, vai fazer uma pessoa muito feliz kk. #include <iostream> using namespace std; int main() { int l, c, m, n, i, j, k; int a[1000][1000], b[1000][1000]; cin >> l >> c >> m >> n; for (i = 0; i < l; i++) for (j = 0; j < c; j++) cin >> a[i][j]; for (i = 0; i < l; i++) { b[i][0] = 0; for (j = 0; j < n; j++) b[i][0] += a[i][j]; for (j = 1; j < c-n+1; j++) b[i][j] = b[i][j-1] + a[i][j+n-1] - a[i][j-1]; } for (j = 0; j < c-n+1; j++) { a[0][j] = 0; for (i = 0; i < m; i++) a[0][j] += b[i][j]; for (i = 1; i < l-m+1; i++) a[i][j] = a[i-1][j] + b[i+m-1][j] - b[i-1][j]; } int max = 0; for (i = 0; i < l-m+1; i++) for (j = 0; j < c-n+1; j++) if ( a[i][j] > max ) max = a[i][j]; cout << max; return 0; } Muito obrigado!!!
  14. Então, estou com um problema de programação que é basicamente esse problema ai de baixo. Ficaria muito grato se alguém pode-se me dar uma luz kk. Preciso através da entrada do usuário retornar a soma de todas as áreas que o usuário determinou que a matriz contém, por exemplo: tenho uma matriz (determinada também pelo usuário) de 5x5 (5 linhas e 5 colunas) e ele hipoteticamente quer que eu retorne a soma de todas as 2x2 (2 linha e 2 coluna) que a matriz 5x5 contém, ou seja, ele quer todas as somas possíveis da área de tamanho 2x2 que a matriz possui. Exemplo mais palpável: possuo essa matriz em baixo matriz = [[1, 1, 1, 3, 1], [1, 2, 1, 1, 1], [1, 1, 1, 2, 1], [1, 1, 2, 1, 1], [1, 3, 1, 1, 3]] O usuário quer que eu retorne todas as somas possíveis de uma área 2x2 contida na matriz 5x5, ou seja, soma = ([1, 1], [1, 2]) = 5, ([1,1], [2,1]) = 5, ([1,3], [1,1]) = 6 e assim por diante... Se não ficou muito claro peço desculpas e deixa um comentário que eu tento editar ou explicar com outras palavras. Muito obrigado!!
  15. Ajudou sim amigo, mas ainda minha ideia está muito abstrata para a resolução do exercício, eu tenho uma lista do mapa do tabuleiro em formato de matriz, que fica as devidas localizações de cada navio no seguinte formato: [['.', '#', '.', '.', '.', '.', '#'], ['#', '#', '#', '.', '.', '#', '#'], ['.', '#', '.', '.', '.', '.', '#'], ['.', '.', '.', '.', '#', '.', '#'], ['.', '#', '.', '.', '#', '.', '#'], ['.', '#', '#', '#', '#', '.', '#'], ['.', '.', '.', '.', '.', '.', '.', ' ']] Da seguinte entrada : 7 7 .#....# ###..## .#....# ....#.# .#..#.# .####.# ....... Onde as # são navios e os . são as águas, então eu pensei no seguinte fato. Torna as partes dos navios adjacentes em um ÚNICO int cada navio, adicionaria esse int em uma lista e quando eu fosse dando as coordenadas de onde explodiria a bomba eu ia transformando esses int em variável 'X', assim no final quando eu desse todas as coordenadas ele percorre toda a lista do mapa e o número inteiro que não estiver lá é porque ele afundou o navio, logo no final só precisaria fazer a contagem da lista de números inteiros que não está contido no mapa, entende ?? mas ainda está muito abstrata e nem sei se isso é o correto. adicionado 5 minutos depois Também pensei em vez de adicionar nos navios um int, poderia adicionar diretamente o X e manda ele verificar se aos redores de 1 quadrado, direita, esquerda, cima, baixo se estaria com #, caso tivesse eu não contava como navio afundado, mas caso não tivesse eu seguia adiante e analisava o X vizinho a ele, para saber se contem # se eu achasse somente X e PONTO ai eu contava como navio afundado, pois só não é afundado se conter alguma # adjacente, logo se só contém X e PONTO é porque ele foi afundado. Já estou ficando meio maluco nessa questã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...