Ir para conteúdo

Don Benatti

Members
  • Total de itens

    89
  • Registro em

  • Última visita

  • Dias vencidos

    6

Don Benatti venceu o dia em Junho 11 2017

Teve o conteúdo mais curtido

Reputação

28 Levemente Bom

1 Seguidor

Sobre Don Benatti

Informações Pessoais

  • Sexo
    Masculino
  • Interesses
    Ciência da programação

Últimos Visitantes

801 visualizações
  1. Don Benatti

    Interface em CRUD - S.O.L.I.D

    Olá amigo, linguagens como PHP não desfrutam de todo pode que uma interface oferece, nesta linguagem você consegue burlar tudo, criar hacks para as coisas, etc. veja alguns hacks abaixo: $class_name = "StdClass"; new $class_name; $object->{"nomeDoMetodo"}($a, $b, $c); // Entre outras "gambiarras" Interfaces não são o que são por iniciar seu design com a palavra interface, na verdade é possível criar interfaces em qualquer linguagem, mesmo que está não ofereça uma "keyword" chamada "Interface", pra ser mais especifico, é possível criar uma interface usando uma classe concreta, eu sei que essa pode ter doído um pouco, mas você entenderá assim que conseguir "ficar de pé na prancha". Veja um exemplo: interface Crud { public function create(/* [args...] */); public function read(/* [args...] */); public function update(/* [args...] */); public function delete(/* [args...] */); } Vamos implementar esta interface onde quisermos class MySql implements Crud {} class SQLite implements Crud {} class XML implements Crud {} class JSON implements Crud {} class TextPlain implements Crud {} class Etc implements Crud {} Dessa maneira a única instancia que nosso sistema vai esperar será a de "Crud" e não a de MySql, SQLite ou outro. class UmaClasseQueFazAlgo { /** * @var Crud */ private $instanciaDeCrud; /** * @param Crud $crud */ public function __construct(Crud $crud) { $this->instanciaDeCrud = $crud; } public function facaAlgo() { /* Dessa maneira você poderá mudar internamente de MySql para JSON que não afetará em nada aqui */ $this->instanciaDeCrud->create(/* [args...] */); } } (new UmaClasseQueFazAlgo())->facaAlgo();
  2. Don Benatti

    Como executar um comando SHELL via exec() em ambiente Windows?

    Você mesclar "stdout" e "stderr", para isso no final adicione: 2>&1
  3. Don Benatti

    Pra que usar class abstrata - PHP

    É importante notar que abstração não tem nada a ver com classes abstratas da linguagem A ou B e pode ser utilizada em qualquer linguagem e até na vida, podemos usar abstração até com uma classe concreta, com JavaScript, etc. Dito isso, ao pensarmos em abstração, logo a vida nos mostra que é a maior programadora de todos os tempos, notou que seres humanos são um tanto diferentes fisicamente? nos somos a aplicação concreta da abstração, por isso todos os seres são obrigados a comer e beber água para sobreviver, porque na classe abstrata da vida tinha os métodos abstratos comer e beber e outros concretos que são os que nosso corpo faz em segundo plano, mas a vida não fez isso separadamente para cada um, ela criou apenas um ser abstrato e fez com que outros se derivassem dele, de nossos pais até o primeiro. Entenda que comer e beber são métodos abstratos que a vida delegou para o ser humano fazer sozinho, mas ela implementou suas próprias coisas concretas dentro dessa classe abstrata, por exemplo, não precisamos fazer nada para o coração bater, ele bate sozinho, isso é uma implementação concreta dentro de uma classe abstrata. Tendo isso em mente, uma das coisas mais brilhantes que podemos fazer com classes abstratas é a aplicação do conceito DRY (Don't Repeat Yourself), isso quer dizer que em uma classe abstrata podemos fazer coisas que serão usadas por outras classes sem precisar que elas mesmas façam. abstract class Humano { public function __construct() { $this->baterCoracao(); } private function baterCoracao() { // Isso é privado, faz sozinho // é tanto que para concertar é preciso cortar e invadir } abstract public function beberAgua(); abstract public function comer(); } class Lucas extends Humano { public function beberAgua() { // Beba água se não morre } public function comer() { // coma se não morre } }
  4. Don Benatti

    Rodar sites em Java no Android

    Ele precisa de um servidor Java, os arquivos devem ser JSP
  5. Don Benatti

    Desenvolvimento em Android

    Como vai Douglas, na verdade Android é apenas um sistema operacional, não é uma linguagem de programação, você deve estudar a linguagem usada para desenvolver os programas que são executados por esse sistema, no caso do Android, as aplicações/aplicativos/programas são desenvolvidos em Java, essa é linguagem padrão, mas existem outras que o Android aceita. Estude Java e depois use o Android Studio para desenvolver aplicativos para o sistema. Android Studio
  6. Don Benatti

    criptografar código php

    Se for impossível a reversão então não vai servir pra nada, pois como após isso o PHP seria interpretado? dito isso, você pode criptografar os códigos PHP usando uma chave, somente com essa chave seria possível reverter, existe por ai muita coisa já pronta para fazer isso, mas a maioria é paga, no entanto, não recomendo isso, pois pode e vai lhe prejudicar em muitos outros aspectos. Engenharia reversa é uma coisa, agora entender claramente o que foi revertido é outra história, a engenharia por trás do seu software é entendida previamente apenas por seus desenvolvedores, após uma reversão levará tempo até alguém conseguir aprender, hoje em um mundo super corrido, quem vai ficar por ai gastando tempo para copiar e depois entender seus códigos, a menos que seja códigos que vão gerar milhares em lucro.
  7. Don Benatti

    [Resolvido] retirar caracteres de uma string

    Como você escreveu retirar caracteres de uma string, isso ai não retira apenas detecta, para retirar pode usar preg_replace $valor = preg_replace('/[^0-9\.]+/', null, $valor);
  8. Don Benatti

    Problema ao enviar um POST a partir de um evento no formulário

    Você acabou de solucionar seu próprio post! Devia ter mencionado isso antes, é como ir no médico e não falar o que está sentindo. Duas coisas, veja se o evento change está sendo capturado, colocando um console.log, alert, etc; depois se sim, o problema é porque você está sendo bloqueado por fazer muitas requisições, o evento change faz muitas, como o nome já diz.
  9. Don Benatti

    Sistema Java com DB embutido Derby

    Olá, a única coisa que você vai poder manter embutido no seu JAR é o próprio JAR do derby, por isso se diz embeddable, você não vai conseguir um caminho para algo dentro do seu JAR, mas isso pode ser contornado de forma absurdamente fácil. O legal seria você criar seu instalador em Java mesmo e então copiar as coisas de dentro dele para uma pasta padrão do sistema operacional. String systemName = "NomeDoSeuSistema"; String installationPath = System.getProperty("user.home") + File.separator + systemName; File file = new File(installationPath); if (!file.exists()) { file.mkdir(); } Isso ai já vai criar uma pasta para seu sistema no diretório padrão do usuário, para copiar o banco de dados de dentro do seu JAR para esta pasta terá que convertê-lo para stream lendo-o como um resource InputStream dataBase = getClass().getClassLoader().getResourceAsStream("seuBanco.db"); Agora o que precisa fazer é copiá-lo para a pasta criada anteriormente e terá um caminho InputStream dataBase = getClass().getClassLoader().getResourceAsStream("seuBanco.db"); if (dataBase == null) { System.out.println("Banco de dados não encontrado"); } else { BufferedOutputStream out = null; try { byte[] bytes = new byte[4096]; int read = 0; out = new BufferedOutputStream( new FileOutputStream(installationPath + File.separator + dbName)); while ((read = dataBase.read(bytes)) > -1) { out.write(bytes, 0, read); } } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } Agora seu banco tem um caminho acessível String dbPath = System.getProperty("user.home") + File.separator + "NomeDoSeuSistema" + File.separator + "seuBanco.db";
  10. Don Benatti

    Título aos objetos exibidos em JSON

    Por causa de List<NotaFiscal>, existem mais de uma nota sendo retornada, logo um index de string nfs não seria possível com List, isso quer dizer que todas a notas estão com um index numérico e sua representação em JSON será sempre [{},{},{}]
  11. Don Benatti

    Problema ao enviar um POST a partir de um evento no formulário

    Provavelmente você está recebendo um 400 Bad Request, este servidor api.hubapi.com é seu? os headers estão corretos?
  12. Don Benatti

    Upload de imagens

    Precisava nem postar todos esses códigos ai, geralmente hospedagens terceirizadas limitam o numero máximo de uploads, o limite está no php.ini na seguinte linha max_file_uploads=20 Você deve enviar uma a cada vez e colocar as outras em fila
  13. Don Benatti

    TreeTableView - Excluir várias linhas

    Para resolver o problema de ConcurrentModificationException, entre uma das formas, você poderia salvar os valores para remoção em outra lista: java.util.List<Integer> outrasDespesasParaRemover = new java.util.ArrayList<>(); e agora ao invés de usar "ol_OUTRASDESPESAS.remove(i);", você salva apenas a posição na lista outrasDespesasParaRemover: if (Objects.equals(ol_OUTRASDESPESAS.get(i).getId(), ol_T.get(j).getValue().getId())) { outrasDespesasParaRemover.add(i); } Depois faz a remoção separadamente // Java 8 if (outrasDespesasParaRemover.size() > 0) { outrasDespesasParaRemover.forEach(ol_OUTRASDESPESAS::remove); } /* Caso não esteja usando Java 8: for (int i : outrasDespesasParaRemover) { ol_OUTRASDESPESAS.remove(i); } */
  14. Don Benatti

    Problema ao enviar um POST a partir de um evento no formulário

    Falando direto do problema eu perguntaria como você sabe que a requisição não está sendo feita? como está testando isso? não vi um callback para a mudança de estado // antes de xhr.send... xhr.onreadystatechange = function() { if (xhr.readyState == 4) { // concluído switch (xhr.status) { case 200: // Tudo certo break; case 403: // Acesso negado break; case 404: // Não encontrado break; //etc... } } }; Que coisa perigosa isso, são muitas requisições por segundo, é quase deixar alguém fazer um ataque DDoS HTTP flood. Imagino que vai querer enviar os outros campos do formulário na requisição, se sim, sua lógica não está legal ao fazer "$( "#phone" ).change" imaginando que phone vai ser o último campo a ser alterado, mas o que vai acontecer se o usuário alterar phone antes dos outros campos?
  15. Don Benatti

    TreeTableView - Excluir várias linhas

    Isso ai vai lançar uma exceção (ConcurrentModificationException) for (int i = 0; i<ol_OUTRASDESPESAS.size(); i++) { Você pode usar forEach nesse caso List<String> exemplos = new ArrayList<>(); exemplos.add("..."); for (String exemplo : exemplos) { System.out.println(exemplo); }
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.