Rss

  • youtube
  • linkedin
  • google

Archives for : Desenvolvimento

Usando jQueryMask Plugin para formatar datas em diferentes padrões

jQuery Mask Plugin é uma grande biblioteca de Javascript para formatar campos para apresentação e/ou para forçar uma entrada corretamente pelos utilizadores.

Aqui, Eu Mostro como lidar com INPUT ou outro elemento HTML para exibir datas quando a data de origem tem um formato diferente do elemento de destino.

Exemplo:

  • Temos um data-hora com Ano-mês-dia hora:Minuto:Segundos e é preciso mostrar apenas o fragmento Ano/Mês/Dia (sem hora:minuto:segundo).
  • Temos da data em Ano-mês-dia e é preciso formatar para Dia/mês/ano.

jQueryMask é muito simples de usar. Ele não precisa muito para mascarar o que você precisar. Veja exemplos em seu site.

Se você precisa formatar um campo de data simples (mesmo em um elemento não INPUT), Basta usar o código abaixo.

O código acima pode mascarar e pre-validar datas no formato ANO/MÊS/DIA ..

Com um INPUT como

teria alterado seu valor para 2018/06/11.

Se você tentar digitar outra data (depois de limpar, é claro) Você não pode começar com um número diferente de 1 ou 2. Por esta razão é que a nossa máscara tem um translation para ser feito quando permitindo caracteres. Se não coincide com o padrão, o caractere é apagado.

The meaning of “;TC99/M9/D9; é:

  • Deve começar com 1 ou 2 (Tradução T: /[12]/ ; Formato personalizado)
  • Deve ter número 0 ou 9 (Tradução de C: /[09]/ ; Formato personalizado)
  • Deve ter um número (qualquer) (Tradução 9 ; Formato do Core MaskPlugin)
  • Deve ter um número (qualquer) (Tradução 9 ; Formato do Core MaskPlugin)
  • Uma barra será adicionada automaticamente ( / )
  • Deve ter número 0 ou 1 (Tradução M: /[01]/ ; Formato personalizado)
  • Deve ter um número (qualquer) (Tradução 9: Formato do Core MaskPlugin)
  • Uma barra será adicionada automaticamente ( / )
  • Deve ter número 0, 1, 2 ou 3 (Tradução D: /[0-3]/ ; Formato personalizado)
  • Deve ter um número (qualquer) (Tradução 9: Formato do Core MaskPlugin)

É claro, Não há nenhuma validação real. You can type “;2999/19/39; e isto não é uma data válida, Mas está quase pronto.

Então, para Formatar de outra maneira, Basta alterar a ordem de parâmetro de máscara.

Mas, se a data de origem estiver em um padrão diferente, como dia/mês/ano, a máscara não funciona. The date output for “;06/11/2018 15:40; will be weird “;1018/15/0;.

Para manipular data diferente formatos serão necessários mais do que simples máscara. Vamos precisar de uma função.

Veja o código abaixo

Agora temos mais dois Translation Pattern (h e m). h significa que a posição n-índice deverá ter números 0, 1 ou 2 e o campo m números entre 0 e o campo 5. Tenha em mente que o CASO importa.

Com o código acima, Podemos Formatar e mostrar data de várias maneiras. Apenas mude .teste() e o campo .Substitua() padrão para preencher seu padrão desejado.

Este é o código que estou usando para formatar os campos datetime do banco de dados com ANO-MÊS-DIA HORA:MINUTO:SEGUNDO em elementos html com dia/mês/ano hora:MINUTO

Com um INPUT como

Saída será 11/06/2018 15:40

Espero que isto ajude a!

Vinculação de vários valores em instrução de SQL com PDO (PDOStatement)

Às vezes temos de procurar um único valor através de várias colunas ao criar instruções SQL.

Suponha a tabela abaixo

  • [ENTITY_ONE]
    • ID
    • COLUMN_A
    • COLUMN_B
    • COLUMN_C
    • COLUMN_D
    • COLUMN_E

Se precisamos procurar um único valor nas colunas B,D e o campo E Vamos precisar usar a seguinte instrução

No código PHP podemos fazer

Bem, this can work but we know that isn’;a melhor abordagem. Nós precisamos usar valores de ligação para evitar a injeção SQL e outras coisas maliciosas.

