DGmike

DGmike

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

Você está aqui: dgmike » Arquivos para simples

  • 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

Campo DataTransacao no retorno do PagSeguro

Posted in Dia-a-dia, pagseguro by DGmike
Apr 03 2009
TrackBack Address.

Algumas vezes algumas pessoas me perguntam sobre o campo DataTransacao quando trabalhamos com boletos? Qual data vem nesse campo? A data em que o boleto foi emitido? A data em que o status foi alterado? Ou a data em que o POST foi enviado para você. (se quiser uma explicação sobre o que é esse tal de POST ou como funciona o PagSeguro, aconselho a ler meu artigo escrito no forum do iMasters)

No PagSeguro, o Boleto você pode gerar boletos para seus clientes de forma segura, mas atente para a data de compensação desse boleto. Nem você nem seu cliente querem erros nessas datas

No PagSeguro, o Boleto você pode gerar boletos para seus clientes de forma segura, mas atente para a data de compensação desse boleto. Nem você nem seu cliente querem erros nessas datas

Claro que isso é uma preocupação muito grande para quem trabalha com créditos que dependem da data em que a pessoa efetuou o pagamento. Cinco dias corridos de acesso a partir do pagamento por exemplo.

Então fui procurar uma resposta em meu log de dados, eis que me deparo com dois casos e verifiquei a seguinte sequencia de pagamentos via boletos (os IDs das tranações foram alterados para segurança dos clientes):

//-
Thu Apr 2 21:04:17 2009

‘StatusTransacao’: ‘Aguardando Pagto’,
‘DataTransacao’: ‘02/04/2009 21:08:58‘,
‘TipoPagamento’: ‘Boleto’,
‘TransacaoID’: ‘XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXA’,

Fri Apr 3 06:27:04 2009

‘StatusTransacao’: ‘Aprovado’,
‘DataTransacao’: ‘02/04/2009 21:08:58‘,
‘TipoPagamento’: ‘Boleto’,
‘TransacaoID’: ‘XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXA’,
-//

//-
Thu Apr 2 11:04:38 2009

‘StatusTransacao’: ‘Aguardando Pagto’,
‘DataTransacao’: ‘02/04/2009 11:09:18‘,
‘TipoPagamento’: ‘Boleto’,
‘TransacaoID’: ‘XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXB’,

Fri Apr 3 06:02:47 2009

‘StatusTransacao’: ‘Aprovado’,
‘DataTransacao’: ‘02/04/2009 11:09:18‘,
‘TipoPagamento’: ‘Boleto’,
‘TransacaoID’: ‘XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXB’,
-//

Como podemos perceber, o campo “DataTransacao” não é alterado e provavelmente se refere à data em que a compra foi efetuada, logo aconselho a alterar a data do seu banco de dados com a data atual do sistema. Em mysql você pode usar NOW() (faz um “SELECT NOW()” para ver o que estou falando).

Abraços, espero que isso retire a dúvida de uma ou duas pessoas =D

1 Comment »
Tagged as: aplicar, banco de dados, boleto, data, dinheiro, e-commerce, loja, loja virtural, mysql, pagamento, pagseguro, php, postgree, retorno, retorno automático, simples

Insert simples de SQL

Posted in php, sql by DGmike
Sep 27 2008
TrackBack Address.

Uma funçãozinha simples que ajuda muito para trabalhar com inserção de dados no SQL (MySQL, MS-SqlServer, SQLite ou PostGree, por exemplo) pelo PHP. O comando SQL para realizar a inserção é:

INSERT INTO `tabela` (`campo1`,`campo2`,`campo3`...) VALUES (`valor1`,`valor2`,`valor3`...);

Desta forma, deixamos os dados separados de forma dificil de manipular… Então desenvolvi esta função em PHP para minha classe SQL.

function adicionar_sql ($tabela,$dados) {
if (is_array($dados)) {
$keys='';
foreach ($dados as $k=>$v) {
$keys[]="`$k`";
$values[]=$v==='NOW()'?"NOW()":$v;
}
$keys=implode(', ',$keys);
$values=implode(', ',$values);
return "INSERT INTO `$tabela` ($keys) VALUES ($values)";
}
return false;
}

Ela funciona da seguinte forma:

adicionar_sql ('tabela', array (
'campo1'=>'valor1',
'campo2'=>'valor2',
'campo3'=>'valor3',...
));

Esta função também está habilitada para o valor NOW() que coloca o valor da hora atual no banco de dados.

[update] Fiz uma leve alteração no código, usando funções que facilitam e deixar a função mais rápida, por se tratar de função interna do próprio PHP. O interessante é que ficou com menos linhas de código e mais compreensível.

function adicionar_sql($tabela, $dados = array()){
  if (!is_array($dados)) return false;
  foreach ($dados as $k=>$v)
    $dados[$k] = $v==='NOW()' ? 'NOW()' : "'".addslashes($v)."'";
  return sprintf ('INSERT INTO %s (`%s`) VALUES (%s);', $tabela, implode('`, `', array_keys ($dados)), implode(', ', $dados));
}

