Publicidade

Gabriel Heming

Moderadores
  • Total de itens

    3.114
  • Registro em

  • Última visita

  • Dias vencidos

    61

Gabriel Heming venceu o dia em Janeiro 30

Teve o conteúdo mais curtido

Reputação

568 Incrível

Sobre Gabriel Heming

  • Classificação
    Especialista em Desenvolvimento de Software
  • Data de Nascimento 05-05-1989

Informações Pessoais

  • Sexo
    Masculino
  • Interesses
    PHP, C#/.NET, Microsoft Dynamics AX, JavaScript, Java, OOP, Padrões de Arquiteturas e de Projeto, Engenharia de Software.

Últimos Visitantes

43.321 visualizações
  1. Se quiser usar apenas funções nativas de array: $chars = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"; $chars2 = "0,1,2,3,4,5,6,7,8,9"; $arrayChars = explode("," , $chars); $arrayNumbers = explode("," , $chars2); $result = array_merge(array_rand(array_flip($arrayChars) , 3) , array_rand(array_flip($arrayNumbers) , 3)); shuffle($result); var_dump($result); https://3v4l.org/RdPmf Só para constar: - explode: transforma string em array; - array_flip: inverte as o valor e as chaves (chave se torna valor, valor se torna chave); - array_rand: sorteia um ou mais valores (depende do segundo parâmetro) e retorna as chaves (por isso foi utilizado o array_flip); - array_merge: junta dois ou mais arrays; - shuffle: sorteia o array (para não ficar 3 letras e 3 números em sequência). Pode ser feito sem usar array, só strings e um for (é claro, array para armazenar apenas): $chars = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"; $chars2 = "0,1,2,3,4,5,6,7,8,9"; $chars = str_replace("," , "" , $chars); $chars2 = str_replace("," , "" , $chars2); $result = []; for($i = 0 ; $i < 6 ; $i++) { $result[] = $i < 3 ? substr($chars , rand(0 , strlen($chars) - 1) , 1) : substr($chars2 , rand(0 , strlen($chars2) - 1) , 1); } shuffle($result); var_dump($result); O resultado é praticamente o mesmo: https://3v4l.org/snPMS E há tantas outras maneiras. Vai do gosto de cada um.
  2. O que eu mais uso é o http://phptester.net/. Mas o https://3v4l.org é bom para testar automaticamente em várias versões.
  3. Sim, use DateTime $date = new \DateTime(); echo $date->format('yMdHm'); Saída: 17Mar221703 Funcionamento: https://3v4l.org/cjZTo Apenas lembrando que o formato yMdHm é interpretado como yyMMddHHmm
  4. Limite para apenas um resultado. Depende da versão do oracle, pode-se usar ROWNUM ou ROWLIMIT (12c R1 - 12.1). ROWNUM SELECT * FROM (/** sub-select **/) WHERE ROWNUM = 1; ROWLIMIT: SELECT * FROM (/** sub select **/) FETCH FIRST ROW ONLY http://stackoverflow.com/questions/42862903/transform-static-array-into-a-generated-by-foreach-loop http://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqljoffsetfetch.html
  5. Nesse caso, dependerá de como você irá tratar. Fazer o certo ou a gambiarra? Você até pode fazer por PHP, mas estará perdendo perfomance e integridade (além de ser uma gambiarra e um "pecado" com o SGBD). E, na realidade, com o PHP também será mais complexo do que ter uma boa modelagem de dados. Com o PHP: Retornar dados; explode; verificar se o registro já existe; inserir o registro caso não existe. Com SGBD + cláusula UNIQUE: Inserir no SGBD (se o registro já existir, será avisado). Entendeu a diferença?
  6. Sua modelagem está pecando pela normalização de dados. Para verificar alguns exemplos de como resolver, leia os seguintes tópicos: http://pt.stackoverflow.com/questions/178342/para-cada-resultado-uma-nova-linha-no-php
  7. Eu usei durante muito tempo a FPDF e depois a DomPDF, mas por eu ter de realizar relatórios em instituições de ensino (histórico, caderno de chamadas, etc..) que existem um trilhão de direções que o texto pode ir, sempre era necessário implementar algo que a biblioteca não fazia. Ai veio a TCPDF supriu tudo isso... Mas pra falar a verdade, nem sei como está hoje.
  8. A função não está sendo chamada e não possui retorno.
  9. php

    Se um trecho de código se repete, isole-o em um método: function getEstablishment($establishmentId) { $query = "SELECT * FROM establishment WHERE establishment_id='{$establishmentId}' LIMIT 0,1"; $result = mysqli_query($this->connection, $query); return $this->createObject(mysqli_fetch_assoc($result)); } function getAllEstablishments() { $establishments = array(); $query = "SELECT * FROM establishment ORDER BY establishment_id DESC"; $result = mysqli_query($this->connection, $query); while ($establishmentArray = mysqli_fetch_assoc($result)) { $establishments[] = $this->createObject($establishmentArray); } return $establishments; } private function createObject(array $rawEstablishment) { $docNumber = $rawEstablishment['doc_number']; $legalName = $rawEstablishment['legal_name']; $socialName = $rawEstablishment['social_name']; $type = $rawEstablishment['type_id']; $email = $rawEstablishment['email']; $website = $rawEstablishment['website']; $plan = $rawEstablishment['plan_id']; $agreeTerm = $rawEstablishment['agree_term']; $address = $rawEstablishment['address']; $district = $rawEstablishment['district']; $city = $rawEstablishment['city_id']; $zipCode = $rawEstablishment['postal_code']; $phone = $rawEstablishment['phone']; $created = $rawEstablishment['created']; $lastUpdate = $rawEstablishment['last_update']; $establishment = new Establishment($docNumber, $legalName, $socialName, $type, $email, $website, $plan, $agreeTerm, $address, $district, $city, $zipCode, $phone, $created, $lastUpdate); $establishment->setId($rawEstablishment['establishment_id']); return $establishment; } Outra coisa que pode realizar é criar um método instrospect. Ou seja, deixar a responsabilidade para o próprio objeto Establishment: class Establishment { public function instrospect(array $raw) { $this->id = $raw['establishment_id']); $this->docNumber = $raw['doc_number']; $this->legalName = $raw['legal_name']; /** e demais inclusões **/ } } Seus métodos, assim, serão simplificados: function getEstablishment($establishmentId) { $query = "SELECT * FROM establishment WHERE establishment_id='{$establishmentId}' LIMIT 0,1"; $result = mysqli_query($this->connection, $query); $establishment = new Establishment(); $establishment->instrospect(mysqli_fetch_assoc($result)); return $establishment; } function getAllEstablishments() { $establishments = array(); $query = "SELECT * FROM establishment ORDER BY establishment_id DESC"; $result = mysqli_query($this->connection, $query); while ($establishmentArray = mysqli_fetch_assoc($result)) { $establishment = new Establishment(); $establishment->instrospect($establishmentArray); $establishments[] = $establishment; } return $establishments; } A propósito, sobre array_push: Note: If you use array_push() to add one element to the array it's better to use $array[] = because in that way there is no overhead of calling a function. Logo, substituí o seu array_push por: $establishments[] = $this->createObject($establishmentArray);
  10. Notices são diferentes de erros. São situações atípicas, mas, que não irão interromper a execução do código. São duas notices que ficam se repetindo: <b>Notice</b>: Undefined variable: operator in No método abaixo: public function add(TExpression $expression, $operator = self::AND_OPERATOR) { if(empty($this->expressions)) { unset($operator); //aqui, está sendo realizado o unse } $this->expressions[] = $expression; $this->operators[] = $operator;// logo, aqui a variável não irá existir } E no código abaixo: public function dump() { if(is_array($this->expressions)) { foreach($this->expressions as $i=> $expression) { $operator = $this->operators[$i]; $result .= $operator . $expression->dump() . ' ';// <-- nessa linha } $result = trim($result); return "({$result})"; } } Basicamente, a utilização do '.=' é o que ocorre abaixo: $variavel .= " algum valor"; O código acima faz exatamente o que o código abaixo faz: $variavel = $variavel." algum valor"; Entretanto, a variável $variavel deve existir antes da execução do código. Logo: $result = null;//a variável sendo inicializada foreach($this->expressions as $i=> $expression) { $operator = $this->operators[$i]; $result .= $operator . $expression->dump() . ' ';// <-- nessa linha } Todas as situações encontradas nos códigos são básicas que todos os programadores devem conhecer (inclusive o autor do livro). Qual a edição do livro?
  11. Mais rápida é complicado de dizer, nunca tive problemas de performance. Mas a que eu recomendo é sempre a mesma, TCPDF https://github.com/tecnickcom/TCPDF A nova versão da TCPDF está em desenvolvimento e, em consequência, terá outro nome (novamente...). https://github.com/tecnickcom/tc-lib-pdf
  12. Ok, seja mais específico. Pois, o pouco que conheço de bitcoins, é que ele pode ter um número fracionário diferente do habitual (com dezenas de casas decimais). O que ela não serve para bitcoins?
  13. Não é visible, é block. document.getElementById("Conteudo-Aba-2").style.display = "block"; https://developer.mozilla.org/en-US/docs/Web/CSS/display
  14. pode realizar com .htaccess. Adicione a diretiva deny from all e, após, allow from <adicione os sites/domínios/ip's permitidos> order deny,allow deny from all allow from <your ip>
  15. Se quiser algo mais robusto, utilize full-text search. Leia o artigo abaixo (está para o PostgreSQL). Pode ser portado para o MySQL também: http://rachbelaid.com/postgres-full-text-search-is-good-enough/