DGmike

DGmike

Calma! não entre em pânico! Amanhã (talvez) tem novo post…

  • Alice Andrade
  • Rafael Zamana
Você está aqui: dgmike » Arquivos para solução

  • Home
  • Guia Rápido jQuery
  • Códigos prontos
    • PHP: Função __auloload()
    • Classe sqlsimples e sql – PHP
    • Bancos, bancos e mais bancos…
  • PagSeguro
  • Artigos
    • JavaScript (parte 1)
  • Quem é dgmike?

Api de teste do meadiciona.com

Posted in Programação, php by DGmike
Jun 01 2010
TrackBack Address.

Desde que o Ederson @peka me apresentou o meadiciona.com adotei como ferramenta de gerenciamento de contas e sempre passei, nos meus e-mails e contatos, o meu perfil do programa. Mas como desenvolvedor, sempre achei que deveria existir uma maneira de conseguir resgatar esses dados de forma fácil.

meadiciona.com o seu cartão de visitas online

O meAdiciona.com é uma ferramenta desenvolvida com o intuito de facilitar sua vida. Tudo que você precisa dizer é meadiciona.com/voce.

Não aguentando mais esperar por uma API definitiva, resolvi escrever uma própria parseando o código html[bb] do meu perfil e verificando o perfil de alguns amigos, que poderiam ter menos ou mais informações diversas. Descobri também que os contatos como e-mail e texto puro são trabalhados de forma diferente no html gerado no site, sendo que o e-mail simplesmente não é gerado. Ele é passado por um protocolo de segurança não fácil de interpretar (a partir de AJAX[bb]) para que robôs (como o meu) não peguem facilmente. Decidi deixar de lado em prol da segurança do meadiciona. Então esta API não foi projetada para pegar os e-mails, ok?! :D

Para usar, basta requisitar a URL http://util.dgmike.com.br/meadiciona/[perfil].json. Hoje estou liberando apenas JSON e não pretendo liberar outra forma por enquanto, já que esta me serve com bastante tranquilidade. Veja como é fácil pegar essa informação via PHP[bb].

1
2
3
4
5
6
7
8
9
10
11
12
13
$saida = file_get_contents('http://util.dgmike.com.br/meadiciona/dgmike.json');
$perfil = json_decode($saida);
if ($perfil->r) {
    echo '<h3>'.$perfil->data->nome.'</h3>';
    echo '<p>'.$perfil->data->desc.'</p>';
    foreach ($perfil->data->servicos as $servico) {
      if (!$servico->url) continue;
      echo "<a href='{$servico->url}' style='float:left; width: 190px; height:35;text-align:center'>";
      echo "<img src='{$servico->img}' title='{$servico->title}' height='32' />";
      echo "</a>";
    }
    echo '<br style="clear:both;" /><small>Powered by <a href="http://meadiciona.com/dgmike">meadiciona.com</a></small>';
}

O código de como usar a API do meadiciona.com não oficial está disponível no gist do github, caso você queira passá-lo adiante. O resultado está logo abaixo, com o meu perfil, é claro!

Michael Granados (dgmike)

Falar de mim é como falar de você, só que um pouco diferente…


Powered by meadiciona.com

3 Comments »
Tagged as: api, biblioteca, código, dica, meadiciona, php, Programação, simples, solução, Tutorial

Mostrar a área de trabalho no Windows

Posted in Dia-a-dia, Windows by DGmike
Sep 10 2008
TrackBack Address.

Sabe aquele botãozinho lindo que mostra a área de trabalho no Windows98? Pois é eu uso ele muitas vezes mas quando migrei para o XP notei que ele não existia (ou de repende eu apaguei sem perceber). Então pensei… “como fazer agora?”

Tive duas soluções na mão, apertar a tecla do Windows e a tecla “D” ao mesmo tempo pelo resto de minha vida ou descobrir como esse ícone era feito.

Mostrar a área de trabalho é uma tarefa simples