3 Comments »
Tagged as: banco de dados, insert, insert simples, ms-sql, mysql, php, postgree, simples, sql

Classe de tabelas em PHP – Parte 2

Posted in Programação, php, tableless, xHTML by DGmike
Apr 19 2008
TrackBack Address.

Um tempo atrás comecei a fazer um tutorial sobre criar tabelas com o auxilio de uma classe em php[bb] que gera uma tabela semantica[bb] (o que é dificil) e de forma simples. Antes de continuarmos a classe propriamente dita, irei explicar um pouco sobre expressões regulares[bb].

As expressões regulares auxiliam muito na hora de fazer uma busca sobre qualquer coisa em um bloco de texto, como por exemplo os links de um bloco html[bb] ou os emails contidos em uma conversa ou mesmo o ip contido em uma frase. Tudo o que é necessário é saber o padrão necessário do que você procura.

Vamos pegar um exemplo bem básico, um bloco de texto e vamos pegar alguns dados contidos nele.

IP é um acrónimo para a expressão inglesa “Internet Protocol” (ou Protocolo de Internet[bb]), que é um protocolo usado entre duas ou mais máquinas em rede para encaminhamento dos dados.

Os dados numa rede IP são enviados em blocos referidos como pacotes ou datagramas (os termos são basicamente sinónimos no IP, sendo usados para os dados em diferentes locais nas camadas IP). Em particular, no IP nenhuma definição é necessária antes do host tentar enviar pacotes para um host com o qual não comunicou previamente.

Estes são exemplos de IPs: 189.78.131.168 , 189.78.131.168 , 10.27.12.11 , 192.168.0.1 , 127.0.0.1

Retirado da Wikipedia

Percebam que existe um padrão na numeração dos IPs: Quatro sequências de até três números separados por pontos. Nas expressões regulares, podemos fazer buscas por digitos usando a expressão \d que significa digito, então para produrarmos um digito usamos \d. Também podemos definir uma quantidades de vezes que esse caracter pode aparecer, no caso, pode aparecer de uma a três vezes. Logo, nossa busca fica assim: \d{1,3}

O ponto também é uma expressão regular, que indica qualquer coisa. Sim! Qualquer coisa, ele procura por uma letra, número, espaço, pontuação, <CR> (Carriage Return, ou tecla enter), então para “desconvertermos” essa expressão regular, usamos uma barra invertida antes. Logo nossa busca por IP é: \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} ou simplesmente (\d{1,3}\.){3}\d{1,3} que indica uma busca de três sequencias de \d{1,3}\. e uma de \d{1,3}

Expressão Regular em busca de IPs de um texto

Como vocês podem constatar na imagem, a expressão regular funcionou perfeitamente. Eu uso essa extensão do Firefox (Regular Expressions Tester) para de auxiliar no dia-a-dia, já que uso expressões regulares muitas vezes por dia.

Outra coisa interessante em expressões regulares é que podemos definir uma lista de palavras ou expressões que queremos que apareça em nossa sequência. Fazemos isso através de parênteses e “pipes[bb]” (ou barrinha em pé). Eis um exemplo prático, queremos procurar a palavra menino e menina. Basta fazermos a seguinte sentença menin(o|a)

[Nota] A busca anterior também poderia ser dada por menin[oa] uma diferença básica entre parânteses e colchetes é que em parênteses podemos fazer uma busca por outras expressões ou palavras, já que nos colchetes apenas por caracteres específicos. Logo, cas(a|inha|arão) irá procurar pelas três palavras, o que não é possivel fazer com os colchetes.

Vamos pensar em entradas de usuário, ou seja, frases ou listas simples (lembre-se que o nosso objetivo é a classe de criação de tabelas, logo as entradas são pequenas). Então, queremos procurar uma determinada expressão no inicio da entrada do usuário[bb]. Algo como dois pontos e uma palavra e depois dois pontos.

Explico: Digamos que queremos que o usuário entre com os seguintes dados, sequencialmente:

  • Nome
  • Sobrenome
  • :centro: Idade
  • :tel: Telefone
  • :tel: Celular
  • CPF
  • Filiação (Pai)
  • Filiação (Mãe)

Perceba que o usuário quer colocar um atributo na entrada que alinhe ou ajuste as celulas para uma determinada classe. Podemos resolver este problema usando a mágica do circunflexo (^). Quando colocado no inicio da expressão regular, ele indica o inicio da entrada. Então, nossa expressão regular irá iniciar com ^:

Assim como os digitos (\d) também existe o \w que indica um caractere alfa numérico, ou seja letras de A a Z (maiusculas e minusculas) e números de zero a nove. E também podemos definir que deve existir um ou mais desta expressão regular na oração. (Lembram do {n,m} onde n e m são os numeros limites de caracteres?) Com o mais, podemos definir que deve existir um ou mais elementos da expressão regular anterior. Assim, nossa expressão regular fica assim: ^:\w+: Com isto, pegamos o que queremos, se não existir, ele não pegará nada.