Então, o código pode ser modificado para

Muito melhor, Mas, Quando estiver criando instruções de SQL complexas, things can be confusing with lots of arguments and don’;esqueça: A ORDEM IMPORTA.

Felizmente PDO pode vincular os valores em ordem diferente quando usando ligações nomeadas.

Hmm, seems that this isn’;bom o suficiente. Só mudamos o uso de 1-espaço reservado indexado para um :espaço reservado nomeado. There’;ganho além do código ficar mais legível e a possibilidade de ligar em qualquer ordem.

Sim, Mas agora podemos fazer a melhor abordagem possível ao usar um termo de pesquisa único em várias colunas. Podemos usar apenas um bind para um ou mais :named placeholders ‘;porque o PDO é esperto e inteligente. Olha nosso código final aqui.

Pode economizar um monte de digitação quando escrevendo muitas instruções SQL, usando o mesmo argumento.

Renomeando arquivos usando lista de 0 a Z

Hoje eu estava programando alguns scripts e encontrei um pequeno problema de usar um padrão definido.

O padrão é criar arquivos onde a sequência inicia em 0 (zero) e não pode ser repetido até Z.

Exemplo:

myfile0.ext, myfile1.ext, myfile2.ext, (...), myfile9.ext, myfileA.ext, myfileB.txt, (...), myfileZ.txt

Bem, Isto não é um grande problema, então eu uso esse código.

Mas $Seq Não deu o valor esperado de 0 (zero) na primeira execução. Em vez disso, estava em branco.

As variáveis de depuração, Eu vi que o while Nunca é avaliada como true. A tentativa de reproduzir na linha de comando que vi in_array($Seq, $PDCs); sempre retornar true. Eu tentei usar “”, “R” e não importa qual o valor que eu usei, ainda retornando true.

Então eu mudar para usar STRICT argumento para in_array to true and works for ‘;A’; through ‘;Z’;, but not for ‘;0; through ‘;9;.

Damn…; PHP é certo, ;0; Não é estritamente iguais para 0. O Chr função de retorno string e o campo gama('0', '9') Cria um array com integer valores.

Então, Eu mudei a abordagem para avaliar todos os valores com STRICT, Porque eu gostaria de criar um código limpo sem nenhuma outras funções para ser usado.

This is the final code that I’;usando o m:

Como você pode ver, Eu mudei o $seqs initial values from ‘;0; para seu ASCII código e voltar ao seu valor que me deu um array com todos os valores em string type.

Até mais!

Erro em Comparação PHP

Hoje, Eu estava escrevendo um script em PHP para ser usado na linha de comando, quando me deparei com um comportamento inesperado (pelo menos da minha parte).
O script deve receber três argumentos, o último de uma lista que contém um ou mais códigos numéricos.
Tentando validar este último argumento obtive um resultado diferente do esperado.
Veja o trecho de código que eu estava usando.:

Continue Reading >>

jQuery.html() não funciona em Internet Explorer

Recentemente tive problemas com um código javascript que utiliza jQuery e que funcionava em diversos navegadores como o Chrome, o Firefox e algumas versões do Internet Explorer, mas que teimava em não funcionar em Internet Explorer 7 e 8.
Segue o código:

Após alguns testes percebi que não era um problema do método, pois em outros códigos ele se comportava como o esperado.
Então debugando minuciosamente o código e as respostas do método Ajax percebi um pequeno erro de sintaxe no HTML e foi só o corrigir que o IE 7 exibiu corretamente a resposta.
Segue então a dica, caso tenha problemas com o método jQuery.html(), verifique antes de tudo se o conteúdo a ser escrito no elemento é um código html sem erros, pois a validação do IE 7/8 não permitirá escrever HTML com nenhum erro, por menor que seja.

Instalando Redmine em Nginx no Centos 6.X

Neste artigo eu vou mostrar como configurei o Redmine versão 2.5.2 (2014-07-06) em um servidor Web Nginx.

O Redmine é uma aplicação web para gestão de projetos. Eu o conheci há algum tempo atrás em uma das empresas por onde passei e é uma excelente alternativa gratuita para quem precisa gerir projetos, sejam eles de desenvolvimento ou não.

