Ir ao conteúdo
  • Cadastre-se

marcel.mc

Membro Pleno
  • Posts

    58
  • Cadastrado em

  • Última visita

Tudo que marcel.mc postou

  1. Olá pessoal, estou desenvolvendo um CRM em Laravel onde o cliente poderá gerenciar arquivos (pdfs, imagens e vídeos). Se alguém já teve alguma experiência com file managers no Laravel, poderia me dar uma indicação (de preferência que tenha documentação farta). Muito obrigado.
  2. Olá pessoal, estou numa empreitada tentando aprender Laravel e desenvolvendo um sistema não muito trivial (pelo menos não para mim que não tenho experiência). Hoje me deparei com um problema que não consegui encontrar solução durante umas 3 horas de pesquisa, se puderem me dar um auxílio agradeço. Um pedaço da minha aplicação, consiste no cliente logar e a partir daí cadastrar algumas informações pertinentes diariamente. Ao logar, ele cai na tela para escolher em qual captação ele irá cadastrar os dados. Na próxima ele escolhe qual sistema de captação, e por fim, ele insere os dados. Para isso tenho as seguintes rotas: Route::get('/prop/{id_prop}/', 'PropriedadeController@clientePropriedade'); Route::get('/prop/{id_prop}/cap/{id_cap}/', 'CaptacaoController@clienteCaptacao')->name('cap'); Route::get('/prop/{id_prop}/cap/{id_cap}/sis/{id_sis}/', 'SistemaController@clienteSistema')->name('sis'); Meu problema é: quando clico no link para alguma captação, sempre sou direcionado para a página do Sistema de Captação pertencente a captação 1. Independente da captação que eu escolher, sempre sou direcionado para os sistemas da captação 1. Usando o método dd() do Laravel para debugar, percebi que o parâmetro (int id) de meu método clienteCaptacao de CaptacaoController tem valor 1. public function clienteCaptacao(int $id) { dd($id);//valor 1 $cap = Captacao::find($id); //dd($cap); if (!isset($cap)) { return view('erros.cliente.nCadastrado', array('nome' => 'captações')); } else { return view('cliente.escolheSistema', compact('cap')); } } Os links estão corretos: <div class="col-lg-3 col-md-6"> <a href=http://h20.laravel/cliente/prop/1/cap/1 class="btn btn-secondary btn-block" style="background-color:red">Captacao 1</a> </div> <div class="col-lg-3 col-md-6"> <a href=http://h20.laravel/cliente/prop/1/cap/2 class="btn btn-secondary btn-block" style="background-color:red">Captacao 2</a> </div> <div class="col-lg-3 col-md-6"> <a href=http://h20.laravel/cliente/prop/1/cap/3 class="btn btn-secondary btn-block" style="background-color:red">Captacao 3</a> </div> Esses são os códigos da minha blade onde crio os links acima: <div class="row"> @foreach ($prop->captacoes as $cap) <div class="col-lg-3 col-md-6"> <a href={{ URL::route("cap", ['id_prop'=>$prop->id, 'id_cap'=>$cap->id])}} class="btn btn-secondary btn-block" style="background-color:red">{{$cap->nome}}</a> </div> @endforeach </div> Imagino que esteja cometendo um erro bobo, mas não tenho a menor ideia de como resolver. Se alguém puder me ajudar, fico grato. Muito obrigado.
  3. Olá pessoal, desculpem a demora em responder. Deixei o projeto em hiato pois não havia conseguido resolver o problema do gargalo. Gostei da proposta do @psykotico, e acabei utilizando como podem ver abaixo, porém somente isso não resolve o problema. Embora a ideia de como resolver não tenha sido tirada do posto do @HwapX , ele menciona a mesma forma. Fico grato do mesmo jeito. Abaixo vou postar os dois métodos e dar uma pequena explicada em como funcionam para eventuais consultas de alguém com problema semelhante: public void percorreDiretoriosCalculaHashRec(File path) { fileMap = new HashMap<>(); for (File f : path.listFiles()) { if (f.isDirectory() && f.canRead()) { percorreDiretoriosCalculaHashRec(f); } else { String hash = calculaHash(f); if (fileMap.containsKey(hash)) { System.out.println("O arquivo: " + f.getPath() + " é igual a " + fileMap.get(hash).getPath()); } else { fileMap.put(hash, f); } } } } Nesse método uso exatamente a ideia proposta pelo @psykotico , percorro a árvore de diretórios recursivamente, calculo o hash de cada arquivo e insiro num map. Se aquele hash já estiver no map, imprimo os arquivos correspondentes. public String calculaHash(File f) { byte[] fArray = null; String hash = null; try { if (f.length() > 1048576) { fArray = new byte[1048576]; RandomAccessFile raf = new RandomAccessFile(f, "r"); raf.read(fArray, 0, 524288); raf.seek(f.length() - 524288); raf.read(fArray, 524288, 524288); raf.close(); } else { fArray = Files.readAllBytes(f.toPath()); } hash = DigestUtils.md5Hex(fArray); } catch (IOException ex) { Logger.getLogger(Comparador.class.getName()).log(Level.SEVERE, null, ex); } return hash; } Nesse método, uso uma das ideias propostas pelo @HwapX. Se o arquivo tem tamanho menor ou igual 1 MB, calcula-se o hash diretamente. Se maior, uso um array de bytes que pega os primeiros 512KB e concatena com os últimos 512KB. Desse array, calculo o hash. Para uma base com mais de 91K arquivos consegui que o programa fosse executado em cerca de 20 minutos. Vou marcar o tópico como encerrado, mas sintam-se a vontade para postar novas ideias ou dúvidas. Muito obrigado aos dois que responderam, suas respostas foram muito úteis.
  4. Olá pessoal, criei um sisteminha para comparar arquivos com finalidade de economizar algum espaço apagando os duplicados. A ideia é bem simples: dado um caminho para um diretório, percorro todos os subdiretórios e calculo o hash para cada arquivo encontrado. Depois saio comparando hash por hash, verificando se são iguais e mostrando o resultado. Funciona, porém as interações de I/O estão gargalando de forma que fica inviável o processo. Fiz o teste com 3 mil arquivos e está gastando cerca de 4 a 5 minutos, acontece que a pasta que mais me interessa verificar tem mais de 91 mil arquivos. Já fiz testes usando essa pasta que demoraram mais 1 hora sem serem concluídos e de longe não chegavam a metade, outros travaram por estourar a heap. Acho que threads com I/O não vão melhorar o desempenho. Eis uma das versões do código (estou usando algumas bibliotecas Apache commons só para evitar a fadiga): private Map<String, String> fileMap; private List<File> fileList; private File filePath; public void geraFileMap(){ fileMap = new HashMap<>(); fileList = new ArrayList<>(FileUtils.listFiles(filePath, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE)); int count=0; for(File f: fileList){ fileMap.put(f.getAbsolutePath(), calculaHash(f)); System.out.println(count); count++; } } public String calculaHash(File f) { byte[] fArray = null; String hash = null; try { fArray = Files.readAllBytes(f.toPath()); hash = DigestUtils.md5Hex(fArray); } catch (IOException ex) { Logger.getLogger(Comparador.class.getName()).log(Level.SEVERE, null, ex); } return hash; } public void comparar(){ geraFileMap(); int count = 0, size = fileMap.size(); List<String> stringList = new ArrayList<>(fileMap.keySet()); System.out.println(size); for (int i = 0; i < size; i++) { for (int j = i + 1; j < size; j++) { if(stringList.get(i).equals(stringList.get(j))){ System.out.println(stringList.get(i) +" = "+ stringList.get(j)); } count++; } } System.out.println(count); } Se alguém puder me sugerir alguma forma de melhorar o gargalo, agradeço. Muito obrigado.
  5. Olá @DiF, muito obrigado pela resposta vou testar e ver se consigo algum progresso. Então @Will871, na verdade não tenho nenhuma afinidade com PHP. Só pensei em usar pois meu orientador pode querer acrescentar algo nessa página que vá necessitar de banco e assim já teria meio caminho andando. Muito obrigado pelas respostas, dou um parecer assim que tiver algum resultado.
  6. Olá pessoal, eu desenvolvo em Java mas conheço praticamente nada de desenvolvimento Web. Desculpe uma dúvida tão banal mas não consegui resolver o problema. Preciso criar um "questionário" onde cada resposta correta faz mostrar a próxima pergunta. Explicando melhor: quando usuário abre a página, aparece uma pergunta um campo de texto e um botão no fim. Ao responder corretamente, logo abaixo do campo de texto aparece outra pergunta e um novo campo de texto e assim sucessivamente. Já criei uma classe com os atributos pergunta e resposta e um array desse objeto contendo as perguntas e resposta que irei usar. Usarei a função shuffle para embaralhar o array e evitar que as questões apareçam em sequencia para os usuários. Se alguém tiver algum exemplo de algo parecido e puder me indicar, fico grato. Muito obrigado.
  7. Que tipo de combobox (Web, JavaFX, Swing)? Deixe isso mais claro por favor.
  8. Procure mais sobre web crawling. Usei uma api para extrair dados de uma página certa vez , se chama Jsoup, de uma pesquisada que talvez ela consiga te atender.
  9. Olá, procure sobre Tibco Jaspersof. Imagino que você consiga criar o formulário exatamente como deseja com ele. Sinto não poder falar mais, mas não tenho conhecimento com formulários em Java.
  10. Você criou um controller pro seu FXML novo? Da maneira como está, me parece que, que você quer sobrepor a tela inicial com a tela de adicionar. Embora seja chato, poste também o FXML e controllers relativos a "addml.fxml" e "q5ml.fxml" que irei ajudá-lo.
  11. Uma boa ideia é verificar para cada número, o resto da divisão dele por três e por onze. Poste o código que você gerou que teremos condição de te guiar melhor.
  12. Olá pessoal, me esclareçam uma dúvida se possível. Caso eu tenha um trecho de HTML que irá se repetir na página (no meu caso um formulário de endereço que aparecerá duas vezes na mesma página), o que eu faço para ter o trecho aparecendo todas as vezes que preciso no lugar correto sem a necessidade de duplica-lo? <form role="form" > <div class="row"> <fieldset> <legend>Dados pessoais</legend> <div class="form-group col-sm-4"> <label>Nome:</label> <input type="text" id="nomeID" class="form-control"/> </div> <div class="form-group col-sm-4"> <label>Telefone: </label><input type="text" id="telID" class="form-control tel"/> </div> <div class="form-group col-sm-8"> <label> E-mail:</label><input type="email"id="emailID" class="form-control"/> </div> </fieldset> </div> <div class="row"> <fieldset> <legend>Endereço</legend> <div class="endDiv"> <!codigo do endereço aqui> </div> </fieldset> </div> <div class="form-group col-md-6"> <fieldset> <legend>Dados da Queixa</legend> <label>Tipo de Queixa</label> <select class="form-control" id="select" onchange="carregaHTML('#queixa', 'view/form/' + this.value);"> <option> </option> <option value="queixa_alimentar.php">Queixa Alimentar</option> <option value="queixa_animal.php">Queixa Animal</option> <option value="queixa_diversa.php">Queixa Diversa</option> </select> <div id="queixa"> <!aqui carrego o código de uma das três queixas que ira conter o trecho do endereço também> </div> </fieldset> </div> <input type="submit" name="submitBTN" value="Salvar" > </form>
  13. Olá, preciso analisar quais sites um grupo de usuários acessa em uma rede (será um experimento). Para isso estou usando o Squid como proxy e gerando o log para ser analisado. Usei o Sarg e tive pouco êxito então, me deparei com o Mysar que por gravar os dados em um banco de dados seria muito mais interessante para mim. Eis a situação: Fiz a instalação do Mysar numa máquina com Linux Mint 17 (não tenho certeza se realmente é essa versão), fiz várias configurações diferentes mas não consegui que a página web fosse atualizada com os dados do log. Mesmo adicionando regras ao cron, não consegui que atualizasse. Imaginando que pudesse ter algum problema com o Mint, Instalei Ubuntu 16.04 em outra máquina, segui os passos feitos na outra e para minha surpresa ao entrar na página de configuração do Mysar, o navegador mostrava o código fonte. Achei que pudesse ser a versão do PHP, já que o Ubuntu 16.04 usa por padrão a versão 7 então fiz o downgrade para 5.6, mas o resultado foi o mesmo. Alguém saberia me ajudar em um desses problemas? Caso conheçam algum outro analisador de log do Squid que tenha suporte a salvamento em banco de dados por favor me informe. Muito obrigado.
  14. Muito obrigado pela resposta. Estava testando Squid numa VM mas infelizmente meu note acabou morrendo, vou instalar VM em outra máquina e ver o que consigo. Caso tenha conhecimento, saberia me dizer como faço para gerar um log com essas informações? Já andei procurando (pelo visto não nos lugares certos) mas não achei muita coisa, basicamente criação de regras de acesso (que não tem nada a ver com o que preciso).
  15. Olá pessoal, no meu TCC preciso fazer uma pesquisa onde devo monitorar quais sites as pessoas vão acessar dado o resultado de uma busca no Google. A forma mais simples que imaginei seria instalando um proxy e gerar um log contendo os sites, a maquina e horário em que foram acessados (o experimento será feito em ambiente fechado). O problema é que não sou muito conhecedor da área, tentei brincar com Squid mas não achei o que queria (talvez seja falta de procurar melhor). Alguém pode me informar algum proxy simples, que gere um log com essas informações e de preferência gratuito? Se tiverem outra ideia para resolver o problema, por favor informe. Muito obrigado.
  16. Cara, você só tem um vetor de Strings para gravar os nomes. Notas e a média são gravadas em variáveis. Da uma olhadinha nisso e tenta consertar, se persistir com dúvidas entre em contato.
  17. Sim, eu entendi. Mas o intuito do fórum é te ajudar a criar sua aplicação, não fazer o trabalho por você.
  18. Talvez o conteúdo desse link o ajude: http://www.blackbam.at/blackbams-blog/2012/05/04/avl-tree-implementation-in-java/.
  19. Se tiver algo pronto, por favor poste para que possamos dar uma olhada.
  20. Olá pessoal, estou com um problema simples mas até agora não consegui muita informação. Tenho um projeto que desenvolvi para uma disciplina da faculdade e agora vou acrescentar alguns modulos e uma GUI. Criei cerca de 5 telas com o scene builder e consegui fazer transição entre elas sem problemas. Minha dúvida é, se eu instancio um objeto na classe de controle da primeira tela, como eu teria acesso a esse mesmo objeto na classe de controle da terceira tela? Se tiverem achado confuso me avizem que tento explicar melhor. Obrigado.

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