Bom, a nossa expressão regular está quase no fim. Como você é esperto, vou deixar a expressao regular final e deixarei que você pense como ela foi criada com base no que foi dito anteriormente:

^(:((\.|#)\w+|(r|c)\d+))+:

Com esta expressão regular, podemos esperar que o usuário entre com as seguintes condições e mais suas subcondições possiveis:

  • :.classe:
  • :#id:
  • :c12:
  • :r1:
  • :.classe:#id:
  • :.classe:r12:
  • :#id:c21:
  • :.qualquerClasse:#qualquerId:c21:r18

Tendo isto em mente, podemos tratar a entrada do usuário, permitindo saber que classe e/ou id ele vai querer colocar na determinada célula, e qual o numero de colspan e rowspan ele vai querer. Onde colspan é junção de colunas e rowspan é junção de linhas, como você pode ver aqui, aqui e aqui.

Digo e repito, estude expressões regulares, vale a pena! Como você pode ver para fazermos um monte de validações em nossa entrada usamos apenas 26 caracteres. Faremos o tratamento dos mesmos na próxima edição, mas adianto que usaremos as funções preg_match e preg_replace.

No Comments yet »
Tagged as: acrónimo, bloco de texto, busca, célula, classe, colspan, digito, entrada, expressões regulares, html, id, Internet Protocol, ip, links, padrão, php, Protocolo de Internet, rede, Regular Expressions, rowspan, Semântica, simples, tabelas, Tutorial, usuário, wikipedia

Simplificando strings em PHP

Posted in Programação, php by DGmike
Sep 21 2007
TrackBack Address.

Sabe quando você quer inscrever um dado no banco de dados, mas pescisa que os caracteres latinos ou de outras linguas sejam alterados para sua simplificação, algo como “é” mudar para “e” ou “año” (espanol) para “ano”.

Simples, use strtr ou preg_replace. O mesmo ocorre se quisermos alterar os espaços para underline ou simplesmente removê-los da nossa string. Pois é, fui fazer uma pesquisa por “retirar acentos” e “remover cedilha” e encontrei algumas dicas, partindo delas desenvolvi uma função que faça estes trabalhos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function simplificaString ($string='',$spaces=false, $alter=0) {
  $return = strtr ($string,
    "ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ",
    "SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy"
  );
  if ($spaces !== false) {
    $return = str_replace (' ', ($spaces===true?'':$spaces) , $return);
  }
  switch ($alter) {
    case 1:  $return = strtoupper($return);
    case -1: $return = strtolower($return);
  }
  return $return;
}

A função recebe dois parâmetros:

$string – a string que você quer simplificar
$spaces – troca os espaços por um caractere que você desejar ou mesmo retirar os espaços, se este parametro for passado como false os espaços não serão removidos.

Usando a função

Da melhor forma, uma função pequena que faz grandes coisas. Para fazer mais desastres, basta implementá-la com outra função que receba uma string.

1
2
3
4
5
6
7
8
9
10
$string="Aqui está começando a chover";
 
simplificaString ($string); // Retorno: Aqui esta comecando a chover
simplificaString ($string,"_"); // Retorno: Aqui_esta_comecando_a_chover
simplificaString ($string,"-"); // Retorno: Aqui-esta-comecando-a-chover
simplificaString ($string,""); // Retorno: Aquiestacomecandoachover
strtolower (simplificaString ($string,"_")); // Retorno: aqui_esta_comecando_a_chover
 
simplificaString ($string,"-", 1); // Retorno: AQUI-ESTA-COMECANDO-A-CHOVER
simplificaString ($string,"-", -1); // Retorno: aqui-esta-comecando-a-chover

[update] Acertei as chamadas nos exemplos. Valeu Zamana :D

[update] O WordPress está de sacanagem comigo, quando vou fazer um “update” ou editar os posts com comentários eles vem com caracteres especiais muito bizarros, então só hoje consegui arrumar o código, pois ele foi escrito em minha empresa, e como todos sabem, começamos a trabalhar hoje (segunda-feira) :)

[update] A função ganhou mais um parâmetro, agora você pode em uma única função deixar a string em maiúsculas ou minúsculas.

8 Comments »
Tagged as: acento, acentos, acentuação, ascii, c cedilha, caracteres, caracteres especiais, caracteres latinos, cê cedilha, cedilha, html, latin, latino, maiusculas, minúsculas, php, remover, remover acentos, retira acento, retirar acentos, simples, simplificar, string, url, utf-8

Categorias

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

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 opera pagseguro palestra php plugin Programação python retorno automático simples site solução sql tableless Tecnologia Trabalho Tutorial twitter visie web wordpress

Arquivo

SlideSare

Últimos Posts

  • PagSeguro – Gravando log com ASP
  • Vá com calma
  • Vírgula em html5 e css3
  • Youtube e HTML5, agora ficou mais fácil
  • Novo emprego!

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 opera pagseguro palestra php plugin Programação python retorno automático simples site solução sql tableless Tecnologia Trabalho 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