O Nginx é um servidor Web que vem ganhando muito espaço nos últimos anos devido a sua performance para grandes quantidades de requisição.

Continue Reading >>

Convertendo xor, shr e shl de Delphi para PHP

Estou migrando um software feito em Delphi para PHP e me deparei com um problema em uma maldita bendita função de criptografia.

Sofri um bocado tentando reescrever a função não pela complexidade do código e sim com as diferenças nos resultados.

A função faz uso dos operadores XOR e SHR na versão Delphi. O SHR foi relativamente fácil graças a experiência com operadores bit a bit e como a documentação do Delphi diz que o operador retira bits à direita

Continue Reading >>

Como diminuir o tamanho de discos virtuais VMDK – parte 3

Se desejar ler a parte 1 deste tutorial, clique aqui.
Se desejar ler a parte 2 deste tutorial, clique aqui.

No item anterior fizemos uma clonagem de um disco com uma única partição. Nas próximas linhas vou mostrar como clonei um disco com uma única partição primária e uma lógica para duas partições primárias e uma lógica com um ponto de montagem para o swap que originalmente estava em um arquivo.

NOTA: Utilizei como fonte esse site, para resolver problemas com a inicialização do novo disco. Faça como eu, sempre cite suas fontes.

Usando como base as informações da parte 1 deste tutorial, adicionaremos um novo disco à máquina virtual.

Continue Reading >>

Como diminuir o tamanho de discos virtuais VMDK – parte 2

Se ainda não leu a parte 1, pode acessar ela por aqui.

Continuando o tutorial, iremos agora iniciar a clonagem dos discos. A primeira parte da clonagem é de um disco que não contem o sistema operacional. Se quiser ir direto para a clonagem com o sistema inicializável, pode pular esta parte e ir direto para a parte 3.

Hora de iniciar a clonagem. Iniciamos a máquina virtual no modo terminal (para caso tenha ambiente gráfico) e logamos como root ou nos tornamos root com o comando su – para que seja possível executar as instruções de particionamento, formatação e clonagem, respectivamente sem necessidade de sudo a todo comando.

No terminal digite fdisk -l para que sejam listados os discos e as partições:

Repare que nossos discos aparecem como sendo /dev/sda, /dev/sdb, /dev/sdc (marquei em vermelho para ficar mais visível) e ao lado o seu tamanho. Essa ordem a, b, c é a ordem de conexão na porta IDE. Como nosso disco foi incluído em Secundário Slave e o Primário Slave está o CDROM (vide imagem na parte 1) ele é o terceiro disco do sistema, ou seja, o /dev/sdc.
Iremos a partir de agora particionar e formatar a unidade. Digite o comando fdisk /dev/sdc.

Continue Reading >>

Como diminuir o tamanho de discos virtuais VMDK – parte 1

Onde trabalho temos alguns servidores de bancos de dados PostgreSQL em diversas máquinas virtuais rodando em um servidor VMWare. Até aí tudo bem, não fosse um detalhe que estava me incomodando. Todos eles usando versões antigas como 8.1 e 8.2, enquanto a versão atual é a 9.3.
Procurei saber e descobri que há versão 9.3 para o Centos 6.5 que é o que estamos usando para os novos servidores e resolvi então unificar os três servidores em um só.

Se você que leu até aqui e pensou “Unificar servidores?? Que buro! dá zero pra ele!” saiba que isso foi pensado e para nossa realidade é uma solução adequada.

Dito isso e com o dilema resolvido, parti para criar uma VM usando o Vagrant.

O Vagrant é uma excelente ferramenta de auxilio a nós DevOps. Com o uso dele podemos criar máquinas que podem ser facilmente compartilhadas entre os membros de uma equipe. Não vou entrar em detalhes de seu uso, apenas informar que utilizei uma Box de Centos 6.5 básica.

Até aqui estava tudo indo muito bem. Configurei a VM toda e instalei os softwares que iria utilizar, incluindo o PostgreSQL 9.3.

Quando fui migrar a base de produção é que começaram alguns problemas. O diretório do PGDATA, que é onde o PostgreSQL armazena os dados das tabelas, estava com mais de 40 GB. Fazer um dumpall e um restore on-the-fly não era uma opção e resolvi extrair o banco inteiro para posteriormente restaurar na VM.

Continue Reading >>