Você ainda pode escolher o ícone que desejar

Daria para viver apertando as teclas de atalho, mas como eu gosto de procurar a solução real dos problemas fui até o Windows98 e explorei este ícone. Ele é um arquivo com a extensão .scf então se você quiser, faça o seguinte: abra o bloco de notas e coloque este texto nele:

[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop

E salve com o nome: Mostrar área de trabalho.scf
Voilà, está pronto o seu arquivo, basta arrastálo para sua barra de atalhos rápidos.

1 Comment »
Tagged as: área de trabalho, atalho, como fazer, howto, problema, resolver, solução, Windows, windows 98, windows xp

strtoupper melhorado

Posted in Programação, php by DGmike
May 19 2008
TrackBack Address.

Há uma função em PHP que coloca uma string com todas as letras maiusculas. Hmmm… todas não, ela não consegue colocar os caracteres latinos (caracteres com acentos ou cedilha) em maiúsculas. Então resolvi escrever minha própria solução:

function upper ($str) {
  $LATIN_UC_CHARS = "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝ";
  $LATIN_LC_CHARS = "àáâãäåæçèéêëìíîïðñòóôõöøùúûüý";
  $str = strtr ($str, $LATIN_LC_CHARS, $LATIN_UC_CHARS);
  $str = strtoupper($str);
  return $str;
}

Para isso, usei o a função strtr que me permite “traduzir” os caracteres, trocando-os pelos seus respectivos. Ou seja, troca o primeiro caracter do primeiro parametro pelo primeiro caractero do segundo parâmetro; troca o segundo do primeiro com o segundo do segundo; terceiro do primeiro com o terceiro do segundo; quarto do primeiro com quarto do segundo e assim por diante.

Deixo aí para vocês fazerem a versão inversa, ou seja, colocar em minúsculas.

12 Comments »
Tagged as: acentos, caracteres latinos, cedilha, função, letras, maiúscula, maiusculas, minúscula, php, solução, string, strtr

Validando datas em JavaScript

Posted in Programação, javascript by DGmike
Jan 18 2008
TrackBack Address.

Se você é como eu e gosta de ficar testando as validações até achar uma solução sem falhas, este post é para você! Há alguns dias eu escrevi como validar datas em JavaScript, sendo minha primeira versão conveniente e atraente. Mas no mesmo dia, vi que ela tinha um erro: tente entrar com o dia 30 de fevereiro. Sim, ele aceita, afinal o texto passa pela expressão regular. Se você analisar, não está sendo avaliada a data em si, mas o texto (string) conforme a formatação da data.

Logo, resolvi o problema (naquele mesmo dia, mas deixei para publicar depois) usando o objeto Date. O interessante é que quando criamos um objeto Date com uma data estranha como 32 (31+1) de Dezembro de 2008, e usamos os seus métodos (getYear() por exemplo), retornará a data corrigida, ou seja 1 de janeiro de 2009 em nosso exemplo.

Pensando nisso, resolvi reescrever a data que passou pelo teste e compará-la com a data reescrita corrigida pelo objeto, desta forma avaliamos a data em si e não só a string.

Este é o código novo, para ser usado após o código anterior.

// Ok, ok... passou pelo primeiro teste, vamos ver o teste forte...

if (dataAtual != '') {
  // Dividimos a data novamente...
  // assim podemos pegar cada elemento sem dor de cabeça
  x = dataAtual.split (divisor)
  // Criando um objeto data para validação
  confere = new Date (x[2],x[1]-1,x[0])
  // Reescrevendo a data em confere2 a partir da data passada
  confere2 = (confere.getDate () < 10 ? '0' : '') + confere.getDate ()
  confere2 += divisor + ((confere.getMonth()+1) < 10 ? '0' : '') + (confere.getMonth()+1)
  confere2 += divisor + confere.getFullYear()
  // Conferindo... O interessante é que,
  // usando um objeto Date, o dia 31/11 é
  // reescrito para 01/12, invalidando a data
  if (confere2 != dataAtual) dataAtual = ''
}

E este é o código final, sem comentários:

function validaData (e) {
  var divisor = '/'
  var data = e.value
  var dataAtual = ''

  if (data.match (/^(0[1-9]|[12][0-9]|3[01]).?(0[1-9]|1[012]).?([12][0-9]{3}|[0-9]{2})$/)) {
    data = data.replace (/[^0-9]/g, '')
    dataAtual = data.substr(0,2)+divisor+data.substr(2,2)+divisor
    if ( data.substr (4).length == 4 ) dataAtual += data.substr (4)
    else dataAtual += (data.substr (4) > 30 ? '19' : '20') + data.substr (4)
  }
  if (dataAtual != '') {
    x = dataAtual.split (divisor)
    confere = new Date (x[2],x[1]-1,x[0])
    confere2 = (confere.getDate () < 10 ? '0' : '') + confere.getDate ()
    confere2 += divisor + ((confere.getMonth()+1) < 10 ? '0' : '') + (confere.getMonth()+1)
    confere2 += divisor + confere.getFullYear()
    if (confere2 != dataAtual) dataAtual = ''
  }
  e.value = dataAtual
}

O resultado funcionando está disponível para estudos no meu outro servidor, já que o wordpress não me permite mexer nos arquivos ou inserir JavaScript. (risos)

No Comments yet »
Tagged as: corrigida, data, Date Object, estudos, expressão regular, formatação, formatação da data, getDate, getFullYear, getMonth, getYear, javascript, new Date, objeto Date, problema, resultado funcionando, sem falhas, servidor, solução, string, validações, validar, validar datas, wordpress

Validando datas em JavaScript

Posted in Programação, javascript by DGmike
Jan 10 2008
TrackBack Address.

Esta semana precisei fazer uma validação de datas em JavaScript e em PHP. Como o título acima prevê, vou disponibilizar a minha solução em JavaScript.

O problema: Cada usuário decide colocar uma data de cada forma, com traços (-) entre as divisões entre dia-mes-ano ou com pontos (.) ou mesmo com barras (o padrão), alguns até mesmo não colocam divisores. Usuários não sabem se devem colocar dois ou quatro caracteres para o ano, na escola se aprendeu que poderia se colocar apenas dois digitos para anos, o que a preguiça/sedentarismo auxilia nesta caminhada.

A solução Sabemos que serão dispostos números: dois pares de digitos e 4 digitos ou três pares de digitos. Na segunda opção podemos delimitar que acima de 30, o sujeito queria se especificar a 1930 para cima e abaixo deste numero entramos na casa dos 2000, ou seja, 2030. Expressões regulares auxiliam bastante nisto.

Uma expressão regular ninja do Aurélio Jargas inspirou meu pensamento, ficando a minha versão final assim:

/^(0[1-9]|[12][0-9]|3[01]).?(0[1-9]|1[012]).?([12][0-9]{3}|[0-9]{2})$/

Com isto, verificamos se a nossa data foi escrita corretamente. Após isto, reescrevemos a data conforme desejamos.

function validaData (e) {
  // Definimos o divisor de nossa nova data
  var divisor = '/'
  // Recebemos a data digitada pelo usuario
  var data = e.value
  // Setamos a nova data para vazia
  var dataAtual = ''
  // Verificamos se o camarada digitou uma data válida
  if (data.match (/^(0[1-9]|[12][0-9]|3[01]).?(0[1-9]|1[012]).?([12][0-9]{3}|[0-9]{2})$/)) {
    // Precisamos trabalhar apenas com numeros
    data = data.replace (/[^0-9]/g, '')
    // adicionamos os dois primeiros pares
    dataAtual = data.substr(0,2)+divisor+data.substr(2,2)+divisor
    // Agora, os quatro ultimos
    // Se o usuário entrar com quatro caracteres, então ele entrou com uma data inteira
    if ( data.substr (4).length == 4 ) dataAtual += data.substr (4)
    // Senão, verificamos se os dois caracteres finais baseiam-se em 30 (lembrem-se do que disse no post)
    else dataAtual += (data.substr (4) > 30 ? '19' : '20') + data.substr (4)
  }
  // Por ultimo, reescrevemos o campo
  e.value = dataAtual
}

Versão sem comentários

function validaData (e) {
  var divisor = '/'
  var data = e.value
  var dataAtual = ''
  if (data.match (/^(0[1-9]|[12][0-9]|3[01]).?(0[1-9]|1[012]).?([12][0-9]{3}|[0-9]{2})$/)) {
    data = data.replace (/[^0-9]/g, '')
    dataAtual = data.substr(0,2)+divisor+data.substr(2,2)+divisor
    if ( data.substr (4).length == 4 ) dataAtual += data.substr (4)
    else dataAtual += (data.substr (4) > 30 ? '19' : '20') + data.substr (4)
  }
  e.value = dataAtual
}

Esta função pode muito bem ser usada no blur do campo.

<input type="text" onblur="validaData (this)"  />

Veja o resultado na prática.

No próximo post, mando a complementação desta função e a versão para PHP. Por enquanto estude a expressão regular, que é a chave da validação.

No Comments yet »
Tagged as: aprendeu, data, dia-mes-ano, digitos, expressão regular, forma, javascript, ninja, números, poderia, solução, validação, validação de datas

Categorias

  • Amigos  (16)
  • cases  (4)
  • Cotidiano  (73)
  • CSS  (20)
  • Design  (2)
  • Dia-a-dia  (33)
  • Diversão  (18)
  • eventos  (10)
  • extensions  (11)
  • flash  (4)
  • Games  (1)
  • html  (7)
  • icephp  (4)
  • Ilustração  (6)
  • Imagem  (8)
  • Inspiração  (5)
  • javascript  (36)
    • jQuery  (7)
    • yui  (2)
  • Não categorizado  (26)
  • Navegadores  (19)
    • Chrome  (6)
    • Firefox  (18)
    • Internet Explorer  (6)
  • pagseguro  (12)
  • php  (43)
    • PHP Conference  (3)
  • plugin  (3)
  • Programação  (46)
  • python  (5)
  • Semântica  (16)
  • sql  (9)
  • tableless  (18)
  • Tecnologia  (48)
  • Trabalho  (28)
  • Tutorial  (25)
  • Vetorial  (5)
  • video  (8)
  • video-tutorial  (5)
  • Windows  (4)
  • wordpress  (2)
  • xHTML  (23)

Tags

ajax artigo banco de dados biblioteca blog browser classe CSS data Design Dia-a-dia dinheiro evento eventos Firefox framework google html icephp internet Internet Explorer javascript jQuery loja mysql online opera pagseguro palestra php plugin Programação python retorno automático simples site solução sql tableless Tecnologia Tutorial twitter visie web wordpress

Arquivo

SlideSare

Últimos Posts

  • Vírgula em html5 e css3
  • Youtube e HTML5, agora ficou mais fácil
  • Novo emprego!
  • Até mais e obrigado pela salada
  • Api de teste do meadiciona.com

Tags

ajax artigo banco de dados biblioteca blog browser classe CSS data Design Dia-a-dia dinheiro evento eventos Firefox framework google html icephp internet Internet Explorer javascript jQuery loja mysql online opera pagseguro palestra php plugin Programação python retorno automático simples site solução sql tableless Tecnologia Tutorial twitter visie web wordpress

Conteúdo

  • Artigos
    • JavaScript (parte 1)
  • Códigos prontos
    • Bancos, bancos e mais bancos…
    • Classe sqlsimples e sql – PHP
    • PHP: Função __auloload()
  • Guia Rápido jQuery
  • PagSeguro
  • Quem é dgmike?
PagSeguro Powered by WordPress | “Blend” from Spectacu.la WP Themes Club